diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 3e2742de11..46e509cb8f 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -125,6 +125,9 @@ var/path_type = /obj/item/baseball_bat var/path_type = "/obj/item/baseball_bat" ``` +### Use var/name format when declaring variables +While DM allows other ways of declaring variables, this one should be used for consistency. + ### Tabs, not spaces You must use tabs to indent your code, NOT SPACES. diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index f1e726c515..3b1daafc62 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,3 +1,3 @@ -[Note]: # (Please enter the `Round ID` from the `Status` panel if you can! If you believe the issue to be caused by a testmerge, please report it in its relative PR thread. State what the issue is from a "whats wrong" prospective. Issue reports should clearly allow maintainers to understand whats wrong and how to test/reproduce if that is not obvious. Avoid ambiguity. Start your issue report below both of these lines (or remove them)) +[Directions]: # (Include the Round ID from the Status panel or retrieve it from https://atlantaned.space/newSS13tools/round.php ! If you believe the issue to be caused by a testmerge [OOC tab -> Show Server Revision], report it in the pull request's comment section instead. Explain your issue in detail, including the steps to reproduce it.) -[Admins]: # (If you are reporting a bug that occured AFTER you used varedit/admin buttons to alter an object out of normal operating conditions, please verify that you can re-create the bug without the varedit usage/admin buttons before reporting the issue.) +[For Admins]: # (Oddities induced by var-edits and other admin tools are not necessarily bugs. Verify that your issues occur under regular circumstances before reporting them.) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index f67f095a4f..1332358e04 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,5 +1,4 @@ -[Changelogs]: # (Please make a changelog if you're adding, removing or changing content that'll affect players. This includes, but is not limited to, new features, sprites, sounds; balance changes; map edits and important fixes) -[]: # (See here for how to easily make a changelog: https://github.com/tgstation/tgstation/wiki/Changelogs. An example changelog has been provided below. Please edit or remove) +[Changelogs]: # (Please make a changelog if you're adding, removing or changing content that'll affect players. This includes, but is not limited to, new features, sprites, sounds; balance changes; map edits and important fixes. An example changelog has been provided below for you to edit or remove. If you need help, read https://github.com/tgstation/tgstation/wiki/Changelogs) :cl: optional name here @@ -18,4 +17,4 @@ spellcheck: fixed a few typos experiment: added an experimental thingy /:cl: -[why]: # (Please add a short description [on the next line] of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding:) +[why]: # (Please add a short description [two lines down] of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding.) diff --git a/.travis.yml b/.travis.yml index ba11b40c97..b353761b2d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,5 @@ language: generic sudo: false -dist: precise - env: global: - BYOND_MAJOR="511" @@ -23,12 +21,15 @@ cache: addons: apt: + sources: + - sourceline: 'ppa:ondrej/php' packages: - libc6-i386 - libgcc1:i386 - libstdc++6:i386 - python - python-pip + - php5.6 install: - tools/travis/install_build_tools.sh diff --git a/README.md b/README.md index d33438f606..0ce4d8a094 100644 --- a/README.md +++ b/README.md @@ -1,147 +1,154 @@ - -##Citadel Station 13
-Based and maintained from /tg/station.
- -[![Build Status](https://api.travis-ci.org/Citadel-Station-13/Citadel-Station-13.png)](https://travis-ci.org/Citadel-Station-13/Citadel-Station-13) [![Krihelimeter](http://www.krihelinator.xyz/badge/Citadel-Station-13/Citadel-Station-13)](http://www.krihelinator.xyz) - -[![Percentage of issues still open](http://isitmaintained.com/badge/open/Citadel-Station-13/Citadel-Station-13.svg)](http://isitmaintained.com/project/Citadel-Station-13/Citadel-Station-13 "Percentage of issues still open") [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/Citadel-Station-13/Citadel-Station-13.svg)](http://isitmaintained.com/project/Citadel-Station-13/Citadel-Station-13 "Average time to resolve an issue") - -**Upstream Information**
-**Website:** http://www.tgstation13.org
-**Code:** https://github.com/tgstation/tgstation
-**Wiki** http://tgstation13.org/wiki/Main_Page
-**IRC:** irc://irc.rizon.net/coderbus or if you dont have an IRC client, you can click [here](https://kiwiirc.com/client/irc.rizon.net:6667/?&theme=cli#coderbus).
- -**Citadel Station Information**
-**Forums:** http://citadel-station.net/forum/
-**Ban Appeals:** http://citadel-station.net/forum/forumdisplay.php?fid=8
-**Code:** https://github.com/Citadel-Station-13/Citadel-Station-13
-**Discord:** [Here](https://discord.gg/3gJ9pnM).
- -## DOWNLOADING - -There are a number of ways to download the source code. Some are described here, an alternative all-inclusive guide is also located at http://www.tgstation13.org/wiki/Downloading_the_source_code - -Option 1: -Follow this: http://www.tgstation13.org/wiki/Setting_up_git - + +##Citadel Station 13
+Based and maintained from /tg/station.
+ +[![Build Status](https://api.travis-ci.org/Citadel-Station-13/Citadel-Station-13.png)](https://travis-ci.org/Citadel-Station-13/Citadel-Station-13) [![Krihelimeter](http://www.krihelinator.xyz/badge/Citadel-Station-13/Citadel-Station-13)](http://www.krihelinator.xyz) + +[![Percentage of issues still open](http://isitmaintained.com/badge/open/Citadel-Station-13/Citadel-Station-13.svg)](http://isitmaintained.com/project/Citadel-Station-13/Citadel-Station-13 "Percentage of issues still open") [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/Citadel-Station-13/Citadel-Station-13.svg)](http://isitmaintained.com/project/Citadel-Station-13/Citadel-Station-13 "Average time to resolve an issue") + +**Upstream Information**
+**Website:** http://www.tgstation13.org
+**Code:** https://github.com/tgstation/tgstation
+**Wiki** http://tgstation13.org/wiki/Main_Page
+**IRC:** irc://irc.rizon.net/coderbus or if you dont have an IRC client, you can click [here](https://kiwiirc.com/client/irc.rizon.net:6667/?&theme=cli#coderbus).
+ +**Citadel Station Information**
+**Forums:** http://citadel-station.net/forum/
+**Ban Appeals:** http://citadel-station.net/forum/forumdisplay.php?fid=8
+**Code:** https://github.com/Citadel-Station-13/Citadel-Station-13
+**Discord:** [Here](https://discord.gg/3gJ9pnM).
+ +## DOWNLOADING + +There are a number of ways to download the source code. Some are described here, an alternative all-inclusive guide is also located at http://www.tgstation13.org/wiki/Downloading_the_source_code + +Option 1: +Follow this: http://www.tgstation13.org/wiki/Setting_up_git + Option 2: Download the source code as a zip by clicking the ZIP button in the -code tab of https://github.com/tgstation/tgstation -(note: this will use a lot of bandwidth if you wish to update and is a lot of -hassle if you want to make any changes at all, so it's not recommended.) - -## INSTALLATION - -First-time installation should be fairly straightforward. First, you'll need -BYOND installed. You can get it from http://www.byond.com/. Once you've done -that, extract the game files to wherever you want to keep them. This is a -sourcecode-only release, so the next step is to compile the server files. -Open tgstation.dme by double-clicking it, open the Build menu, and click -compile. This'll take a little while, and if everything's done right you'll get -a message like this: - -``` -saving tgstation.dmb (DEBUG mode) -tgstation.dmb - 0 errors, 0 warnings -``` - -If you see any errors or warnings, something has gone wrong - possibly a corrupt -download or the files extracted wrong. If problems persist, ask for assistance -in irc://irc.rizon.net/coderbus - -Once that's done, open up the config folder. You'll want to edit config.txt to -set the probabilities for different gamemodes in Secret and to set your server -location so that all your players don't get disconnected at the end of each -round. It's recommended you don't turn on the gamemodes with probability 0, -except Extended, as they have various issues and aren't currently being tested, -so they may have unknown and bizarre bugs. Extended is essentially no mode, and -isn't in the Secret rotation by default as it's just not very fun. - -You'll also want to edit config/admins.txt to remove the default admins and add -your own. "Game Master" is the highest level of access, and probably the one -you'll want to use for now. You can set up your own ranks and find out more in -config/admin_ranks.txt - -The format is - -``` -byondkey = Rank -((i.e. spessmans = Host )) -``` - -where the admin rank must be properly capitalised. - -Finally, to start the server, run Dream Daemon and enter the path to your -compiled tgstation.dmb file. Make sure to set the port to the one you -specified in the config.txt, and set the Security box to 'Safe'. Then press GO -and the server should start up and be ready to join. It is also recommended that -you set up the SQL backend (see below). - -## UPDATING - -To update an existing installation, first back up your /config and /data folders -as these store your server configuration, player preferences and banlist. - -Then, extract the new files (preferably into a clean directory, but updating in -place should work fine), copy your /config and /data folders back into the new -install, overwriting when prompted except if we've specified otherwise, and -recompile the game. Once you start the server up again, you should be running -the new version. - -## MAPS - -Citadel Station maintains their own map, but frequently uses /tg/station's currently maintained maps as well. - -* [tgstation2 (default)](http://tgstation13.org/wiki/Boxstation) -* [MetaStation](https://tgstation13.org/wiki/MetaStation) -* [DeltaStation](https://tgstation13.org/wiki/DeltaStation) -* [OmegaStation](https://tgstation13.org/wiki/OmegaStation) -* [PubbyStation](https://tgstation13.org/wiki/PubbyStation) - - -All maps have their own code file that is in the base of the _maps directory. Maps are loaded dynamically when the game starts. Follow this guideline when adding your own map, to your fork, for easy compatibility. - -The map that will be loaded for the upcoming round is determined by reading data/next_map.json, which is a copy of the json files found in the _maps tree. If this file does not exist, the default map from config/maps.txt will be loaded. Failing that, tgstation2 will be loaded. If you want to set a specific map to load next round you can use the Change Map verb in game before restarting the server or copy a json from _maps to data/next_map.json before starting the server. Also, for debugging purposes, ticking a corresponding map's code file in Dream Maker will force that map to load every round. - -If you are hosting a server, and want randomly picked maps to be played each round, you can enable map rotation in [config.txt](config/config.txt) and then set the maps to be picked in the [maps.txt](config/maps.txt) file. - -Anytime you want to make changes to a map it's imperative you use the [Map Merging tools](http://tgstation13.org/wiki/Map_Merger) - -## AWAY MISSIONS - -/tg/station supports loading away missions however they are disabled by default. - -Map files for away missions are located in the _maps/RandomZLevels directory. Each away mission includes it's own code definitions located in /code/modules/awaymissions/mission_code. These files must be included and compiled with the server beforehand otherwise the server will crash upon trying to load away missions that lack their code. - -To enable an away mission open `config/awaymissionconfig.txt` and uncomment one of the .dmm lines by removing the #. If more than one away mission is uncommented then the away mission loader will randomly select one the enabled ones to load. - -## SQL SETUP - -The SQL backend requires a MySQL server. SQL is required for the library, stats tracking, admin notes, and job-only bans, among other features, mostly related to server administration. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/tgstation_schema.sql and /SQL/tgstation_schema_prefix.sql depending on if you want table prefixes. More detailed setup instructions are located here: http://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database - -## IRC BOT SETUP - -Included in the repository is a python3 compatible IRC bot capable of relaying adminhelps to a specified -IRC channel/server, see the /bot folder for more - -## CONTRIBUTING - -Please see [CONTRIBUTING.md](.github/CONTRIBUTING.md) - -## LICENSE - -All code after [commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST](https://github.com/tgstation/tgstation/commit/333c566b88108de218d882840e61928a9b759d8f) is licensed under [GNU AGPL v3](http://www.gnu.org/licenses/agpl-3.0.html). - -All code before [commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST](https://github.com/tgstation/tgstation/commit/333c566b88108de218d882840e61928a9b759d8f) is licensed under [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0.html). -(Including tools unless their readme specifies otherwise.) - -See LICENSE-AGPLv3.txt and LICENSE-GPLv3.txt for more details. - -tgui clientside is licensed as a subproject under the MIT license. -Font Awesome font files, used by tgui, are licensed under the SIL Open Font License v1.1 -tgui assets are licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). - -See tgui/LICENSE.md for the MIT license. -See tgui/assets/fonts/SIL-OFL-1.1-LICENSE.md for the SIL Open Font License. - -All assets including icons and sound are under a [Creative Commons 3.0 BY-SA license](http://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated. +code tab of https://github.com/tgstation/tgstation +(note: this will use a lot of bandwidth if you wish to update and is a lot of +hassle if you want to make any changes at all, so it's not recommended.) + +## INSTALLATION + +First-time installation should be fairly straightforward. First, you'll need +BYOND installed. You can get it from http://www.byond.com/. Once you've done +that, extract the game files to wherever you want to keep them. This is a +sourcecode-only release, so the next step is to compile the server files. +Open tgstation.dme by double-clicking it, open the Build menu, and click +compile. This'll take a little while, and if everything's done right you'll get +a message like this: + +``` +saving tgstation.dmb (DEBUG mode) +tgstation.dmb - 0 errors, 0 warnings +``` + +If you see any errors or warnings, something has gone wrong - possibly a corrupt +download or the files extracted wrong. If problems persist, ask for assistance +in irc://irc.rizon.net/coderbus + +Once that's done, open up the config folder. You'll want to edit config.txt to +set the probabilities for different gamemodes in Secret and to set your server +location so that all your players don't get disconnected at the end of each +round. It's recommended you don't turn on the gamemodes with probability 0, +except Extended, as they have various issues and aren't currently being tested, +so they may have unknown and bizarre bugs. Extended is essentially no mode, and +isn't in the Secret rotation by default as it's just not very fun. + +You'll also want to edit config/admins.txt to remove the default admins and add +your own. "Game Master" is the highest level of access, and probably the one +you'll want to use for now. You can set up your own ranks and find out more in +config/admin_ranks.txt + +The format is + +``` +byondkey = Rank +``` + +where the admin rank must be properly capitalised. + +Finally, to start the server, run Dream Daemon and enter the path to your +compiled tgstation.dmb file. Make sure to set the port to the one you +specified in the config.txt, and set the Security box to 'Safe'. Then press GO +and the server should start up and be ready to join. It is also recommended that +you set up the SQL backend (see below). + +## UPDATING + +To update an existing installation, first back up your /config and /data folders +as these store your server configuration, player preferences and banlist. + +Then, extract the new files (preferably into a clean directory, but updating in +place should work fine), copy your /config and /data folders back into the new +install, overwriting when prompted except if we've specified otherwise, and +recompile the game. Once you start the server up again, you should be running +the new version. + +## HOSTING + +If you'd like a more robust server hosting option for tgstation and its +derivatives. Check out our server tools suite at +https://github.com/tgstation/tgstation-server + +## MAPS + +/tg/station currently comes equipped with five maps. + +* [BoxStation (default)](http://tgstation13.org/wiki/Boxstation) +* [MetaStation](https://tgstation13.org/wiki/MetaStation) +* [DeltaStation](https://tgstation13.org/wiki/DeltaStation) +* [OmegaStation](https://tgstation13.org/wiki/OmegaStation) +* [PubbyStation](https://tgstation13.org/wiki/PubbyStation) + + +All maps have their own code file that is in the base of the _maps directory. Maps are loaded dynamically when the game starts. Follow this guideline when adding your own map, to your fork, for easy compatibility. + +The map that will be loaded for the upcoming round is determined by reading data/next_map.json, which is a copy of the json files found in the _maps tree. If this file does not exist, the default map from config/maps.txt will be loaded. Failing that, tgstation2 will be loaded. If you want to set a specific map to load next round you can use the Change Map verb in game before restarting the server or copy a json from _maps to data/next_map.json before starting the server. Also, for debugging purposes, ticking a corresponding map's code file in Dream Maker will force that map to load every round. + +If you are hosting a server, and want randomly picked maps to be played each round, you can enable map rotation in [config.txt](config/config.txt) and then set the maps to be picked in the [maps.txt](config/maps.txt) file. + +Anytime you want to make changes to a map it's imperative you use the [Map Merging tools](http://tgstation13.org/wiki/Map_Merger) + +## AWAY MISSIONS + +/tg/station supports loading away missions however they are disabled by default. + +Map files for away missions are located in the _maps/RandomZLevels directory. Each away mission includes it's own code definitions located in /code/modules/awaymissions/mission_code. These files must be included and compiled with the server beforehand otherwise the server will crash upon trying to load away missions that lack their code. + +To enable an away mission open `config/awaymissionconfig.txt` and uncomment one of the .dmm lines by removing the #. If more than one away mission is uncommented then the away mission loader will randomly select one the enabled ones to load. + +## SQL SETUP + +The SQL backend requires a MySQL server. SQL is required for the library, stats tracking, admin notes, and job-only bans, among other features, mostly related to server administration. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/tgstation_schema.sql and /SQL/tgstation_schema_prefix.sql depending on if you want table prefixes. More detailed setup instructions are located here: http://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database + +## IRC BOT SETUP + +Included in the repository is a python3 compatible IRC bot capable of relaying adminhelps to a specified +IRC channel/server, see the /tools/minibot folder for more + +## CONTRIBUTING + +Please see [CONTRIBUTING.md](.github/CONTRIBUTING.md) + +## LICENSE + +All code after [commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST](https://github.com/tgstation/tgstation/commit/333c566b88108de218d882840e61928a9b759d8f) is licensed under [GNU AGPL v3](http://www.gnu.org/licenses/agpl-3.0.html). + +All code before [commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST](https://github.com/tgstation/tgstation/commit/333c566b88108de218d882840e61928a9b759d8f) is licensed under [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0.html). +(Including tools unless their readme specifies otherwise.) + +See LICENSE-AGPLv3.txt and LICENSE-GPLv3.txt for more details. + +tgui clientside is licensed as a subproject under the MIT license. +Font Awesome font files, used by tgui, are licensed under the SIL Open Font License v1.1 +tgui assets are licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). +The TGS3 API is licensed as a subproject under the MIT license. + +See tgui/LICENSE.md for the MIT license. +See tgui/assets/fonts/SIL-OFL-1.1-LICENSE.md for the SIL Open Font License. +See the footers of code/\_\_DEFINES/server\_tools.dm, code/modules/server\_tools/st\_commands.dm, and code/modules/server\_tools/st\_inteface.dm for the MIT license. + +All assets including icons and sound are under a [Creative Commons 3.0 BY-SA license](http://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated. diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt index ce5c2c654d..7063273378 100644 --- a/SQL/database_changelog.txt +++ b/SQL/database_changelog.txt @@ -1,3 +1,52 @@ +Any time you make a change to the schema files, remember to increment the database schema version. Generally increment the minor number, major should be reserved for significant changes to the schema. Both values go up to 255. + +The latest database version is 3.4; The query to update the schema revision table is: + +INSERT INTO `schema_revision` (`major`, `minor`) VALUES (3, 4); +or +INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (3, 4); + +In any query remember to add a prefix to the table names if you use one. + +---------------------------------------------------- + +28 August 2017, by MrStonedOne +Modified table 'messages', adding a deleted column and editing all indexes to include it + +ALTER TABLE `messages` +ADD COLUMN `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0' AFTER `edits`, +DROP INDEX `idx_msg_ckey_time`, +DROP INDEX `idx_msg_type_ckeys_time`, +DROP INDEX `idx_msg_type_ckey_time_odr`, +ADD INDEX `idx_msg_ckey_time` (`targetckey`,`timestamp`, `deleted`), +ADD INDEX `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`, `deleted`), +ADD INDEX `idx_msg_type_ckey_time_odr` (`type`,`targetckey`,`timestamp`, `deleted`); + +---------------------------------------------------- + +25 August 2017, by Jordie0608 + +Modified tables 'connection_log', 'legacy_population', 'library', 'messages' and 'player' to add additional 'round_id' tracking in various forms and 'server_ip' and 'server_port' to the table 'messages'. + +ALTER TABLE `connection_log` ADD COLUMN `round_id` INT(11) UNSIGNED NOT NULL AFTER `server_port`; +ALTER TABLE `legacy_population` ADD COLUMN `round_id` INT(11) UNSIGNED NOT NULL AFTER `server_port`; +ALTER TABLE `library` ADD COLUMN `round_id_created` INT(11) UNSIGNED NOT NULL AFTER `deleted`; +ALTER TABLE `messages` ADD COLUMN `server_ip` INT(10) UNSIGNED NOT NULL AFTER `server`, ADD COLUMN `server_port` SMALLINT(5) UNSIGNED NOT NULL AFTER `server_ip`, ADD COLUMN `round_id` INT(11) UNSIGNED NOT NULL AFTER `server_port`; +ALTER TABLE `player` ADD COLUMN `firstseen_round_id` INT(11) UNSIGNED NOT NULL AFTER `firstseen`, ADD COLUMN `lastseen_round_id` INT(11) UNSIGNED NOT NULL AFTER `lastseen`; + +---------------------------------------------------- + +18 August 2017, by Cyberboss and nfreader + +Modified table 'death', adding the columns `last_words` and 'suicide'. + +ALTER TABLE `death` +ADD COLUMN `last_words` varchar(255) DEFAULT NULL AFTER `staminaloss`, +ADD COLUMN `suicide` tinyint(0) NOT NULL DEFAULT '0' AFTER `last_words`; + +Remember to add a prefix to the table name if you use them. + +---------------------------------------------------- 20th July 2017, by Shadowlight213 Added role_time table to track time spent playing departments. @@ -7,21 +56,10 @@ CREATE TABLE `role_time` ( `ckey` VARCHAR(32) NOT NULL , `job` VARCHAR(128) NOT ALTER TABLE `player` ADD `flags` INT NOT NULL default '0' AFTER `accountjoindate`; -UPDATE `schema_revision` SET minor = 1; - Remember to add a prefix to the table name if you use them. ---------------------------------------------------- -Any time you make a change to the schema files, remember to increment the database schema version. Generally increment the minor number, major should be reserved for significant changes to the schema. Both values go up to 255. - -The latest database version is 3.0; The query to update the schema revision table is: - -INSERT INTO `schema_revision` (`major`, `minor`) VALUES (3, 0); -or -INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (3, 0); - ----------------------------------------------------- 28 June 2017, by oranges Added schema_revision to store the current db revision, why start at 3.0? @@ -326,4 +364,4 @@ UPDATE erro_library SET deleted = 1 WHERE id = someid (Replace someid with the id of the book you want to soft delete.) ----------------------------------------------------- +---------------------------------------------------- \ No newline at end of file diff --git a/SQL/errofreedatabase.sql b/SQL/errofreedatabase.sql index 7f23fcc861..7d6ea4561c 100644 --- a/SQL/errofreedatabase.sql +++ b/SQL/errofreedatabase.sql @@ -12,4 +12,4 @@ ALTER TABLE erro_poll_option RENAME TO SS13_poll_option; ALTER TABLE erro_poll_question RENAME TO SS13_poll_question; ALTER TABLE erro_poll_textreply RENAME TO SS13_poll_textreply; ALTER TABLE erro_poll_vote RENAME TO SS13_poll_vote; -ALTER TABLE erro_watch RENAME TO SS13_watch; +ALTER TABLE erro_watch RENAME TO SS13_watch; \ No newline at end of file diff --git a/SQL/optimisations_2017-02-19.sql b/SQL/optimisations_2017-02-19.sql index 674cbcf9c6..b9017497ed 100644 --- a/SQL/optimisations_2017-02-19.sql +++ b/SQL/optimisations_2017-02-19.sql @@ -38,7 +38,7 @@ Take note some columns have been renamed, removed or changed type. Any services ----------------------------------------------------*/ START TRANSACTION; -ALTER TABLE `feedback`.`ban` +ALTER TABLE `ban` DROP COLUMN `rounds` , CHANGE COLUMN `bantype` `bantype` ENUM('PERMABAN', 'TEMPBAN', 'JOB_PERMABAN', 'JOB_TEMPBAN', 'ADMIN_PERMABAN', 'ADMIN_TEMPBAN') NOT NULL , CHANGE COLUMN `reason` `reason` VARCHAR(2048) NOT NULL @@ -51,14 +51,14 @@ ALTER TABLE `feedback`.`ban` , ADD COLUMN `a_ipTEMP` INT UNSIGNED NOT NULL AFTER `a_ip` , ADD COLUMN `unbanned_ipTEMP` INT UNSIGNED NULL DEFAULT NULL AFTER `unbanned_ip`; SET SQL_SAFE_UPDATES = 0; -UPDATE `feedback`.`ban` +UPDATE `ban` SET `server_ip` = INET_ATON(SUBSTRING_INDEX(IF(`serverip` = '', '0', IF(SUBSTRING_INDEX(`serverip`, ':', 1) LIKE '%_._%', `serverip`, '0')), ':', 1)) , `server_port` = IF(`serverip` LIKE '%:_%', CAST(SUBSTRING_INDEX(`serverip`, ':', -1) AS UNSIGNED), '0') , `ipTEMP` = INET_ATON(IF(`ip` LIKE '%_._%', `ip`, '0')) , `a_ipTEMP` = INET_ATON(IF(`a_ip` LIKE '%_._%', `a_ip`, '0')) , `unbanned_ipTEMP` = INET_ATON(IF(`unbanned_ip` LIKE '%_._%', `unbanned_ip`, '0')); SET SQL_SAFE_UPDATES = 1; -ALTER TABLE `feedback`.`ban` +ALTER TABLE `ban` DROP COLUMN `unbanned_ip` , DROP COLUMN `a_ip` , DROP COLUMN `ip` @@ -69,17 +69,17 @@ ALTER TABLE `feedback`.`ban` COMMIT; START TRANSACTION; -ALTER TABLE `feedback`.`connection_log` +ALTER TABLE `connection_log` ADD COLUMN `server_ip` INT UNSIGNED NOT NULL AFTER `serverip` , ADD COLUMN `server_port` SMALLINT UNSIGNED NOT NULL AFTER `server_ip` , ADD COLUMN `ipTEMP` INT UNSIGNED NOT NULL AFTER `ip`; SET SQL_SAFE_UPDATES = 0; -UPDATE `feedback`.`connection_log` +UPDATE `connection_log` SET `server_ip` = INET_ATON(SUBSTRING_INDEX(IF(`serverip` = '', '0', IF(SUBSTRING_INDEX(`serverip`, ':', 1) LIKE '%_._%', `serverip`, '0')), ':', 1)) , `server_port` = IF(`serverip` LIKE '%:_%', CAST(SUBSTRING_INDEX(`serverip`, ':', -1) AS UNSIGNED), '0') , `ipTEMP` = INET_ATON(IF(`ip` LIKE '%_._%', `ip`, '0')); SET SQL_SAFE_UPDATES = 1; -ALTER TABLE `feedback`.`connection_log` +ALTER TABLE `connection_log` DROP COLUMN `ip` , DROP COLUMN `serverip` , CHANGE COLUMN `ipTEMP` `ip` INT(10) UNSIGNED NOT NULL; @@ -87,12 +87,12 @@ COMMIT; START TRANSACTION; SET SQL_SAFE_UPDATES = 0; -UPDATE `feedback`.`death` +UPDATE `death` SET `bruteloss` = LEAST(`bruteloss`, 65535) , `brainloss` = LEAST(`brainloss`, 65535) , `fireloss` = LEAST(`fireloss`, 65535) , `oxyloss` = LEAST(`oxyloss`, 65535); -ALTER TABLE `feedback`.`death` +ALTER TABLE `death` CHANGE COLUMN `pod` `pod` VARCHAR(50) NOT NULL , CHANGE COLUMN `coord` `coord` VARCHAR(32) NOT NULL , CHANGE COLUMN `mapname` `mapname` VARCHAR(32) NOT NULL @@ -109,39 +109,39 @@ ALTER TABLE `feedback`.`death` , CHANGE COLUMN `oxyloss` `oxyloss` SMALLINT UNSIGNED NOT NULL , ADD COLUMN `server_ip` INT UNSIGNED NOT NULL AFTER `server` , ADD COLUMN `server_port` SMALLINT UNSIGNED NOT NULL AFTER `server_ip`; -UPDATE `feedback`.`death` +UPDATE `death` SET `server_ip` = INET_ATON(SUBSTRING_INDEX(IF(`server` = '', '0', IF(SUBSTRING_INDEX(`server`, ':', 1) LIKE '%_._%', `server`, '0')), ':', 1)) , `server_port` = IF(`server` LIKE '%:_%', CAST(SUBSTRING_INDEX(`server`, ':', -1) AS UNSIGNED), '0'); SET SQL_SAFE_UPDATES = 1; -ALTER TABLE `feedback`.`death` +ALTER TABLE `death` DROP COLUMN `server`; COMMIT; -ALTER TABLE `feedback`.`library` +ALTER TABLE `library` CHANGE COLUMN `category` `category` ENUM('Any', 'Fiction', 'Non-Fiction', 'Adult', 'Reference', 'Religion') NOT NULL , CHANGE COLUMN `ckey` `ckey` VARCHAR(32) NOT NULL DEFAULT 'LEGACY' , CHANGE COLUMN `datetime` `datetime` DATETIME NOT NULL , CHANGE COLUMN `deleted` `deleted` TINYINT(1) UNSIGNED NULL DEFAULT NULL; -ALTER TABLE `feedback`.`messages` +ALTER TABLE `messages` CHANGE COLUMN `type` `type` ENUM('memo', 'message', 'message sent', 'note', 'watchlist entry') NOT NULL , CHANGE COLUMN `text` `text` VARCHAR(2048) NOT NULL , CHANGE COLUMN `secret` `secret` TINYINT(1) UNSIGNED NOT NULL; START TRANSACTION; -ALTER TABLE `feedback`.`player` +ALTER TABLE `player` ADD COLUMN `ipTEMP` INT UNSIGNED NOT NULL AFTER `ip`; SET SQL_SAFE_UPDATES = 0; -UPDATE `feedback`.`player` +UPDATE `player` SET `ipTEMP` = INET_ATON(IF(`ip` LIKE '%_._%', `ip`, '0')); SET SQL_SAFE_UPDATES = 1; -ALTER TABLE `feedback`.`player` +ALTER TABLE `player` DROP COLUMN `ip` , CHANGE COLUMN `ipTEMP` `ip` INT(10) UNSIGNED NOT NULL; COMMIT; START TRANSACTION; -ALTER TABLE `feedback`.`poll_question` +ALTER TABLE `poll_question` CHANGE COLUMN `polltype` `polltype` ENUM('OPTION', 'TEXT', 'NUMVAL', 'MULTICHOICE', 'IRV') NOT NULL , CHANGE COLUMN `adminonly` `adminonly` TINYINT(1) UNSIGNED NOT NULL , CHANGE COLUMN `createdby_ckey` `createdby_ckey` VARCHAR(32) NULL DEFAULT NULL @@ -149,36 +149,36 @@ ALTER TABLE `feedback`.`poll_question` , ADD COLUMN `createdby_ipTEMP` INT UNSIGNED NOT NULL AFTER `createdby_ip` , DROP COLUMN `for_trialmin`; SET SQL_SAFE_UPDATES = 0; -UPDATE `feedback`.`poll_question` +UPDATE `poll_question` SET `createdby_ipTEMP` = INET_ATON(IF(`createdby_ip` LIKE '%_._%', `createdby_ip`, '0')); SET SQL_SAFE_UPDATES = 1; -ALTER TABLE `feedback`.`poll_question` +ALTER TABLE `poll_question` DROP COLUMN `createdby_ip` , CHANGE COLUMN `createdby_ipTEMP` `createdby_ip` INT(10) UNSIGNED NOT NULL; COMMIT; START TRANSACTION; -ALTER TABLE `feedback`.`poll_textreply` +ALTER TABLE `poll_textreply` CHANGE COLUMN `replytext` `replytext` VARCHAR(2048) NOT NULL , ADD COLUMN `ipTEMP` INT UNSIGNED NOT NULL AFTER `ip`; SET SQL_SAFE_UPDATES = 0; -UPDATE `feedback`.`poll_textreply` +UPDATE `poll_textreply` SET `ipTEMP` = INET_ATON(IF(`ip` LIKE '%_._%', `ip`, '0')); SET SQL_SAFE_UPDATES = 1; -ALTER TABLE `feedback`.`poll_textreply` +ALTER TABLE `poll_textreply` DROP COLUMN `ip` , CHANGE COLUMN `ipTEMP` `ip` INT(10) UNSIGNED NOT NULL; COMMIT; START TRANSACTION; -ALTER TABLE `feedback`.`poll_vote` +ALTER TABLE `poll_vote` CHANGE COLUMN `ckey` `ckey` VARCHAR(32) NOT NULL , ADD COLUMN `ipTEMP` INT UNSIGNED NOT NULL AFTER `ip`; SET SQL_SAFE_UPDATES = 0; -UPDATE `feedback`.`poll_vote` +UPDATE `poll_vote` SET `ipTEMP` = INET_ATON(IF(`ip` LIKE '%_._%', `ip`, '0')); SET SQL_SAFE_UPDATES = 1; -ALTER TABLE `feedback`.`poll_vote` +ALTER TABLE `poll_vote` DROP COLUMN `ip` , CHANGE COLUMN `ipTEMP` `ip` INT(10) UNSIGNED NOT NULL; COMMIT; @@ -191,39 +191,39 @@ You may find it helpful to modify or create your own indexes if you utilise addi ----------------------------------------------------*/ -ALTER TABLE `feedback`.`ban` +ALTER TABLE `ban` ADD INDEX `idx_ban_checkban` (`ckey` ASC, `bantype` ASC, `expiration_time` ASC, `unbanned` ASC, `job` ASC) , ADD INDEX `idx_ban_isbanned` (`ckey` ASC, `ip` ASC, `computerid` ASC, `bantype` ASC, `expiration_time` ASC, `unbanned` ASC) , ADD INDEX `idx_ban_count` (`id` ASC, `a_ckey` ASC, `bantype` ASC, `expiration_time` ASC, `unbanned` ASC); -ALTER TABLE `feedback`.`ipintel` +ALTER TABLE `ipintel` ADD INDEX `idx_ipintel` (`ip` ASC, `intel` ASC, `date` ASC); -ALTER TABLE `feedback`.`library` +ALTER TABLE `library` ADD INDEX `idx_lib_id_del` (`id` ASC, `deleted` ASC) , ADD INDEX `idx_lib_del_title` (`deleted` ASC, `title` ASC) , ADD INDEX `idx_lib_search` (`deleted` ASC, `author` ASC, `title` ASC, `category` ASC); -ALTER TABLE `feedback`.`messages` +ALTER TABLE `messages` ADD INDEX `idx_msg_ckey_time` (`targetckey` ASC, `timestamp` ASC) , ADD INDEX `idx_msg_type_ckeys_time` (`type` ASC, `targetckey` ASC, `adminckey` ASC, `timestamp` ASC) , ADD INDEX `idx_msg_type_ckey_time_odr` (`type` ASC, `targetckey` ASC, `timestamp` ASC); -ALTER TABLE `feedback`.`player` +ALTER TABLE `player` ADD INDEX `idx_player_cid_ckey` (`computerid` ASC, `ckey` ASC) , ADD INDEX `idx_player_ip_ckey` (`ip` ASC, `ckey` ASC); -ALTER TABLE `feedback`.`poll_option` +ALTER TABLE `poll_option` ADD INDEX `idx_pop_pollid` (`pollid` ASC); -ALTER TABLE `feedback`.`poll_question` +ALTER TABLE `poll_question` ADD INDEX `idx_pquest_question_time_ckey` (`question` ASC, `starttime` ASC, `endtime` ASC, `createdby_ckey` ASC, `createdby_ip` ASC) , ADD INDEX `idx_pquest_time_admin` (`starttime` ASC, `endtime` ASC, `adminonly` ASC) , ADD INDEX `idx_pquest_id_time_type_admin` (`id` ASC, `starttime` ASC, `endtime` ASC, `polltype` ASC, `adminonly` ASC); -ALTER TABLE `feedback`.`poll_vote` +ALTER TABLE `poll_vote` ADD INDEX `idx_pvote_pollid_ckey` (`pollid` ASC, `ckey` ASC) , ADD INDEX `idx_pvote_optionid_ckey` (`optionid` ASC, `ckey` ASC); -ALTER TABLE `feedback`.`poll_textreply` - ADD INDEX `idx_ptext_pollid_ckey` (`pollid` ASC, `ckey` ASC); +ALTER TABLE `poll_textreply` + ADD INDEX `idx_ptext_pollid_ckey` (`pollid` ASC, `ckey` ASC); \ No newline at end of file diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql index 9795b90672..1edd5ad12b 100644 --- a/SQL/tgstation_schema.sql +++ b/SQL/tgstation_schema.sql @@ -110,6 +110,7 @@ CREATE TABLE `connection_log` ( `datetime` datetime DEFAULT NULL, `server_ip` int(10) unsigned NOT NULL, `server_port` smallint(5) unsigned NOT NULL, + `round_id` int(11) unsigned NOT NULL, `ckey` varchar(45) DEFAULT NULL, `ip` int(10) unsigned NOT NULL, `computerid` varchar(45) DEFAULT NULL, @@ -148,6 +149,8 @@ CREATE TABLE `death` ( `toxloss` smallint(5) unsigned NOT NULL, `cloneloss` smallint(5) unsigned NOT NULL, `staminaloss` smallint(5) unsigned NOT NULL, + `last_words` varchar(255) DEFAULT NULL, + `suicide` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; @@ -200,6 +203,7 @@ CREATE TABLE `legacy_population` ( `time` datetime NOT NULL, `server_ip` int(10) unsigned NOT NULL, `server_port` smallint(5) unsigned NOT NULL, + `round_id` int(11) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; @@ -220,6 +224,7 @@ CREATE TABLE `library` ( `ckey` varchar(32) NOT NULL DEFAULT 'LEGACY', `datetime` datetime NOT NULL, `deleted` tinyint(1) unsigned DEFAULT NULL, + `round_id_created` int(11) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `deleted_idx` (`deleted`), KEY `idx_lib_id_del` (`id`,`deleted`), @@ -243,13 +248,17 @@ CREATE TABLE `messages` ( `text` varchar(2048) NOT NULL, `timestamp` datetime NOT NULL, `server` varchar(32) DEFAULT NULL, + `server_ip` int(10) unsigned NOT NULL, + `server_port` smallint(5) unsigned NOT NULL, + `round_id` int(11) unsigned NOT NULL, `secret` tinyint(1) unsigned NOT NULL, `lasteditor` varchar(32) DEFAULT NULL, `edits` text, + `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), - KEY `idx_msg_ckey_time` (`targetckey`,`timestamp`), - KEY `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`), - KEY `idx_msg_type_ckey_time_odr` (`type`,`targetckey`,`timestamp`) + KEY `idx_msg_ckey_time` (`targetckey`,`timestamp`, `deleted`), + KEY `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`, `deleted`), + KEY `idx_msg_type_ckey_time_odr` (`type`,`targetckey`,`timestamp`, `deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; @@ -278,7 +287,9 @@ DROP TABLE IF EXISTS `player`; CREATE TABLE `player` ( `ckey` varchar(32) NOT NULL, `firstseen` datetime NOT NULL, + `firstseen_round_id` int(11) unsigned NOT NULL, `lastseen` datetime NOT NULL, + `lastseen_round_id` int(11) unsigned NOT NULL, `ip` int(10) unsigned NOT NULL, `computerid` varchar(32) NOT NULL, `lastadminrank` varchar(32) NOT NULL DEFAULT 'Player', @@ -420,4 +431,4 @@ CREATE TABLE `schema_revision` ( /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; \ No newline at end of file diff --git a/SQL/tgstation_schema.sql.rej b/SQL/tgstation_schema.sql.rej deleted file mode 100644 index 51068bed4e..0000000000 --- a/SQL/tgstation_schema.sql.rej +++ /dev/null @@ -1,9 +0,0 @@ -diff a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql (rejected hunks) -@@ -268,7 +283,6 @@ CREATE TABLE `player` ( - `ip` int(10) unsigned NOT NULL, - `computerid` varchar(32) NOT NULL, - `lastadminrank` varchar(32) NOT NULL DEFAULT 'Player', -- `exp` mediumtext, - PRIMARY KEY (`id`), - UNIQUE KEY `ckey` (`ckey`), - KEY `idx_player_cid_ckey` (`computerid`,`ckey`), diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql index b810a82ca3..72045e50fb 100644 --- a/SQL/tgstation_schema_prefixed.sql +++ b/SQL/tgstation_schema_prefixed.sql @@ -31,7 +31,7 @@ CREATE TABLE `SS13_admin` ( -- Table structure for table `SS13_admin_log` -- -DROP TABLE IF EXISTS `SS13_dmin_log`; +DROP TABLE IF EXISTS `SS13_admin_log`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `SS13_admin_log` ( @@ -110,6 +110,7 @@ CREATE TABLE `SS13_connection_log` ( `datetime` datetime DEFAULT NULL, `server_ip` int(10) unsigned NOT NULL, `server_port` smallint(5) unsigned NOT NULL, + `round_id` int(11) unsigned NOT NULL, `ckey` varchar(45) DEFAULT NULL, `ip` int(10) unsigned NOT NULL, `computerid` varchar(45) DEFAULT NULL, @@ -148,6 +149,8 @@ CREATE TABLE `SS13_death` ( `toxloss` smallint(5) unsigned NOT NULL, `cloneloss` smallint(5) unsigned NOT NULL, `staminaloss` smallint(5) unsigned NOT NULL, + `last_words` varchar(255) DEFAULT NULL, + `suicide` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; @@ -200,6 +203,7 @@ CREATE TABLE `SS13_legacy_population` ( `time` datetime NOT NULL, `server_ip` int(10) unsigned NOT NULL, `server_port` smallint(5) unsigned NOT NULL, + `round_id` int(11) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; @@ -220,6 +224,7 @@ CREATE TABLE `SS13_library` ( `ckey` varchar(32) NOT NULL DEFAULT 'LEGACY', `datetime` datetime NOT NULL, `deleted` tinyint(1) unsigned DEFAULT NULL, + `round_id_created` int(11) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `deleted_idx` (`deleted`), KEY `idx_lib_id_del` (`id`,`deleted`), @@ -243,13 +248,17 @@ CREATE TABLE `SS13_messages` ( `text` varchar(2048) NOT NULL, `timestamp` datetime NOT NULL, `server` varchar(32) DEFAULT NULL, + `server_ip` int(10) unsigned NOT NULL, + `server_port` smallint(5) unsigned NOT NULL, + `round_id` int(11) unsigned NOT NULL, `secret` tinyint(1) unsigned NOT NULL, `lasteditor` varchar(32) DEFAULT NULL, `edits` text, + `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), - KEY `idx_msg_ckey_time` (`targetckey`,`timestamp`), - KEY `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`), - KEY `idx_msg_type_ckey_time_odr` (`type`,`targetckey`,`timestamp`) + KEY `idx_msg_ckey_time` (`targetckey`,`timestamp`, `deleted`), + KEY `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`, `deleted`), + KEY `idx_msg_type_ckey_time_odr` (`type`,`targetckey`,`timestamp`, `deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; @@ -278,7 +287,9 @@ DROP TABLE IF EXISTS `SS13_player`; CREATE TABLE `SS13_player` ( `ckey` varchar(32) NOT NULL, `firstseen` datetime NOT NULL, + `firstseen_round_id` int(11) unsigned NOT NULL, `lastseen` datetime NOT NULL, + `lastseen_round_id` int(11) unsigned NOT NULL, `ip` int(10) unsigned NOT NULL, `computerid` varchar(32) NOT NULL, `lastadminrank` varchar(32) NOT NULL DEFAULT 'Player', @@ -420,4 +431,4 @@ CREATE TABLE `SS13_schema_revision` ( /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; \ No newline at end of file diff --git a/SQL/tgstation_schema_prefixed.sql.rej b/SQL/tgstation_schema_prefixed.sql.rej deleted file mode 100644 index dd4bc6a7f5..0000000000 --- a/SQL/tgstation_schema_prefixed.sql.rej +++ /dev/null @@ -1,9 +0,0 @@ -diff a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql (rejected hunks) -@@ -268,7 +297,6 @@ CREATE TABLE `SS13_player` ( - `ip` int(10) unsigned NOT NULL, - `computerid` varchar(32) NOT NULL, - `lastadminrank` varchar(32) NOT NULL DEFAULT 'Player', -- `exp` mediumtext, - PRIMARY KEY (`id`), - UNIQUE KEY `ckey` (`ckey`), - KEY `idx_player_cid_ckey` (`computerid`,`ckey`), diff --git a/TGS3.json b/TGS3.json new file mode 100644 index 0000000000..4fd41ab9f1 --- /dev/null +++ b/TGS3.json @@ -0,0 +1,22 @@ +{ + "documentation": "/tg/station server 3 configuration file", + "changelog": { + "script": "tools/ss13_genchangelog.py", + "arguments": "html/changelog.html html/changelogs", + "pip_dependancies": [ + "PyYaml", + "beautifulsoup4" + ] + }, + "synchronize_paths": [ + "html/changelog.html", + "html/changelogs/*" + ], + "static_directories": [ + "config", + "data" + ], + "dlls": [ + "libmysql.dll" + ] + } \ No newline at end of file diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm index 1008d51d11..0324d65554 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm @@ -378,9 +378,7 @@ invisibility = 101 }, /obj/structure/table, -/obj/item/paper/crumpled/bloody{ - info = "If you dare not continue down this path of madness, escape can be found through the chute in this room. " - }, +/obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/escape, /obj/item/pen/fourcolor, /turf/open/indestructible{ icon_state = "white" @@ -925,9 +923,7 @@ /turf/open/lava/smooth, /area/ruin/powered/clownplanet) "CB" = ( -/obj/item/paper/crumpled/bloody{ - info = "Abandon hope, all ye who enter here." - }, +/obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/hope, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/noslip{ initial_gas_mix = "o2=14;n2=23;TEMP=300" diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index d02d4ced34..214ff213c8 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( /turf/template_noop, /area/template_noop) @@ -47,7 +47,7 @@ /area/ruin/powered/animal_hospital) "al" = ( /obj/structure/table/wood, -/obj/item/toy/carpplushie, +/obj/item/toy/plush/carpplushie, /turf/open/floor/plasteel/cmo, /area/ruin/powered/animal_hospital) "am" = ( @@ -166,7 +166,7 @@ /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "aF" = ( -/obj/machinery/door/unpowered/shuttle{ +/obj/machinery/door/airlock/shuttle{ name = "Restroom" }, /turf/open/floor/plasteel/bar, @@ -263,6 +263,9 @@ /area/ruin/powered/animal_hospital) "aX" = ( /obj/item/stack/cable_coil/random, +/obj/item/stack/sheet/mineral/titanium{ + amount = 30 + }, /turf/open/floor/plating, /area/ruin/powered/animal_hospital) "aY" = ( @@ -335,6 +338,9 @@ /area/ruin/powered/animal_hospital) "bk" = ( /obj/structure/reagent_dispensers/fueltank, +/obj/item/device/flashlight/glowstick/blue, +/obj/item/device/flashlight/glowstick/blue, +/obj/item/device/flashlight/glowstick/blue, /turf/open/floor/plating, /area/ruin/powered/animal_hospital) "bl" = ( @@ -373,16 +379,15 @@ }, /area/ruin/powered/animal_hospital) "bn" = ( -/obj/structure/bed/dogbed, -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/sleeper{ + dir = 4 }, /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "bo" = ( -/obj/item/reagent_containers/glass/bowl, -/obj/item/reagent_containers/food/snacks/cheesewedge, -/obj/item/reagent_containers/food/snacks/cheesewedge, +/obj/machinery/light/small{ + dir = 1 + }, /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "bp" = ( @@ -420,10 +425,8 @@ }, /area/ruin/powered/animal_hospital) "bv" = ( -/obj/effect/mob_spawn/mouse{ - dir = 4; - flavour_text = "You're a mousey! You're getting pretty old as mice go, and you haven't been feeling well as of late. Your master loves you a lot so he took you to this place so you can get better! You can't wait to see him again!"; - mob_name = "Stallman Jr." +/obj/effect/mob_spawn/human/doctor/alive/lavaland{ + dir = 4 }, /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) @@ -433,8 +436,7 @@ /area/ruin/powered/animal_hospital) "bx" = ( /obj/machinery/door/airlock/medical{ - name = "Patient Room"; - req_access_txt = "0" + name = "Rejuvenation Pods" }, /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) @@ -468,12 +470,11 @@ /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "bD" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/glass/bottle/cyanide{ - desc = "A cocktail of chemotherapy drugs intended to treat bladder cancer."; - name = "MVAC regimen" +/mob/living/simple_animal/bot/medbot{ + desc = "A little medical robot. It's programmed to only act in emergencies."; + heal_threshold = 40; + name = "emergency Medibot" }, -/obj/item/reagent_containers/syringe, /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "bE" = ( @@ -553,16 +554,12 @@ }, /area/lavaland/surface/outdoors) "bP" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/item/storage/firstaid/fire, /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "bQ" = ( -/obj/structure/table/glass, -/obj/item/clothing/neck/petcollar, -/obj/item/pen/blue, +/obj/machinery/light/small, /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "bR" = ( @@ -582,6 +579,8 @@ /obj/item/defibrillator/loaded, /obj/item/storage/belt/medical, /obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, /turf/open/floor/plasteel/blue/side{ dir = 6 }, @@ -664,46 +663,46 @@ /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "cg" = ( -/obj/machinery/door/unpowered/shuttle{ +/obj/machinery/door/airlock/shuttle{ name = "Break Room" }, /turf/open/floor/plasteel/cmo, /area/ruin/powered/animal_hospital) "ch" = ( -/obj/machinery/door/unpowered/shuttle{ - name = "Emergency Care" +/obj/machinery/door/airlock/shuttle{ + name = "Operating Theatre" }, /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "ci" = ( -/obj/machinery/door/unpowered/shuttle{ - desc = "There's a note wedged in the seam saying something about directing pizza here."; +/obj/structure/fans/tiny/invisible, +/obj/machinery/door/airlock/shuttle{ + desc = "There's a smudged note wedged into it that says something about pizza dropoffs."; name = "Staff Entrance" }, -/obj/structure/fans/tiny/invisible, /turf/open/floor/plating, /area/ruin/powered/animal_hospital) "cj" = ( -/obj/machinery/door/unpowered/shuttle{ +/obj/machinery/door/airlock/shuttle{ name = "Morgue" }, /turf/open/floor/plating, /area/ruin/powered/animal_hospital) "ck" = ( -/obj/machinery/door/unpowered/shuttle{ +/obj/machinery/door/airlock/shuttle{ name = "Medical Supplies" }, /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "cl" = ( -/obj/machinery/door/unpowered/shuttle{ +/obj/machinery/door/airlock/shuttle{ name = "Safety Supplies" }, /turf/open/floor/plasteel/white, /area/ruin/powered/animal_hospital) "cm" = ( -/obj/machinery/door/unpowered/shuttle{ - name = "Tool Storage" +/obj/machinery/door/airlock/shuttle{ + name = "Storage" }, /turf/open/floor/plating, /area/ruin/powered/animal_hospital) @@ -811,6 +810,33 @@ /obj/effect/baseturf_helper/lava_land/surface, /turf/closed/wall/mineral/titanium/nodiagonal, /area/ruin/powered/animal_hospital) +"cG" = ( +/obj/machinery/door/airlock/shuttle{ + desc = "There's a smudged note wedged into it that says something about pizza dropoffs."; + name = "Staff Entrance" + }, +/turf/open/floor/plasteel/cmo, +/area/ruin/powered/animal_hospital) +"cH" = ( +/mob/living/simple_animal/bot/cleanbot, +/turf/open/floor/plasteel/blue/side{ + dir = 0 + }, +/area/ruin/powered/animal_hospital) +"cI" = ( +/obj/structure/table/glass, +/obj/item/storage/firstaid/toxin, +/turf/open/floor/plasteel/white, +/area/ruin/powered/animal_hospital) +"cJ" = ( +/obj/machinery/sleeper{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/powered/animal_hospital) (1,1,1) = {" aa @@ -1037,7 +1063,7 @@ cw ae aV ba -bh +cI aG aL br @@ -1092,7 +1118,7 @@ aj at as ae -ct +aL aK ck ao @@ -1122,7 +1148,7 @@ ak as az ae -aM +cv aP ae ae @@ -1152,7 +1178,7 @@ al au as ae -ct +aL aK cl ao @@ -1181,9 +1207,9 @@ ae am cs as -cg +cG aK -aP +cH ae aW ao @@ -1249,12 +1275,12 @@ ae ae ae ae +bh +bv +bv +cJ bn bv -bC -ae -bn -bN bP ae cE @@ -1280,10 +1306,10 @@ be bk ae bo -bw +ao bD -ae -bK +ao +ao ao bQ ae @@ -1311,11 +1337,11 @@ ae ae af bx -ae +af ae af bx -ae +af ae aa aa diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index 6712e631a7..27c4f5074b 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -198,6 +198,7 @@ /obj/structure/stone_tile{ dir = 4 }, +/obj/item/dildo/custom, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) "aC" = ( @@ -287,6 +288,7 @@ /obj/structure/stone_tile/cracked{ dir = 4 }, +/obj/item/dildo/custom, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) "aN" = ( @@ -305,6 +307,7 @@ /area/ruin/unpowered/ash_walkers) "aP" = ( /obj/structure/stone_tile, +/obj/item/dildo/custom, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) "aQ" = ( @@ -379,6 +382,7 @@ /obj/structure/stone_tile/cracked{ dir = 1 }, +/obj/item/dildo/custom, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) "aZ" = ( @@ -401,6 +405,7 @@ /obj/structure/stone_tile{ dir = 4 }, +/obj/item/dildo/custom, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) "bb" = ( @@ -489,6 +494,7 @@ dir = 4 }, /obj/item/storage/bag/plants/portaseeder, +/obj/item/dildo/custom, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) "bk" = ( @@ -509,6 +515,7 @@ /obj/structure/stone_tile/cracked{ dir = 1 }, +/obj/item/dildo/custom, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) "bm" = ( @@ -568,6 +575,7 @@ /obj/structure/stone_tile{ dir = 8 }, +/obj/item/dildo/custom, /turf/open/indestructible/boss/air, /area/ruin/unpowered/ash_walkers) "br" = ( @@ -897,6 +905,7 @@ /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 8 }, +/obj/item/dildo/custom, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "ci" = ( @@ -1042,6 +1051,7 @@ icon_state = "cracked_slab1"; dir = 4 }, +/obj/item/dildo/custom, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) "cB" = ( @@ -1475,6 +1485,26 @@ /obj/structure/stone_tile, /turf/closed/mineral/volcanic, /area/lavaland/surface/outdoors) +"dG" = ( +/obj/structure/stone_tile/slab, +/obj/item/dildo/custom, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"dH" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/item/dildo/custom, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"dI" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/item/dildo/custom, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) (1,1,1) = {" aa @@ -1597,7 +1627,7 @@ aO bl bx bD -bS +dG de bV dg @@ -1625,7 +1655,7 @@ ci bA ct bN -bL +dI cI ah ah @@ -1732,7 +1762,7 @@ ak bP bL bX -dh +dH do du dz diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm index 8ca77f7dd2..49e1dd8484 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm @@ -24,15 +24,6 @@ /area/ruin/unpowered) "g" = ( /obj/effect/decal/cleanable/blood/old, -/obj/effect/step_trigger/thrower{ - name = "south"; - tiles = 5 - }, -/obj/effect/step_trigger/sound_effect{ - name = "turn around"; - sound = 'sound/hallucinations/turn_around1.ogg'; - triggerer_only = 1 - }, /turf/open/floor/engine/cult{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, @@ -79,16 +70,6 @@ /area/ruin/unpowered) "n" = ( /obj/effect/decal/cleanable/blood/old, -/obj/effect/step_trigger/thrower{ - direction = 4; - name = "east"; - tiles = 5 - }, -/obj/effect/step_trigger/sound_effect{ - name = "turn around"; - sound = 'sound/hallucinations/turn_around1.ogg'; - triggerer_only = 1 - }, /turf/open/floor/engine/cult{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, @@ -117,16 +98,6 @@ /area/ruin/unpowered) "p" = ( /obj/effect/decal/cleanable/blood/old, -/obj/effect/step_trigger/thrower{ - direction = 8; - name = "west"; - tiles = 5 - }, -/obj/effect/step_trigger/sound_effect{ - name = "turn around"; - sound = 'sound/hallucinations/turn_around1.ogg'; - triggerer_only = 1 - }, /turf/open/floor/engine/cult{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, @@ -142,16 +113,6 @@ /area/ruin/unpowered) "r" = ( /obj/effect/decal/cleanable/blood/old, -/obj/effect/step_trigger/thrower{ - direction = 1; - name = "north"; - tiles = 5 - }, -/obj/effect/step_trigger/sound_effect{ - name = "turn around"; - sound = 'sound/hallucinations/turn_around1.ogg'; - triggerer_only = 1 - }, /turf/open/floor/engine/cult{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm index eba45a14bf..3b4e4ce09e 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm @@ -7,6 +7,9 @@ /area/ruin/powered/golem_ship) "c" = ( /obj/structure/closet/crate, +/obj/item/shovel, +/obj/item/shovel, +/obj/item/shovel, /obj/item/pickaxe, /obj/item/pickaxe, /obj/item/pickaxe, @@ -19,6 +22,8 @@ /area/ruin/powered/golem_ship) "d" = ( /obj/structure/closet/crate, +/obj/item/shovel, +/obj/item/shovel, /obj/item/pickaxe, /obj/item/pickaxe, /obj/item/storage/bag/ore, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index a004ba7a9d..5d192d2a7c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -76,8 +76,7 @@ /area/ruin/powered/syndicate_lava_base) "al" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/vault, /area/ruin/powered/syndicate_lava_base) @@ -320,8 +319,7 @@ /area/ruin/powered/syndicate_lava_base) "aS" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -413,8 +411,7 @@ /area/ruin/powered/syndicate_lava_base) "bd" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/light/small, /turf/open/floor/plasteel/black, @@ -694,16 +691,15 @@ /area/ruin/powered/syndicate_lava_base) "bJ" = ( /obj/structure/table/reinforced, -/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted, -/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot, +/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot, /turf/open/floor/plasteel/vault{ dir = 8 }, /area/ruin/powered/syndicate_lava_base) "bK" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -969,8 +965,7 @@ /area/ruin/powered/syndicate_lava_base) "cq" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/podhatch{ dir = 5 diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm index 588000378b..14ef2b80cd 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm @@ -48,7 +48,7 @@ /area/ruin/unpowered) "j" = ( /obj/machinery/abductor/experiment{ - team = 100 + team_number = 100 }, /turf/open/floor/plating/abductor{ initial_gas_mix = "o2=16;n2=23;TEMP=300" @@ -61,7 +61,7 @@ /area/ruin/unpowered) "l" = ( /obj/machinery/abductor/pad{ - team = 100 + team_number = 100 }, /turf/open/floor/plating/abductor{ initial_gas_mix = "o2=16;n2=23;TEMP=300" diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index 49da58eace..a083ac48f6 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -252,7 +252,9 @@ /turf/open/floor/plating/airless, /area/template_noop) "aF" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /obj/structure/window/reinforced, /turf/open/floor/plating, /area/ruin/space/derelict/solar_control) @@ -416,7 +418,9 @@ /turf/open/floor/plasteel, /area/ruin/space/derelict/solar_control) "bc" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating, /area/ruin/space/derelict/solar_control) "bd" = ( @@ -985,7 +989,9 @@ /turf/open/floor/plating, /area/ruin/space/derelict/bridge/access) "cU" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/ruin/space/derelict/bridge/access) "cV" = ( @@ -1018,11 +1024,15 @@ /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge/access) "cY" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 10 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/gravity_generator) "cZ" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/gravity_generator) "da" = ( @@ -1033,11 +1043,15 @@ /turf/open/floor/plasteel, /area/ruin/space/derelict/gravity_generator) "db" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 1 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/gravity_generator) "dc" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 5 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/gravity_generator) "dd" = ( @@ -1488,15 +1502,19 @@ /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "ev" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side, +/obj/effect/spawner/structure/window/hollow/reinforced/directional, /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "ew" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 6 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "ex" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/east, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 4 + }, /obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 8 @@ -1663,7 +1681,9 @@ /turf/template_noop, /area/template_noop) "eW" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 9 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "eX" = ( @@ -1697,11 +1717,15 @@ /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "fc" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 1 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "fd" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 5 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "fe" = ( @@ -1783,7 +1807,9 @@ /turf/open/floor/plating/airless, /area/ruin/space/derelict/bridge) "fq" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/west, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "fr" = ( @@ -1807,7 +1833,9 @@ /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "ft" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/east, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "fu" = ( @@ -1890,7 +1918,9 @@ }, /area/ruin/space/derelict/singularity_engine) "fI" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 10 + }, /turf/open/floor/plasteel/airless{ icon_state = "damaged2" }, @@ -2128,7 +2158,9 @@ }, /area/ruin/space/derelict/singularity_engine) "gt" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 9 + }, /obj/item/shard{ icon_state = "medium" }, @@ -2146,7 +2178,9 @@ /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "gw" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "gx" = ( @@ -2194,7 +2228,9 @@ }, /area/ruin/unpowered/no_grav) "gE" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "gF" = ( @@ -2292,7 +2328,9 @@ /turf/closed/wall, /area/ruin/space/derelict/singularity_engine) "gZ" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 10 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "ha" = ( @@ -2408,7 +2446,9 @@ /turf/open/floor/plating/airless, /area/ruin/space/derelict/medical) "hx" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 1 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/medical) "hy" = ( @@ -2691,7 +2731,9 @@ /turf/template_noop, /area/template_noop) "iu" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 6 + }, /turf/template_noop, /area/template_noop) "iv" = ( @@ -3129,7 +3171,9 @@ /turf/open/floor/plating, /area/ruin/space/derelict/arrival) "jK" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/ruin/space/derelict/arrival) "jL" = ( @@ -3548,11 +3592,15 @@ /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/primary) "kP" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/primary) "kQ" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/primary) "kR" = ( @@ -3717,11 +3765,7 @@ /obj/item/reagent_containers/glass/beaker{ list_reagents = list("sacid" = 50) }, -/obj/item/paper/crumpled/bloody{ - desc = "Looks like someone started shakily writing a will in space common, but were interrupted by something bloody..."; - info = "I, Victor Belyakov, do hereby leave my _- "; - name = "unfinished paper scrap" - }, +/obj/item/paper/crumpled/bloody/ruins/thederelict/unfinished, /obj/item/pen, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary) @@ -3776,7 +3820,9 @@ /turf/open/floor/plasteel/airless, /area/ruin/unpowered/no_grav) "lD" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "lE" = ( @@ -3854,7 +3900,9 @@ /turf/open/floor/plasteel/airless, /area/ruin/unpowered/no_grav) "lR" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/ruin/unpowered/no_grav) "lS" = ( @@ -4066,7 +4114,9 @@ /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/secondary) "mD" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/secondary) "mE" = ( @@ -4178,7 +4228,9 @@ /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/secondary) "mY" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/secondary) "mZ" = ( @@ -4370,7 +4422,7 @@ /turf/template_noop, /area/ruin/space/derelict/hallway/secondary) "ny" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side, +/obj/effect/spawner/structure/window/hollow/reinforced/directional, /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/secondary) "nz" = ( @@ -4421,7 +4473,9 @@ /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/secondary) "nH" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 1 + }, /turf/open/floor/plating/airless, /area/ruin/space/derelict/hallway/secondary) "nI" = ( diff --git a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm index 11dcb8561f..c08a68b6c7 100644 --- a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm +++ b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm @@ -36,11 +36,15 @@ /turf/open/floor/plating/airless, /area/ruin/space/abandoned_tele) "j" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/ruin/space/abandoned_tele) "k" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/ruin/space/abandoned_tele) "l" = ( @@ -78,7 +82,9 @@ /turf/open/floor/plating/airless, /area/ruin/space/abandoned_tele) "t" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/ruin/space/abandoned_tele) "u" = ( diff --git a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm index 819e11bb0e..66c738fb77 100644 --- a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm +++ b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm @@ -743,10 +743,7 @@ /turf/open/floor/plasteel/darkgreen, /area/ruin/space/has_grav/abandonedzoo) "bN" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/shard{ icon_state = "small" }, @@ -799,10 +796,7 @@ /turf/open/floor/plating/airless, /area/ruin/space/has_grav/abandonedzoo) "bU" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/abandonedzoo) "bV" = ( diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index 21755f1e2f..f667074c38 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -67,7 +67,7 @@ /area/ruin/space/has_grav/derelictoutpost/cargobay) "ao" = ( /obj/machinery/power/apc{ - cell_type = 0; + start_charge = 0; dir = 4; name = "Cargo Bay APC"; pixel_x = 24 @@ -258,9 +258,7 @@ name = "critter crate - mr.tiggles"; opened = 1 }, -/obj/item/paper/crumpled/ruins/snowdin{ - info = "A crumpled piece of manifest paper, out of the barely legible pen writing, you can see something about a warning involving whatever was originally in the crate." - }, +/obj/item/paper/crumpled/ruins/bigderelict1/manifest, /obj/structure/alien/weeds{ color = "#4BAE56"; desc = "A thick gelatinous surface covers the floor. Someone get the golashes."; @@ -454,10 +452,7 @@ name = "Tradeport Officer"; random = 1 }, -/obj/item/paper/crumpled/ruins/snowdin{ - icon_state = "scrap_bloodied"; - info = "If anyone finds this, please, don't let my kids know I died a coward.." - }, +/obj/item/paper/crumpled/ruins/bigderelict1/coward, /obj/effect/decal/cleanable/blood/old{ name = "dried blood splatter"; pixel_x = -29 @@ -754,7 +749,7 @@ /area/ruin/space/has_grav/derelictoutpost/powerstorage) "ca" = ( /obj/machinery/power/apc{ - cell_type = 0; + start_charge = 0; dir = 4; name = "Power Storage APC"; pixel_x = 23; @@ -850,7 +845,7 @@ /area/ruin/space/has_grav/derelictoutpost) "ck" = ( /obj/machinery/power/apc{ - cell_type = 0; + start_charge = 0; dir = 2; name = "Tradepost APC"; pixel_y = -24 @@ -2011,7 +2006,7 @@ /area/ruin/space/has_grav/derelictoutpost/cargostorage) "el" = ( /obj/machinery/power/apc{ - cell_type = 0; + start_charge = 0; dir = 4; name = "Cargo Storage APC"; pixel_x = 24 @@ -3912,4 +3907,4 @@ aa aa aa aa -"} +"} \ No newline at end of file diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm index 43cd290ca0..2f395e4f1c 100644 --- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm +++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm @@ -590,9 +590,9 @@ "bW" = ( /obj/structure/closet/crate/secure/gear, /obj/item/ammo_box/c10mm, -/obj/item/ammo_casing/shotgun/meteorshot, -/obj/item/ammo_casing/shotgun/meteorshot, -/obj/item/ammo_casing/shotgun/meteorshot, +/obj/item/ammo_casing/shotgun/meteorslug, +/obj/item/ammo_casing/shotgun/meteorslug, +/obj/item/ammo_casing/shotgun/meteorslug, /turf/open/floor/mineral/titanium/yellow/airless, /area/ruin/unpowered) "bX" = ( @@ -815,8 +815,8 @@ /area/ruin/unpowered) "cC" = ( /obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted, -/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted, +/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot, +/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot, /turf/open/floor/mineral/titanium/yellow/airless, /area/ruin/unpowered) "cD" = ( diff --git a/_maps/RandomRuins/SpaceRuins/crashedship.dmm b/_maps/RandomRuins/SpaceRuins/crashedship.dmm index f577ec5143..5016189876 100644 --- a/_maps/RandomRuins/SpaceRuins/crashedship.dmm +++ b/_maps/RandomRuins/SpaceRuins/crashedship.dmm @@ -17,7 +17,9 @@ /turf/closed/wall/mineral/titanium/overspace, /area/awaymission/BMPship/Aft) "af" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/engine, /area/awaymission/BMPship/Aft) "ag" = ( @@ -38,7 +40,9 @@ /turf/open/floor/plating, /area/awaymission/BMPship/Aft) "aj" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/engine, /area/awaymission/BMPship/Aft) "ak" = ( @@ -54,7 +58,9 @@ /area/template_noop) "an" = ( /obj/structure/window/reinforced, -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/engine, /area/awaymission/BMPship/Aft) "ao" = ( @@ -224,7 +230,9 @@ /turf/open/floor/plating, /area/awaymission/BMPship/Aft) "aQ" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating/airless, /area/awaymission/BMPship/Fore) "aR" = ( @@ -350,7 +358,9 @@ /turf/open/floor/plating, /area/awaymission/BMPship/Aft) "bl" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/awaymission/BMPship/Fore) "bm" = ( @@ -394,7 +404,9 @@ /area/awaymission/BMPship/Aft) "bt" = ( /obj/structure/window/reinforced, -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/awaymission/BMPship/Fore) "bu" = ( @@ -1165,7 +1177,9 @@ /turf/open/floor/plasteel, /area/awaymission/BMPship/Aft) "dG" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/awaymission/BMPship/Fore) "dH" = ( @@ -1372,7 +1386,9 @@ /turf/open/floor/plasteel, /area/awaymission/BMPship/Aft) "ed" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/BMPship/Fore) "ee" = ( @@ -1592,7 +1608,9 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/effect/spawner/structure/window/hollow/reinforced/corner, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 6 + }, /turf/open/floor/plating, /area/awaymission/BMPship/Fore) "eI" = ( @@ -2115,7 +2133,9 @@ /turf/open/floor/plasteel, /area/awaymission/BMPship/Aft) "gk" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating/airless, /area/awaymission/BMPship/Fore) "gl" = ( @@ -2247,7 +2267,9 @@ /turf/open/floor/plating/asteroid/airless, /area/awaymission/BMPship) "gF" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/east, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 4 + }, /obj/item/shard{ icon_state = "small" }, @@ -2308,7 +2330,9 @@ /turf/open/floor/plating/asteroid/airless, /area/awaymission/BMPship) "gR" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 6 + }, /turf/open/floor/plating/airless, /area/awaymission/BMPship/Fore) "gS" = ( @@ -2448,7 +2472,9 @@ /turf/open/floor/plating/asteroid/airless, /area/awaymission/BMPship) "ho" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/engine, /area/awaymission/BMPship/Aft) "hp" = ( diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index 7a146f0988..6eae7dd6e1 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -1096,8 +1096,7 @@ d2 = 8; icon_state = "0-8" }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Hydroponics APC"; pixel_x = 24 @@ -1466,8 +1465,7 @@ /area/ruin/space/has_grav/deepstorage) "cQ" = ( /obj/structure/cable/yellow, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Storage APC"; pixel_x = 24 @@ -2260,8 +2258,7 @@ d2 = 8; icon_state = "0-8" }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Armory APC"; pixel_x = 24 @@ -3085,8 +3082,7 @@ "fE" = ( /obj/machinery/atmospherics/pipe/simple/supplymain/hidden, /obj/structure/cable/yellow, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Dormory APC"; pixel_x = 24 @@ -6625,4 +6621,4 @@ aa aa aa aa -"} +"} \ No newline at end of file diff --git a/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm b/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm index 75ba049548..6396cda06f 100644 --- a/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm +++ b/_maps/RandomRuins/SpaceRuins/gasthelizards.dmm @@ -174,7 +174,6 @@ dir = 1 }, /obj/machinery/power/apc{ - cell_type = 2500; dir = 1; name = "Worn-out APC"; pixel_x = 1; diff --git a/_maps/RandomRuins/SpaceRuins/gondolaasteroid.dmm b/_maps/RandomRuins/SpaceRuins/gondolaasteroid.dmm new file mode 100644 index 0000000000..b7a5910b1e --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/gondolaasteroid.dmm @@ -0,0 +1,1382 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/closed/mineral/random, +/area/ruin/space/has_grav) +"c" = ( +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"d" = ( +/obj/structure/marker_beacon{ + light_color = "#FFE8AA"; + light_range = 20 + }, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"e" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"f" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"g" = ( +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav{ + dynamic_lighting = 1 + }) +"h" = ( +/mob/living/simple_animal/pet/gondola, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"i" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"j" = ( +/obj/effect/overlay/coconut, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"k" = ( +/obj/effect/overlay/palmtree_l, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"l" = ( +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"m" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"n" = ( +/obj/structure/flora/ausbushes/reedbush, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"o" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"p" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"q" = ( +/obj/structure/flora/ausbushes/fernybush, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"r" = ( +/obj/effect/overlay/palmtree_r, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"s" = ( +/obj/structure/flora/junglebush/large, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"t" = ( +/obj/structure/flora/ausbushes/sunnybush, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) +"u" = ( +/obj/machinery/door/airlock/survival_pod/vertical, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +a +a +a +"} +(2,1,1) = {" +a +a +a +a +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +b +b +b +a +a +"} +(3,1,1) = {" +a +a +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +"} +(4,1,1) = {" +a +b +b +b +b +a +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +b +b +b +b +b +"} +(5,1,1) = {" +a +b +b +b +a +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +c +c +c +b +b +b +"} +(6,1,1) = {" +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +f +c +c +c +h +c +b +b +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +o +c +r +c +b +b +b +b +b +c +"} +(8,1,1) = {" +a +a +a +a +a +a +b +b +b +b +b +b +b +b +b +b +c +b +c +c +c +c +c +c +c +c +j +c +c +c +c +b +b +b +c +"} +(9,1,1) = {" +a +a +a +a +a +b +b +b +b +b +b +b +b +c +k +c +c +q +c +c +j +c +c +k +c +c +c +c +m +c +c +b +b +b +c +"} +(10,1,1) = {" +a +a +a +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +c +s +c +c +c +c +c +c +i +c +c +c +b +b +b +c +"} +(11,1,1) = {" +a +a +b +b +b +b +b +b +b +b +b +b +b +b +c +i +n +f +c +c +d +c +c +j +c +h +c +l +c +d +c +b +b +b +c +"} +(12,1,1) = {" +a +a +b +b +b +b +b +b +b +b +b +b +c +c +c +c +o +o +c +h +c +c +c +c +c +c +c +i +o +c +c +b +b +b +c +"} +(13,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +i +c +q +c +c +c +c +c +c +s +c +c +c +c +b +b +b +b +c +"} +(14,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +h +c +c +c +c +l +c +c +c +m +i +c +c +c +c +c +c +c +b +b +b +b +b +c +"} +(15,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +c +i +o +c +c +c +c +c +c +c +c +b +b +b +b +c +"} +(16,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +o +p +c +c +c +c +r +c +c +c +c +b +b +b +c +"} +(17,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +e +n +c +c +c +c +c +c +c +c +c +c +c +b +b +c +"} +(18,1,1) = {" +a +b +b +b +b +b +b +b +b +b +c +e +c +b +b +b +b +b +c +c +c +c +c +c +i +t +c +c +c +i +c +c +b +b +b +"} +(19,1,1) = {" +a +b +b +b +b +b +b +b +b +g +c +c +c +c +c +b +b +b +b +c +r +j +c +c +c +f +c +c +c +c +c +c +u +c +u +"} +(20,1,1) = {" +a +c +b +b +b +b +b +b +b +h +c +c +d +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +"} +(21,1,1) = {" +a +c +c +b +b +b +b +b +b +c +c +c +k +c +i +i +c +c +q +c +c +c +c +c +d +c +h +c +c +c +c +c +b +b +b +"} +(22,1,1) = {" +a +c +c +b +b +b +b +b +b +c +c +c +c +c +c +l +c +c +c +c +c +c +c +c +c +c +c +c +c +r +c +c +b +b +b +"} +(23,1,1) = {" +a +c +c +b +b +b +b +b +b +c +c +j +c +c +c +c +c +c +c +c +c +h +s +c +c +c +s +c +c +c +c +c +b +b +b +"} +(24,1,1) = {" +a +a +c +c +b +b +b +b +e +c +c +c +c +c +h +c +c +c +c +c +c +c +c +c +m +c +c +c +c +c +c +c +b +b +b +"} +(25,1,1) = {" +a +a +c +c +b +b +b +c +c +c +c +c +c +c +c +c +i +l +c +c +c +c +c +c +n +m +c +c +c +c +c +b +b +b +a +"} +(26,1,1) = {" +a +a +c +c +b +b +b +c +c +c +c +c +c +c +c +m +p +i +c +f +c +c +c +c +c +c +k +c +c +j +c +b +b +b +a +"} +(27,1,1) = {" +a +a +c +c +b +b +b +b +c +c +c +c +c +c +c +c +c +c +c +d +m +i +c +c +c +c +c +c +c +c +b +b +b +a +a +"} +(28,1,1) = {" +a +a +a +c +c +b +b +b +c +c +c +c +c +e +c +c +c +c +c +c +i +l +p +c +c +c +c +c +c +b +b +b +b +a +a +"} +(29,1,1) = {" +a +a +a +c +c +b +b +c +c +c +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +i +c +c +c +b +b +b +c +c +a +"} +(30,1,1) = {" +a +a +a +c +b +b +c +d +f +c +i +c +c +c +b +c +c +c +c +c +j +c +c +c +c +c +c +c +b +b +b +c +c +c +a +"} +(31,1,1) = {" +a +a +a +b +b +b +b +c +c +c +c +c +c +b +b +b +c +c +c +r +c +c +c +c +c +c +b +b +b +b +c +c +c +b +b +"} +(32,1,1) = {" +a +a +a +b +b +b +c +c +c +c +c +c +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +b +b +b +"} +(33,1,1) = {" +a +a +a +b +b +c +c +c +c +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +a +a +b +b +b +a +"} +(34,1,1) = {" +a +a +a +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +c +b +b +b +b +b +a +a +a +a +a +a +a +b +b +b +a +"} +(35,1,1) = {" +a +a +a +a +b +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm index 864621b1df..dab408a8b1 100644 --- a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm @@ -44,7 +44,6 @@ /area/tcommsat/chamber) "ak" = ( /obj/machinery/power/apc{ - cell_type = 2500; dir = 1; name = "Worn-out APC"; pixel_x = 1; @@ -452,11 +451,15 @@ /turf/open/floor/plasteel/airless/black, /area/tcommsat/chamber) "bA" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/tcommsat/chamber) "bB" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 1 + }, /turf/open/floor/plating/airless, /area/tcommsat/chamber) "bC" = ( @@ -464,7 +467,9 @@ /turf/open/floor/plating/airless, /area/tcommsat/chamber) "bD" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/tcommsat/chamber) "bE" = ( @@ -513,7 +518,9 @@ /turf/open/floor/plasteel/airless/black, /area/tcommsat/chamber) "bK" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 9 + }, /turf/open/floor/plating, /area/tcommsat/chamber) "bL" = ( @@ -521,7 +528,9 @@ /turf/open/floor/plating, /area/tcommsat/chamber) "bM" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/tcommsat/chamber) "bN" = ( @@ -541,7 +550,9 @@ /turf/open/floor/plasteel/airless/black, /area/tcommsat/chamber) "bP" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating, /area/tcommsat/chamber) "bQ" = ( @@ -554,7 +565,9 @@ /turf/open/floor/plasteel/airless/black, /area/tcommsat/chamber) "bS" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /obj/structure/window/reinforced, /turf/open/floor/plating, /area/tcommsat/chamber) @@ -610,7 +623,9 @@ /turf/open/floor/plasteel/airless/black, /area/tcommsat/chamber) "cc" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/tcommsat/chamber) "cd" = ( @@ -633,7 +648,9 @@ /turf/open/floor/plasteel/airless/black, /area/tcommsat/chamber) "ch" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 10 + }, /turf/open/floor/plating, /area/tcommsat/chamber) "ci" = ( diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 32ed7321e7..8e636c03f9 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -53,7 +53,9 @@ /turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation/comm) "al" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /obj/machinery/door/poddoor{ id = "ancient" }, @@ -67,7 +69,9 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/comm) "an" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /obj/machinery/door/poddoor{ id = "ancient" }, @@ -483,11 +487,15 @@ /turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation/comm) "bz" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/comm) "bA" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/comm) "bB" = ( @@ -900,7 +908,9 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/deltacorridor) "cK" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/template_noop) "cL" = ( @@ -946,7 +956,9 @@ /turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation/hydroponics) "cR" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/hydroponics) "cS" = ( @@ -954,7 +966,9 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/hydroponics) "cT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/hydroponics) "cU" = ( @@ -1794,7 +1808,9 @@ /turf/open/floor/plating/airless, /area/template_noop) "fb" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "fc" = ( @@ -1978,7 +1994,9 @@ /turf/open/floor/plating/airless, /area/template_noop) "fB" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "fC" = ( @@ -1986,7 +2004,9 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "fD" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 6 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "fE" = ( @@ -2805,7 +2825,9 @@ /turf/open/floor/plasteel/airless/floorgrime, /area/template_noop) "gV" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 5 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "gW" = ( @@ -2869,7 +2891,9 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/deltacorridor) "hf" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/rnd) @@ -2879,7 +2903,9 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/rnd) "hh" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/rnd) @@ -3736,7 +3762,9 @@ /turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation/engi) "iY" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/kitchen) "iZ" = ( @@ -3744,7 +3772,9 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/kitchen) "ja" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/kitchen) "jb" = ( @@ -4069,11 +4099,15 @@ /turf/open/floor/plating/airless, /area/template_noop) "jS" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation) "jT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation) "jU" = ( @@ -4227,7 +4261,9 @@ /turf/open/floor/engine/airless, /area/ruin/space/has_grav/ancientstation/atmo) "ko" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating/airless, /area/template_noop) "kp" = ( @@ -4238,7 +4274,7 @@ dir = 6 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/showcase/oldpod, +/obj/structure/showcase/machinery/oldpod, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "kq" = ( @@ -4250,7 +4286,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/showcase/oldpod, +/obj/structure/showcase/machinery/oldpod, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "kr" = ( @@ -4329,7 +4365,9 @@ /turf/open/floor/engine/airless, /area/ruin/space/has_grav/ancientstation/atmo) "kB" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/template_noop) "kC" = ( @@ -4583,11 +4621,15 @@ /turf/closed/mineral/plasma, /area/ruin/unpowered) "li" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/proto) "lj" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/proto) "lk" = ( diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm index 237407f3e5..dd653c3947 100644 --- a/_maps/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm @@ -350,7 +350,6 @@ icon_state = "0-8" }, /obj/machinery/power/apc{ - cell_type = 2500; dir = 1; name = "Mining Drone Bay APC"; pixel_y = 24 @@ -848,7 +847,6 @@ d2 = 4 }, /obj/machinery/power/apc{ - cell_type = 2500; dir = 1; name = "Bridge APC"; pixel_y = 24 @@ -1227,10 +1225,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/onehalf/bridge) "dc" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/structure/cable{ d1 = 1; d2 = 2; diff --git a/_maps/RandomRuins/SpaceRuins/originalcontent.dmm b/_maps/RandomRuins/SpaceRuins/originalcontent.dmm index 73bf43342e..e55cee1581 100644 --- a/_maps/RandomRuins/SpaceRuins/originalcontent.dmm +++ b/_maps/RandomRuins/SpaceRuins/originalcontent.dmm @@ -541,12 +541,7 @@ /area/ruin/powered) "bB" = ( /obj/structure/easel, -/obj/item/paper/pamphlet{ - icon = 'icons/obj/fluff.dmi'; - icon_state = "painting4"; - info = "This picture depicts a crudely-drawn stickman firing a crudely-drawn gun."; - name = "Painting - 'BANG' " - }, +/obj/item/paper/pamphlet/ruin/originalcontent/stickman, /turf/open/indestructible/paper, /area/ruin/powered) "bC" = ( @@ -609,12 +604,7 @@ dir = 1 }, /obj/structure/easel, -/obj/item/paper/pamphlet{ - icon = 'icons/obj/fluff.dmi'; - icon_state = "painting1"; - info = "This picture depicts a sunny day on a lush hillside, set under a shaded tree."; - name = "Painting - 'Treeside' " - }, +/obj/item/paper/pamphlet/ruin/originalcontent/treeside, /turf/open/indestructible/paper, /area/ruin/powered) "bK" = ( @@ -716,12 +706,7 @@ dir = 8 }, /obj/structure/easel, -/obj/item/paper/pamphlet{ - icon = 'icons/obj/fluff.dmi'; - icon_state = "painting3"; - info = "This picture depicts a smiling clown. Something doesn't feel right about this.."; - name = "Painting - 'Pennywise' " - }, +/obj/item/paper/pamphlet/ruin/originalcontent/pennywise, /turf/open/indestructible/paper, /area/ruin/powered) "bX" = ( @@ -869,12 +854,7 @@ "cr" = ( /obj/structure/fluff/paper, /obj/structure/easel, -/obj/item/paper/pamphlet{ - icon = 'icons/obj/fluff.dmi'; - icon_state = "painting2"; - info = "This picture depicts a man yelling on a bridge for no apparent reason."; - name = "Painting - 'Hands-On-Face' " - }, +/obj/item/paper/pamphlet/ruin/originalcontent/yelling, /turf/open/indestructible/paper, /area/ruin/powered) "cs" = ( diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index d1f7f178fc..f577cbbf37 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -655,8 +655,7 @@ name = "Hotel Guest Room 3" }) "bN" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Guest Room APC"; pixel_y = -24 @@ -719,8 +718,7 @@ name = "Hotel Guest Room 4" }) "bT" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Guest Room APC"; pixel_y = -24 @@ -783,8 +781,7 @@ name = "Hotel Guest Room 5" }) "bZ" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Guest Room APC"; pixel_y = -24 @@ -847,8 +844,7 @@ name = "Hotel Guest Room 6" }) "cf" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Guest Room APC"; pixel_y = -24 @@ -1379,8 +1375,7 @@ name = "Hotel Guest Room 2" }) "dn" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Guest Room APC"; pixel_y = 25 @@ -1461,8 +1456,7 @@ name = "Hotel Guest Room 1" }) "dv" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Guest Room APC"; pixel_y = 25 @@ -1874,8 +1868,7 @@ /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/hotel/workroom) "eA" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Laundry APC"; pixel_y = -24 @@ -2080,8 +2073,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/hotel) "fh" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Kitchen APC"; pixel_y = -24 @@ -2874,8 +2866,7 @@ /turf/open/floor/plasteel/cafeteria, /area/ruin/space/has_grav/hotel/bar) "hA" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Staff Room APC"; pixel_y = -24 @@ -3261,8 +3252,7 @@ }, /area/ruin/space/has_grav/hotel/power) "iw" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Power Storage APC"; pixel_y = 25 @@ -3427,8 +3417,7 @@ }, /area/ruin/space/has_grav/hotel/power) "iU" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Security APC"; pixel_y = -24 @@ -3500,8 +3489,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/hotel/pool) "iZ" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Pool APC"; pixel_y = -24 @@ -3559,8 +3547,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Dock APC"; pixel_y = -24 @@ -4824,8 +4811,7 @@ /turf/open/floor/plasteel/neutral, /area/ruin/space/has_grav/hotel/custodial) "mJ" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Custodial APC"; pixel_y = -24 diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index f62787babf..e652a73e95 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -9,7 +9,9 @@ /turf/closed/wall/r_wall, /area/awaymission/centcomAway/cafe) "ad" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/cafe) "ae" = ( @@ -17,7 +19,9 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/cafe) "af" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/cafe) "ag" = ( @@ -101,7 +105,9 @@ }, /area/awaymission/centcomAway/cafe) "at" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/cafe) "au" = ( @@ -136,7 +142,9 @@ }, /area/awaymission/centcomAway/cafe) "aB" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/cafe) "aC" = ( @@ -223,7 +231,9 @@ }, /area/awaymission/centcomAway/maint) "aS" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/maint) "aT" = ( @@ -231,7 +241,9 @@ /turf/closed/wall/r_wall, /area/awaymission/centcomAway/maint) "aU" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/maint) "aV" = ( @@ -582,7 +594,9 @@ /turf/open/floor/plasteel/hydrofloor, /area/awaymission/centcomAway/cafe) "ci" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/maint) "cj" = ( @@ -632,7 +646,9 @@ /turf/open/floor/plasteel/hydrofloor, /area/awaymission/centcomAway/cafe) "cu" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/maint) "cv" = ( @@ -1016,11 +1032,15 @@ /turf/closed/wall/mineral/titanium, /area/awaymission/centcomAway/hangar) "dS" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/cafe) "dT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/cafe) "dU" = ( @@ -1178,7 +1198,9 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/maint) "ey" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/east, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/maint) "ez" = ( @@ -1387,7 +1409,9 @@ /turf/open/floor/plasteel/black, /area/awaymission/centcomAway/courtroom) "fn" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) "fo" = ( @@ -1395,7 +1419,9 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) "fp" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) "fq" = ( @@ -1415,7 +1441,9 @@ /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "fu" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "fv" = ( @@ -1423,11 +1451,15 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/general) "fw" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "fx" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "fy" = ( @@ -1618,11 +1650,15 @@ }, /area/awaymission/centcomAway/general) "gd" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 9 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "ge" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "gf" = ( @@ -1637,7 +1673,9 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/general) "gh" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 5 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "gi" = ( @@ -1808,7 +1846,9 @@ /turf/open/floor/plasteel/black, /area/awaymission/centcomAway/general) "gM" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "gN" = ( @@ -1868,7 +1908,9 @@ }, /area/awaymission/centcomAway/general) "gX" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "gY" = ( @@ -1973,11 +2015,15 @@ }, /area/awaymission/centcomAway/general) "hq" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/courtroom) "hr" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/courtroom) "hs" = ( @@ -1985,7 +2031,9 @@ /turf/open/floor/carpet, /area/awaymission/centcomAway/courtroom) "ht" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/courtroom) "hu" = ( @@ -2049,7 +2097,9 @@ /turf/open/floor/plasteel/black, /area/awaymission/centcomAway/courtroom) "hF" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/courtroom) "hG" = ( @@ -2279,7 +2329,9 @@ /turf/closed/wall/r_wall, /area/awaymission/centcomAway/courtroom) "ix" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/courtroom) "iy" = ( @@ -2309,7 +2361,9 @@ }, /area/awaymission/centcomAway/hangar) "iC" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "iD" = ( @@ -2658,7 +2712,9 @@ }, /area/awaymission/centcomAway/general) "jH" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plasteel{ name = "plating" }, @@ -2670,13 +2726,17 @@ }, /area/awaymission/centcomAway/general) "jJ" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plasteel{ name = "plating" }, /area/awaymission/centcomAway/general) "jK" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /obj/structure/window/reinforced, /turf/open/floor/plating, /area/awaymission/centcomAway/general) @@ -2736,7 +2796,9 @@ /turf/open/floor/plasteel, /area/awaymission/centcomAway/general) "jT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "jU" = ( @@ -2785,7 +2847,9 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) "kb" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "kc" = ( @@ -2846,12 +2910,16 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/general) "kl" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /obj/structure/window/reinforced, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "km" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "kn" = ( @@ -2904,7 +2972,9 @@ }, /area/awaymission/centcomAway/general) "kv" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 10 + }, /obj/structure/window/reinforced{ dir = 4 }, @@ -3015,7 +3085,9 @@ }, /area/awaymission/centcomAway/general) "kM" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) "kN" = ( @@ -3218,7 +3290,9 @@ /turf/open/floor/plasteel/black, /area/awaymission/centcomAway/thunderdome) "lw" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/thunderdome) "lx" = ( @@ -3226,7 +3300,9 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/thunderdome) "ly" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/centcomAway/thunderdome) "lz" = ( diff --git a/_maps/RandomZLevels/challenge.dmm b/_maps/RandomZLevels/challenge.dmm index a50ac00aab..f22805b750 100644 --- a/_maps/RandomZLevels/challenge.dmm +++ b/_maps/RandomZLevels/challenge.dmm @@ -248,11 +248,15 @@ /turf/open/floor/plating/airless, /area/awaymission/challenge/main) "aY" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/west, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/awaymission/challenge/main) "aZ" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/awaymission/challenge/main) "ba" = ( @@ -874,7 +878,9 @@ /turf/open/space, /area/space) "cM" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 9 + }, /turf/open/floor/plating, /area/awaymission/challenge/end) "cN" = ( @@ -882,11 +888,15 @@ /turf/open/floor/plating, /area/awaymission/challenge/end) "cO" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 5 + }, /turf/open/floor/plating, /area/awaymission/challenge/end) "cP" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/challenge/end) "cQ" = ( @@ -1044,7 +1054,9 @@ /turf/open/floor/plasteel/black, /area/awaymission/challenge/end) "dl" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/awaymission/challenge/end) "dm" = ( diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 22f0169437..4c9a995864 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -1922,11 +1922,7 @@ name = "Syndicate Outpost" }) "cG" = ( -/obj/structure/grille{ - density = 0; - broken = 1; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/stack/rods, /obj/item/stack/rods, /obj/item/shard, @@ -1973,8 +1969,7 @@ }) "cK" = ( /obj/structure/cable, -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 2; locked = 1; name = "Worn-out APC"; @@ -4886,11 +4881,7 @@ name = "MO19 Research" }) "gE" = ( -/obj/structure/grille{ - density = 0; - broken = 1; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/stack/rods, /obj/item/stack/rods, /obj/item/shard, @@ -4917,8 +4908,7 @@ }) "gG" = ( /obj/structure/cable, -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 4; locked = 0; name = "Worn-out APC"; @@ -5156,22 +5146,10 @@ }) "gW" = ( /obj/structure/filingcabinet/filingcabinet, -/obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_hivemind{ - info = "Researcher: Dr. Mark Douglas
Date: 17/06/2554

Report:
Earlier today we have observed a new phenomenon with our subjects. While feeding them our last monkey subject and throwing out the box, the aliens merely looked at us instead of infecting the monkey right away. They looked to be collectively distressed as they would no longer be given hosts, where instead we would move to the next phase of the experiment. When I glanced at the gas tanks and piping leading to their cell, I looked back to see all of them were up against the glass, even the queen! It was as if they all understood what was going to happen, even though we knew only the queen had the cognitive capability to do so.

The only explanation for this is a form of communication between the aliens, but we have seen no such action take place anywhere in the cell until now. We also know that regular drone and hunter xenomorphs have no personality or instinct to survive by themselves. Perhaps the queen has a direct link to them? A form of a commander or overseer that controls their every move? A hivemind?"; - name = "The Hivemind Hypothesis" - }, -/obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_behavior{ - info = "Researcher: Dr. Sakuma Sano
Date: 08/06/2554

Report:
The xenomorphs we have come to study here are a remarkable species. They are almost universally aggressive across all castes, showing no remorse or guilt or pause before or after acts of violence. They appear to be a species entirely designed to kill. Oddly enough, even their method of reproduction is a brutal two-for-one method of birthing a new xenomorph and killing its host.

The lone xenomorph we studied only five days ago showed little sign of intelligence. Only a simple drone that flung itself at the safety glass and shields repeatedly and thankfully without success. Once the drone molted into a queen, it became much more calm and calculating, merely looking at us and waiting while building its nest. As the hive grew in size and in numbers, so too did the intelligence of the common hunter and drone. We are still researching how they can communicate with one another and the relationship between the different castes and the queen. We will continue to update our research as we learn more about the species."; - name = "A Preliminary Study of Alien Behavior" - }, -/obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_castes{ - info = "Researcher: Dr. Mark Douglas
Date: 06/06/2554

Report:
While observing the growing number of aliens in the containment cell, we began to notice subtle differences that were consistently repeating. Like ants, these creatures clearly have different specialized variations that determine their roles in the hive. We have dubbed the three currently observed castes as Hunters, Drones, and Sentinels.

Hunters have been observed to be by far the most aggressive and agile of the three, constantly running on every surface and frequently swiping at the windows. They are also remarkably good at camouflaging themselves in darkness and on their resin structures, appearing almost invisible to the unwary observer. They are always the first to reach the monkeys we send in leading us to believe that this caste is primarily used for finding and retrieving hosts.

Drones on the other hand are much more docile and seem more shy by comparison, though not any less aggressive than the other castes. They have been observed to have a much wider head and lack dorsal tubes. They have shown to be less agile and visibly more fragile than any other caste. The drone however has never been observed to interact with the monkeys directly and instead preferring maintenance of the hive by building walls of resin and moving eggs around the nest. As far as we know, we have only ever observed a drone become a queen, and we have no way of knowing if the other castes have that capability.

Lastly, we have the Sentinels, which appear at first glance to be the guards of the hive. They have so far been only observed to remain near the queen and the eggs, frequently curled up against the walls. We have only observed one instance where they have interacted with a monkey who strayed too closely to the queen, and was pounced and held down immediately until it was applied with a facehugger. Their lack of movement makes it difficult to determine their exact purpose as guards, sentries, or other role."; - name = "The Xenomorph 'Castes'" - }, -/obj/item/paper/fluff/awaymissions/moonoutpost19/research/larva_autopsy{ - info = "Researcher: Dr. Mark Douglas
Date: 04/06/2554

Report:
After an extremely dangerous, time consuming and costly dissection, we have managed to record and identify several of the organs inside of the first stage of the xenomorph cycle: the larva. This procedure took an extensive amount of time because these creatures have incredibly, almost-comically acidic blood that can melt through almost anything in a few moments. We had to use over a dozen scalpels and retractors to complete the autopsy.

The larva seems to possess far fewer and quite different organs than that of a human. There is a stomach, with no digestive tract, a heart, which seems to lack any blood-oxygen circulation purpose, and an elongated brain, even though its as dumb as any large cat. It also lacks any liver, kidneys, or other basic organs.

We can't determine the exact nature of how these creatures grow, nor if they gain organs as they become adults. The larger breeds of xenomorph are too dangerous to kill and capture to give us an accurate answer to these questions. All that we can conclude is that being able to function with so little and yet be so deadly means that these creatures are highly evolved and likely to be extremely durable to various hazards that would otherwise be lethal to humans."; - name = "Larva Xenomorph Autopsy Report" - }, +/obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_hivemind, +/obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_behavior, +/obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_castes, +/obj/item/paper/fluff/awaymissions/moonoutpost19/research/larva_autopsy, /obj/structure/alien/weeds, /turf/open/floor/plasteel/white, /area/awaycontent/a2{ @@ -5537,11 +5515,7 @@ name = "MO19 Research" }) "hx" = ( -/obj/structure/grille{ - density = 0; - broken = 1; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/stack/rods, /obj/item/stack/rods, /obj/item/shard{ @@ -6792,7 +6766,6 @@ "jq" = ( /obj/item/twohanded/required/kirbyplants{ desc = "A plastic potted plant."; - layer = 4.1; pixel_y = 3 }, /turf/open/floor/plasteel{ @@ -6981,8 +6954,7 @@ icon_state = "0-2"; d2 = 2 }, -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 1; locked = 0; name = "Worn-out APC"; @@ -7802,11 +7774,7 @@ }) "kP" = ( /obj/item/stack/rods, -/obj/structure/grille{ - density = 0; - broken = 1; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/stack/rods, /obj/item/shard{ icon_state = "medium" @@ -7820,11 +7788,7 @@ name = "MO19 Arrivals" }) "kQ" = ( -/obj/structure/grille{ - density = 0; - broken = 1; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/stack/rods, /turf/open/floor/plating{ broken = 1; @@ -9335,11 +9299,7 @@ name = "MO19 Arrivals" }) "ns" = ( -/obj/structure/grille{ - density = 0; - broken = 1; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/stack/rods, /turf/open/floor/plating{ heat_capacity = 1e+006 @@ -9485,11 +9445,7 @@ poweralm = 0 }) "nD" = ( -/obj/structure/grille{ - density = 0; - broken = 1; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/stack/rods, /obj/item/shard, /obj/effect/decal/cleanable/blood/tracks{ @@ -9824,7 +9780,6 @@ "ob" = ( /obj/item/twohanded/required/kirbyplants{ desc = "A plastic potted plant."; - layer = 4.1; pixel_y = 3 }, /turf/open/floor/plasteel/neutral/side{ @@ -9948,11 +9903,7 @@ poweralm = 0 }) "oj" = ( -/obj/structure/grille{ - density = 0; - broken = 1; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/mineral/titanium, /area/awaycontent/a3{ always_unpowered = 1; diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 7da8026638..9a85544ca9 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -119,7 +119,6 @@ "ax" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-20"; - layer = 4.1; pixel_y = 3 }, /turf/open/floor/plasteel/whiteyellow/corner{ @@ -371,9 +370,8 @@ icon_state = "0-2"; d2 = 2 }, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/highcap/ten_k{ auto_name = 1; - cell_type = 9000; dir = 4; name = "Engineering APC"; pixel_x = 27; @@ -660,8 +658,7 @@ /turf/open/floor/plasteel/black, /area/awaymission/research/interior/gateway) "cb" = ( -/obj/machinery/power/apc{ - cell_type = 12000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 4; name = "Gateway APC"; pixel_x = 24 @@ -988,8 +985,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Genetics APC"; pixel_x = 24 @@ -1320,8 +1316,7 @@ /area/awaymission/research/interior/secure) "dN" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-16"; - layer = 4.1 + icon_state = "plant-16" }, /turf/open/floor/plasteel/darkpurple, /area/awaymission/research/interior/genetics) @@ -1718,8 +1713,7 @@ /turf/open/floor/plasteel/whitepurple, /area/awaymission/research/interior) "fa" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Cryostatis APC"; pixel_x = 24 @@ -1889,8 +1883,7 @@ /turf/open/floor/plasteel/black, /area/awaymission/research/interior/secure) "fy" = ( -/obj/machinery/power/apc{ - cell_type = 12000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 4; name = "Vault APC"; pixel_x = 24 @@ -2829,8 +2822,7 @@ /area/awaymission/research/interior/genetics) "hV" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel/darkpurple, /area/awaymission/research/interior/genetics) @@ -3057,8 +3049,7 @@ /turf/open/floor/plating, /area/awaymission/research/interior/maint) "iw" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Genetics APC"; pixel_x = 24 @@ -3312,8 +3303,7 @@ /area/awaymission/research/interior/dorm) "jm" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-14"; - layer = 4.1 + icon_state = "plant-14" }, /turf/open/floor/plasteel/yellowsiding{ dir = 9 @@ -3655,8 +3645,7 @@ }, /area/awaymission/research/interior/medbay) "kp" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Dorms APC"; pixel_x = 24 @@ -4060,8 +4049,7 @@ /area/awaymission/research/interior/medbay) "ly" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-16"; - layer = 4.1 + icon_state = "plant-16" }, /turf/open/floor/plasteel/yellowsiding{ dir = 10 @@ -4466,9 +4454,7 @@ }, /area/awaymission/research/interior/escapepods) "mJ" = ( -/obj/item/twohanded/required/kirbyplants{ - layer = 4.1 - }, +/obj/item/twohanded/required/kirbyplants, /turf/open/floor/plasteel/whitegreen/side{ dir = 8 }, @@ -4502,8 +4488,7 @@ /area/awaymission/research/interior/escapepods) "mN" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "applebush"; - layer = 4.1 + icon_state = "applebush" }, /turf/open/floor/plasteel/whitegreen/side{ dir = 4 diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index a18c9f18c8..e77a80ec67 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -633,12 +633,7 @@ }, /area/awaymission/snowdin/base) "bC" = ( -/obj/structure/showcase{ - desc = "A strange machine thats supposedly used to help pick up and decrypt wave signals. "; - icon = 'icons/obj/machines/telecomms.dmi'; - icon_state = "processor"; - name = "subsystem signal decrypter" - }, +/obj/structure/showcase/machinery/signal_decrypter, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/snow }, @@ -2498,12 +2493,7 @@ /area/awaymission/snowdin/post) "gL" = ( /obj/machinery/light/small, -/obj/structure/showcase{ - desc = "A strange machine thats supposedly used to help pick up and decrypt wave signals. "; - icon = 'icons/obj/machines/telecomms.dmi'; - icon_state = "processor"; - name = "subsystem signal decrypter" - }, +/obj/structure/showcase/machinery/signal_decrypter, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/snow }, @@ -3909,10 +3899,7 @@ }, /area/awaymission/snowdin) "kA" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating{ baseturf = /turf/open/floor/plating/asteroid/snow; icon = 'icons/turf/snow.dmi'; diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index 1b803966d3..4339d91cfa 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -842,7 +842,9 @@ /turf/open/floor/plasteel, /area/awaymission/spacebattle/cruiser) "cY" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/awaymission/spacebattle/cruiser) "cZ" = ( @@ -865,7 +867,9 @@ /turf/open/floor/mineral/plastitanium, /area/awaymission/spacebattle/cruiser) "dd" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /obj/structure/window/reinforced, /turf/open/floor/plating, /area/awaymission/spacebattle/cruiser) @@ -1002,7 +1006,9 @@ /turf/open/floor/plating/airless, /area/awaymission/spacebattle/cruiser) "dE" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 9 + }, /turf/open/floor/engine, /area/awaymission/spacebattle/cruiser) "dF" = ( @@ -1010,11 +1016,15 @@ /turf/open/floor/engine, /area/awaymission/spacebattle/cruiser) "dG" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 1 + }, /turf/open/floor/engine, /area/awaymission/spacebattle/cruiser) "dH" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 5 + }, /turf/open/floor/engine, /area/awaymission/spacebattle/cruiser) "dI" = ( @@ -1109,7 +1119,9 @@ /turf/open/floor/plating/airless, /area/awaymission/spacebattle/cruiser) "dY" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/engine, /area/awaymission/spacebattle/cruiser) "dZ" = ( @@ -1130,7 +1142,9 @@ }, /area/awaymission/spacebattle/cruiser) "eb" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/spacebattle/cruiser) "ec" = ( @@ -1296,7 +1310,9 @@ /turf/open/floor/plasteel/blue, /area/awaymission/spacebattle/cruiser) "eF" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/awaymission/spacebattle/cruiser) "eG" = ( @@ -1345,7 +1361,9 @@ /turf/open/floor/plasteel/blue, /area/awaymission/spacebattle/cruiser) "eQ" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/spacebattle/cruiser) "eR" = ( @@ -2063,7 +2081,9 @@ /turf/open/floor/plating/airless, /area/awaymission/spacebattle/cruiser) "hi" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/plating, /area/awaymission/spacebattle/syndicate7) "hj" = ( @@ -2122,7 +2142,9 @@ /turf/closed/wall/r_wall, /area/awaymission/spacebattle/cruiser) "hu" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/plating, /area/awaymission/spacebattle/syndicate7) "hv" = ( @@ -2912,7 +2934,9 @@ /turf/open/floor/plasteel/white, /area/awaymission/spacebattle/cruiser) "ki" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/engine/vacuum, /area/awaymission/spacebattle/cruiser) "kj" = ( @@ -2941,7 +2965,9 @@ /turf/open/floor/plating, /area/awaymission/spacebattle/cruiser) "ko" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /turf/open/floor/engine/vacuum, /area/awaymission/spacebattle/cruiser) "kp" = ( @@ -2958,7 +2984,9 @@ /turf/open/floor/engine/vacuum, /area/awaymission/spacebattle/cruiser) "kr" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, /turf/open/floor/engine/vacuum, /area/awaymission/spacebattle/cruiser) "ks" = ( @@ -2983,11 +3011,13 @@ /turf/open/floor/engine/vacuum, /area/awaymission/spacebattle/cruiser) "kw" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 10 + }, /turf/open/floor/engine/vacuum, /area/awaymission/spacebattle/cruiser) "kx" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/one_side, +/obj/effect/spawner/structure/window/hollow/reinforced/directional, /turf/open/floor/engine/vacuum, /area/awaymission/spacebattle/cruiser) "ky" = ( @@ -2995,7 +3025,9 @@ /turf/open/floor/engine/vacuum, /area/awaymission/spacebattle/cruiser) "kz" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/corner, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 6 + }, /turf/open/floor/engine/vacuum, /area/awaymission/spacebattle/cruiser) "kA" = ( diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index a22555c6c8..bdf5091d25 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -3159,8 +3159,7 @@ dir = 1; network = list("UO45") }, -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 2; locked = 0; name = "Hydroponics APC"; @@ -6240,8 +6239,7 @@ icon_state = "0-4"; d2 = 4 }, -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 1; locked = 0; name = "UO45 Bar APC"; @@ -7619,8 +7617,7 @@ d2 = 8; icon_state = "0-8" }, -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 2; locked = 0; name = "UO45 Research Division APC"; @@ -8313,8 +8310,7 @@ }) "mE" = ( /obj/structure/cable, -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 2; locked = 0; name = "UO45 Gateway APC"; @@ -11932,8 +11928,7 @@ icon_state = "0-4"; d2 = 4 }, -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 8; locked = 1; name = "UO45 Engineering APC"; @@ -12695,8 +12690,7 @@ }) "sj" = ( /obj/structure/cable, -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 2; locked = 0; name = "UO45 Mining APC"; @@ -14194,8 +14188,7 @@ /obj/machinery/atmospherics/components/trinary/filter{ dir = 4; filter_type = "n2"; - on = 1; - req_access = null + on = 1 }, /turf/open/floor/plasteel/red/side{ dir = 10; @@ -14244,8 +14237,7 @@ /obj/machinery/atmospherics/components/trinary/filter{ dir = 4; filter_type = "o2"; - on = 1; - req_access = null + on = 1 }, /turf/open/floor/plasteel/blue/side{ dir = 10; @@ -17526,11 +17518,7 @@ poweralm = 0 }) "yN" = ( -/obj/structure/grille{ - density = 0; - broken = 1; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/mineral/titanium/blue, /area/awaycontent/a7{ always_unpowered = 1; diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 61d5c4ee49..139f974861 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -171,9 +171,7 @@ /turf/open/floor/engine/cult, /area/awaymission/wwvault) "aL" = ( -/obj/item/paper/fluff/awaymissions/wildwest/grinder{ - info = "meat grinder requires sacri" - }, +/obj/item/paper/fluff/awaymissions/wildwest/grinder, /turf/open/floor/plasteel/cult{ name = "engraved floor" }, @@ -449,7 +447,9 @@ /obj/structure/window/reinforced{ icon_state = "fwindow" }, -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/west, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 8 + }, /turf/open/floor/plating/ironsand{ icon_state = "ironsand1" }, @@ -551,7 +551,9 @@ icon_state = "fwindow"; dir = 8 }, -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 1 + }, /turf/open/floor/plating/ironsand{ icon_state = "ironsand1" }, @@ -872,7 +874,9 @@ icon_state = "fwindow"; dir = 4 }, -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 1 + }, /turf/open/floor/plating/ironsand{ icon_state = "ironsand1" }, @@ -1698,7 +1702,7 @@ icon_state = "fwindow"; dir = 4 }, -/obj/effect/spawner/structure/window/hollow/reinforced/one_side, +/obj/effect/spawner/structure/window/hollow/reinforced/directional, /turf/open/floor/plasteel, /area/awaymission/wwrefine) "fB" = ( @@ -2143,7 +2147,9 @@ /turf/open/floor/mineral/titanium/yellow, /area/awaymission/wwrefine) "gX" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /obj/structure/window/reinforced{ icon_state = "fwindow" }, diff --git a/_maps/basemap.dm b/_maps/basemap.dm index d11b527aa3..9e5c223f52 100644 --- a/_maps/basemap.dm +++ b/_maps/basemap.dm @@ -3,16 +3,17 @@ #include "map_files\generic\Space.dmm" #include "map_files\generic\SpaceDock.dmm" #include "map_files\Mining\Lavaland.dmm" +#include "map_files\generic\City_of_Cogs.dmm" #ifdef ALL_MAPS #include "map_files\debug\runtimestation.dmm" #include "map_files\Deltastation\DeltaStation2.dmm" #include "map_files\MetaStation\MetaStation.dmm" #include "map_files\OmegaStation\OmegaStation.dmm" -#include "map_files\PubbyStation\PubbyStation.dmm" +// #include "map_files\PubbyStation\PubbyStation.dmm" #include "map_files\BoxStation\BoxStation.dmm" #ifdef TRAVISBUILDING #include "templates.dm" #endif -#endif \ No newline at end of file +#endif diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 95f1cb283c..1ef76788eb 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -851,8 +851,7 @@ /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "acm" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; areastring = "/area/ai_monitored/security/armory"; name = "Armory APC"; @@ -2408,7 +2407,7 @@ dir = 4; id = "pod3"; name = "escape pod 3"; - port_angle = 180; + port_direction = 2; preferred_direction = 4 }, /turf/open/floor/mineral/titanium/blue, @@ -2423,8 +2422,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_y = 32 }, /turf/open/floor/mineral/titanium/blue, @@ -3245,9 +3242,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /obj/item/reagent_containers/blood/empty, /turf/open/floor/plasteel/whitered/side{ dir = 5 @@ -6125,7 +6120,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "ank" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ req_access_txt = "12" }, /turf/open/floor/plating, @@ -6369,7 +6364,7 @@ height = 5; id = "laborcamp"; name = "labor camp shuttle"; - port_angle = 90; + port_direction = 4; width = 9 }, /obj/docking_port/stationary{ @@ -6899,7 +6894,7 @@ /area/security/detectives_office) "ape" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering{ +/obj/machinery/door/airlock/engineering/abandoned{ name = "Vacant Office B"; req_access_txt = "32" }, @@ -7055,7 +7050,7 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "apx" = ( -/obj/machinery/door/airlock/atmos{ +/obj/machinery/door/airlock/atmos/abandoned{ name = "Atmospherics Maintenance"; req_access_txt = "12;24" }, @@ -7446,14 +7441,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/crew_quarters/fitness) -"aqt" = ( -/obj/effect/landmark/syndicate_breach_area, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness) "aqu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -8058,8 +8045,6 @@ /area/lawoffice) "asa" = ( /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -8272,7 +8257,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "asy" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Firefighting equipment"; req_access_txt = "12" }, @@ -8646,7 +8631,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "atB" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ req_access_txt = "12" }, /turf/open/floor/plating, @@ -9081,7 +9066,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "auG" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ req_access_txt = "12" }, /obj/structure/cable{ @@ -9271,7 +9256,7 @@ /turf/open/floor/plating, /area/maintenance/fore) "avf" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Chemical Storage"; req_access_txt = "12" }, @@ -10053,7 +10038,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/door/airlock/engineering{ +/obj/machinery/door/airlock/engineering/abandoned{ name = "Electrical Maintenance"; req_access_txt = "11" }, @@ -10229,7 +10214,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "axj" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Firefighting equipment"; req_access_txt = "12" }, @@ -13341,6 +13326,7 @@ id = "chapelgun"; name = "Chapel Launcher Door" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/chapel/main) "aEo" = ( @@ -14783,7 +14769,6 @@ /turf/open/floor/plating, /area/chapel/main) "aHr" = ( -/obj/effect/landmark/marauder_entry, /turf/open/space, /area/space) "aHs" = ( @@ -14800,8 +14785,6 @@ /area/shuttle/arrival) "aHu" = ( /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = 32 }, /turf/open/floor/plasteel/white/corner{ @@ -16485,7 +16468,7 @@ height = 7; id = "arrival"; name = "arrival shuttle"; - port_angle = -90; + port_direction = 8; preferred_direction = 8; width = 15 }, @@ -17311,8 +17294,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = 32 }, /turf/open/floor/plasteel/bar, @@ -18092,10 +18073,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aPE" = ( -/obj/machinery/status_display{ - density = 0; - layer = 4 - }, +/obj/machinery/status_display, /turf/closed/wall, /area/crew_quarters/locker) "aPF" = ( @@ -18207,10 +18185,7 @@ d2 = 8; icon_state = "0-8" }, -/obj/machinery/status_display{ - density = 0; - layer = 4 - }, +/obj/machinery/status_display, /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; @@ -18249,10 +18224,7 @@ icon_state = "0-4"; d2 = 4 }, -/obj/machinery/status_display{ - density = 0; - layer = 4 - }, +/obj/machinery/status_display, /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; @@ -19446,8 +19418,6 @@ "aTr" = ( /obj/machinery/door/firedoor, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = 32 }, /turf/open/floor/plasteel, @@ -20943,8 +20913,7 @@ }, /area/bridge) "aWW" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Bridge APC"; areastring = "/area/bridge"; @@ -21395,7 +21364,7 @@ /turf/open/floor/carpet, /area/chapel/main) "aXX" = ( -/obj/machinery/door/airlock/engineering{ +/obj/machinery/door/airlock/engineering/abandoned{ name = "Vacant Office A"; req_access_txt = "32" }, @@ -22745,7 +22714,6 @@ /area/quartermaster/storage) "bbu" = ( /obj/machinery/power/apc{ - cell_type = 2500; dir = 1; name = "Captain's Office APC"; areastring = "/area/crew_quarters/heads/captain"; @@ -23453,8 +23421,6 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = -32 }, /turf/open/floor/plasteel/blue/corner{ @@ -23802,8 +23768,7 @@ /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/ai_upload) "bed" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Upload APC"; areastring = "/area/ai_monitored/turret_protected/ai_upload"; @@ -24403,10 +24368,7 @@ /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai_upload) "bfw" = ( -/obj/machinery/status_display{ - density = 0; - layer = 4 - }, +/obj/machinery/status_display, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai_upload) "bfx" = ( @@ -24458,7 +24420,7 @@ /area/crew_quarters/heads/captain) "bfE" = ( /obj/structure/table/wood, -/obj/item/pinpointer, +/obj/item/pinpointer/nuke, /obj/item/disk/nuclear, /obj/item/storage/secure/safe{ pixel_x = 35; @@ -24703,7 +24665,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "bgp" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/white, @@ -26465,8 +26427,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = 32 }, /obj/machinery/aug_manipulator, @@ -26550,7 +26510,6 @@ /area/quartermaster/office) "bkx" = ( /obj/machinery/status_display{ - density = 0; pixel_y = 2; supply_display = 1 }, @@ -26903,7 +26862,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "blh" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/eastright{ @@ -26981,7 +26940,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "blp" = ( /obj/machinery/power/apc{ dir = 8; @@ -27015,7 +26974,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "blr" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -27435,8 +27394,6 @@ }, /obj/machinery/door/firedoor, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = -32 }, /turf/open/floor/plasteel/brown/corner{ @@ -27937,6 +27894,7 @@ id = "trash"; name = "disposal bay door" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/maintenance/disposal) "bnw" = ( @@ -29072,7 +29030,7 @@ }, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "bpR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment{ @@ -29906,7 +29864,7 @@ }, /area/science/explab) "brE" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ req_access_txt = "0"; req_one_access_txt = "8;12" }, @@ -30357,8 +30315,6 @@ /area/medical/medbay/central) "bsz" = ( /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = -32 }, /turf/open/floor/plasteel/white/side{ @@ -31912,7 +31868,6 @@ }, /obj/machinery/light, /obj/machinery/status_display{ - density = 0; pixel_y = -30; supply_display = 1 }, @@ -32546,7 +32501,7 @@ height = 24; id = "syndicate"; name = "syndicate infiltrator"; - port_angle = 0; + port_direction = 1; roundstart_move = "syndicate_away"; width = 18 }, @@ -34180,7 +34135,6 @@ pixel_y = -35 }, /obj/machinery/status_display{ - density = 0; pixel_x = -32; supply_display = 1 }, @@ -36558,7 +36512,7 @@ /turf/open/floor/plasteel, /area/quartermaster/miningdock) "bGo" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Firefighting equipment"; req_access_txt = "12" }, @@ -37441,8 +37395,6 @@ "bIe" = ( /obj/structure/disposalpipe/segment, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -37967,7 +37919,7 @@ height = 5; id = "mining"; name = "mining shuttle"; - port_angle = 90; + port_direction = 4; width = 7 }, /obj/docking_port/stationary{ @@ -38895,7 +38847,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "bKU" = ( -/obj/machinery/door/airlock/engineering{ +/obj/machinery/door/airlock/engineering/abandoned{ name = "Construction Area"; req_access_txt = "32" }, @@ -39083,6 +39035,7 @@ id = "toxinsdriver"; name = "toxins launcher bay door" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/science/mixing) "bLm" = ( @@ -40584,7 +40537,6 @@ "bOP" = ( /obj/structure/table/glass, /obj/structure/reagent_dispensers/virusfood{ - density = 0; pixel_x = -30 }, /obj/item/book/manual/wiki/infections{ @@ -41448,8 +41400,7 @@ /area/science/misc_lab) "bQV" = ( /obj/machinery/atmospherics/components/trinary/filter{ - dir = 4; - req_access = null + dir = 4 }, /turf/open/floor/engine, /area/science/misc_lab) @@ -42341,8 +42292,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bSX" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Virology APC"; areastring = "/area/medical/virology"; @@ -42583,7 +42533,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bTw" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ req_access_txt = "12" }, /obj/machinery/atmospherics/pipe/simple/general/hidden{ @@ -43924,8 +43874,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Telecomms Server APC"; areastring = "/area/tcommsat/server"; @@ -44808,7 +44757,7 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/port/aft) "bYy" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Incinerator Access"; req_access_txt = "12" }, @@ -46081,8 +46030,7 @@ /obj/structure/closet/secure_closet/engineering_chief{ req_access_txt = "0" }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "CE Office APC"; areastring = "/area/crew_quarters/heads/chief"; @@ -46159,7 +46107,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "cbv" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Research Delivery access"; req_access_txt = "12" }, @@ -46304,7 +46252,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "cbO" = ( -/obj/machinery/door/airlock/atmos{ +/obj/machinery/door/airlock/atmos/abandoned{ name = "Atmospherics Maintenance"; req_access_txt = "12;24" }, @@ -46477,7 +46425,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Construction Area Maintenance"; req_access_txt = "32" }, @@ -47850,7 +47798,7 @@ /turf/open/floor/circuit/killroom, /area/science/xenobiology) "cfs" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Air Supply Maintenance"; req_access_txt = "12" }, @@ -47875,7 +47823,7 @@ /turf/closed/wall/r_wall, /area/science/misc_lab) "cfv" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Firefighting equipment"; req_access_txt = "12" }, @@ -49118,8 +49066,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cib" = ( -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 1; name = "Engineering APC"; areastring = "/area/engine/engineering"; @@ -49156,8 +49103,7 @@ dir = 1 }, /obj/structure/reagent_dispensers/watertank, -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 1; name = "Engineering APC"; areastring = "/area/engine/engineering"; @@ -50080,7 +50026,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "ckm" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Biohazard Disposals"; req_access_txt = "12" }, @@ -52688,7 +52634,7 @@ dir = 4; id = "pod4"; name = "escape pod 4"; - port_angle = 180; + port_direction = 2; preferred_direction = 4 }, /turf/open/floor/mineral/titanium/blue, @@ -52703,8 +52649,6 @@ dir = 8 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_y = 32 }, /turf/open/floor/mineral/titanium/blue, @@ -52754,7 +52698,7 @@ /turf/open/space, /area/maintenance/disposal/incinerator) "cpR" = ( -/obj/machinery/door/airlock{ +/obj/machinery/door/airlock/abandoned{ name = "Observatory Access" }, /turf/open/floor/plating, @@ -52995,7 +52939,7 @@ dir = 8; id = "pod2"; name = "escape pod 2"; - port_angle = 180 + port_direction = 2 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_2) @@ -54600,13 +54544,8 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/atmos) "cup" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 8; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2 }, @@ -54631,13 +54570,8 @@ }, /area/ai_monitored/turret_protected/aisat/atmos) "cur" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 4; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2 }, @@ -54646,13 +54580,8 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "cus" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 8; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2 }, @@ -54689,13 +54618,8 @@ /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/aisat_interior) "cuv" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 4; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2 }, @@ -55811,8 +55735,7 @@ d2 = 8; icon_state = "0-8" }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "AI Chamber APC"; areastring = "/area/ai_monitored/turret_protected/ai"; @@ -56062,8 +55985,6 @@ dir = 8 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_y = 32 }, /turf/open/floor/mineral/titanium/blue, @@ -56189,7 +56110,7 @@ height = 13; id = "ferry"; name = "ferry shuttle"; - port_angle = 0; + port_direction = 1; preferred_direction = 4; roundstart_move = "ferry_away"; width = 5 @@ -56213,7 +56134,7 @@ dir = 8; id = "pod1"; name = "escape pod 1"; - port_angle = 180 + port_direction = 2 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) @@ -56382,7 +56303,7 @@ id = "whiteship"; launch_status = 0; name = "NT Medical Ship"; - port_angle = -90; + port_direction = 8; preferred_direction = 4; roundstart_move = "whiteship_away"; timid = null; @@ -56617,7 +56538,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/aft) "cyL" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ req_access_txt = "12" }, /obj/structure/cable{ @@ -56992,8 +56913,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_y = 32 }, /turf/open/floor/mineral/titanium/blue, @@ -57591,13 +57510,8 @@ d2 = 2; icon_state = "1-2" }, -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 8; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2 }, @@ -57607,13 +57521,8 @@ /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/ai) "cAW" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 4; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2 }, @@ -60254,7 +60163,7 @@ icon_state = "2-4" }, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "cHE" = ( /obj/machinery/door/airlock/maintenance{ name = "Mech Bay Maintenance"; @@ -60916,7 +60825,7 @@ height = 24; id = "syndicate"; name = "syndicate infiltrator"; - port_angle = 0; + port_direction = 1; roundstart_move = "syndicate_away"; width = 18 }, @@ -62503,7 +62412,6 @@ /area/quartermaster/sorting) "cNL" = ( /obj/machinery/power/apc{ - cell_type = 2500; dir = 1; name = "Central Maintenance APC"; areastring = "/area/maintenance/central"; @@ -62606,7 +62514,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "cNV" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ req_access_txt = "0"; req_one_access_txt = "8;12" }, @@ -63930,6 +63838,191 @@ dir = 4 }, /area/construction/mining/aux_base) +"cTF" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cTG" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cTH" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"cTI" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"cTJ" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTK" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel/black, +/area/medical/morgue) +"cTM" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Morgue Maintenance APC"; + areastring = "/area/maintenance/department/medical/morgue"; + pixel_x = 26 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/black, +/area/medical/morgue) +"cTN" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTS" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTT" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTU" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTV" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) (1,1,1) = {" aaa @@ -83888,7 +83981,7 @@ bHE bYu bZk bCq -bTz +cTF bCq bCq bCq @@ -85184,7 +85277,7 @@ bCq bCq bCq bCq -bTz +cTF bCq bLv bLv @@ -86193,7 +86286,7 @@ bLv bPZ bHE bHE -bTz +cTF bHE bLv aoV @@ -100778,7 +100871,7 @@ aaa aaa aaa aaa -aqt +aqs aro aro aro @@ -103642,7 +103735,7 @@ bfL bhp biB biB -biB +cTL bkU bmX bpE @@ -103899,7 +103992,7 @@ bfL bhq bhm bkb -bhm +cTM bla bmZ bpH @@ -104414,7 +104507,7 @@ bfS biC bkd bfS -bKH +cTO bmZ bpJ brc @@ -104928,7 +105021,7 @@ bfS biE bkf bfS -bKH +cTP bmZ bpL bre @@ -105185,7 +105278,7 @@ bfS biD bke bfS -bKH +cTQ bmZ bpK brd @@ -105442,7 +105535,7 @@ bfS bfS bfS bfS -bKH +cTR bmZ bon bon @@ -105694,17 +105787,17 @@ aYV baR bcb bdl -bdO +cTJ cHD bgo -bPv -bPv +cTK +cTN blq -bna -bPv +cTS +cTT bpQ -bPv -bdO +cTU +cTV btm buy bvz @@ -109860,7 +109953,7 @@ cmq ciI cnJ cri -bYr +cTI cmn cBT cBU @@ -115214,7 +115307,7 @@ aaa aaa aaa bky -btq +btp brH bvQ bxt @@ -115728,7 +115821,7 @@ aaa aaa aaa bZi -btp +btq brI bvR cNS @@ -129465,4 +129558,4 @@ aaa aaa aaa aaa -"} +"} \ No newline at end of file diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 5e0ded4416..efae305c74 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -186,8 +186,6 @@ dir = 1 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = 32 }, /obj/machinery/computer/shuttle/pod{ @@ -208,8 +206,6 @@ dir = 1 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = 32 }, /obj/machinery/computer/shuttle/pod{ @@ -319,7 +315,7 @@ /obj/docking_port/mobile/pod{ id = "pod1"; name = "escape pod 1"; - port_angle = 180 + port_direction = 2 }, /obj/effect/turf_decal/stripes/end, /turf/open/floor/plasteel/white, @@ -335,7 +331,7 @@ /obj/docking_port/mobile/pod{ id = "pod2"; name = "escape pod 2"; - port_angle = 180 + port_direction = 2 }, /obj/effect/turf_decal/stripes/end, /turf/open/floor/plasteel/white, @@ -863,8 +859,7 @@ /area/maintenance/solars/starboard/fore) "abM" = ( /obj/structure/cable/white, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 2; name = "Starboard Bow Solar APC"; areastring = "/area/maintenance/solars/starboard/fore"; @@ -2598,7 +2593,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -2671,7 +2666,7 @@ height = 24; id = "syndicate"; name = "syndicate infiltrator"; - port_angle = 0; + port_direction = 1; roundstart_move = "syndicate_away"; width = 18 }, @@ -3388,7 +3383,7 @@ /turf/closed/wall, /area/security/vacantoffice) "ahx" = ( -/obj/machinery/door/airlock{ +/obj/machinery/door/airlock/abandoned{ name = "Auxiliary Office"; req_access_txt = "32" }, @@ -3515,6 +3510,8 @@ "ahP" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -4917,7 +4914,7 @@ /turf/open/floor/wood, /area/security/vacantoffice) "alk" = ( -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Office Maintenance"; req_access_txt = "32" }, @@ -5121,7 +5118,7 @@ /area/maintenance/starboard/fore) "alA" = ( /obj/structure/table/wood, -/obj/item/toy/carpplushie, +/obj/item/toy/plush/carpplushie, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plasteel/vault{ dir = 8 @@ -6352,6 +6349,8 @@ req_access_txt = "12" }, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -7663,7 +7662,7 @@ /area/maintenance/starboard/fore) "aqK" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -8008,7 +8007,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "arq" = ( -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -8023,7 +8022,7 @@ /turf/open/floor/plasteel, /area/maintenance/port/fore) "arr" = ( -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -9188,7 +9187,7 @@ /turf/open/floor/wood, /area/maintenance/port/fore) "atE" = ( -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -9543,7 +9542,6 @@ /area/quartermaster/storage) "aut" = ( /obj/machinery/status_display{ - density = 0; name = "cargo display"; supply_display = 1 }, @@ -15589,8 +15587,7 @@ /area/maintenance/solars/port/fore) "aGh" = ( /obj/structure/cable/white, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 2; name = "Port Bow Solar APC"; areastring = "/area/maintenance/solars/port/fore"; @@ -18932,7 +18929,6 @@ /area/quartermaster/storage) "aNe" = ( /obj/machinery/status_display{ - density = 0; name = "cargo display"; supply_display = 1 }, @@ -19937,12 +19933,9 @@ }, /area/security/prison) "aOV" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "permacell3"; - name = "Cell Shutters"; - opacity = 0 + name = "Cell Shutters" }, /obj/machinery/door/airlock/glass{ id_tag = "permabolt3"; @@ -19958,12 +19951,9 @@ /turf/open/floor/plasteel, /area/security/prison) "aOW" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "permacell2"; - name = "Cell Shutters"; - opacity = 0 + name = "Cell Shutters" }, /obj/machinery/door/airlock/glass{ id_tag = "permabolt2"; @@ -19983,12 +19973,9 @@ /turf/open/floor/plasteel, /area/security/prison) "aOX" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "permacell1"; - name = "Cell Shutters"; - opacity = 0 + name = "Cell Shutters" }, /obj/machinery/door/airlock/glass{ id_tag = "permabolt1"; @@ -24311,8 +24298,7 @@ /area/quartermaster/office) "aWW" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-18"; - layer = 4.1 + icon_state = "plant-18" }, /turf/open/floor/plasteel/brown, /area/quartermaster/office) @@ -24570,8 +24556,7 @@ /area/security/prison) "aXv" = ( /obj/structure/cable/white, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Prison Wing APC"; areastring = "/area/security/prison"; @@ -24696,7 +24681,7 @@ dir = 4; id = "pod3"; name = "escape pod 3"; - port_angle = 180; + port_direction = 2; preferred_direction = 4 }, /obj/effect/turf_decal/stripes/end{ @@ -24729,8 +24714,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_y = 32 }, /obj/machinery/computer/shuttle/pod{ @@ -24807,8 +24790,7 @@ icon_state = "pipe-c" }, /obj/structure/fireaxecabinet{ - pixel_x = -32; - pixel_y = 0 + pixel_x = -32 }, /turf/open/floor/plasteel/caution{ dir = 8 @@ -27292,7 +27274,7 @@ height = 5; id = "mining"; name = "mining shuttle"; - port_angle = 90; + port_direction = 4; width = 7 }, /obj/docking_port/stationary{ @@ -27406,8 +27388,7 @@ }, /area/engine/atmos) "bdr" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Atmospherics APC"; areastring = "/area/engine/atmos"; @@ -30342,8 +30323,8 @@ /obj/item/stack/sheet/metal{ amount = 50 }, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/item/grenade/chem_grenade/smart_metal_foam, /obj/machinery/newscaster{ pixel_y = -32 }, @@ -37439,7 +37420,7 @@ height = 5; id = "laborcamp"; name = "labor camp shuttle"; - port_angle = 90; + port_direction = 4; width = 9 }, /obj/docking_port/stationary{ @@ -37815,8 +37796,7 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "bwL" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Gravity Generator APC"; areastring = "/area/engine/gravity_generator"; @@ -38945,8 +38925,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Engineering Foyer APC"; areastring = "/area/engine/break_room"; @@ -43406,8 +43385,7 @@ d2 = 2; icon_state = "0-2" }, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Council Chambers APC"; areastring = "/area/bridge/meeting_room/council"; @@ -43982,8 +43960,7 @@ /turf/closed/wall, /area/engine/transit_tube) "bHy" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Transit Tube Access APC"; areastring = "/area/engine/transit_tube"; @@ -44496,8 +44473,7 @@ /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) "bIq" = ( -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Telecomms Monitoring APC"; areastring = "/area/tcommsat/computer"; @@ -44659,8 +44635,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Auxiliary Tool Storage APC"; areastring = "/area/storage/tools"; @@ -46594,8 +46569,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bMI" = ( -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 2; name = "Captain's Office APC"; areastring = "/area/crew_quarters/heads/captain"; @@ -46605,8 +46579,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bMJ" = ( -/obj/structure/sign/goldenplaque{ - name = "The Most Robust Captain Award for Robustness"; +/obj/structure/sign/goldenplaque/captain{ pixel_x = 32 }, /turf/open/floor/wood, @@ -46760,9 +46733,6 @@ /turf/open/floor/carpet, /area/security/detectives_office) "bMX" = ( -/obj/machinery/computer/security/wooden_tv{ - density = 0 - }, /obj/structure/table/wood, /obj/machinery/button/door{ id = "detectivewindows"; @@ -46776,15 +46746,16 @@ pixel_y = -26 }, /obj/structure/disposalpipe/segment, +/obj/item/device/flashlight/lamp, +/obj/item/reagent_containers/food/drinks/flask/det, /turf/open/floor/carpet, /area/security/detectives_office) "bMY" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, /obj/item/storage/secure/safe{ pixel_x = 32 }, -/obj/item/reagent_containers/food/drinks/flask/det, +/obj/machinery/computer/security/wooden_tv, /turf/open/floor/carpet, /area/security/detectives_office) "bMZ" = ( @@ -47918,13 +47889,8 @@ }, /area/aisat) "bPb" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 4; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2 }, @@ -47979,13 +47945,8 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "bPg" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 4; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2 }, @@ -48029,13 +47990,8 @@ /turf/open/floor/plasteel/grimy, /area/ai_monitored/turret_protected/aisat_interior) "bPm" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 8; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2 }, @@ -48089,13 +48045,8 @@ /turf/open/floor/plasteel/vault, /area/ai_monitored/turret_protected/aisat_interior) "bPr" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 8; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2 }, @@ -50692,13 +50643,8 @@ /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) "bTA" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 4; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2 }, @@ -50748,13 +50694,8 @@ /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) "bTF" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 4; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2 }, @@ -50803,13 +50744,8 @@ /turf/open/floor/plasteel/grimy, /area/ai_monitored/turret_protected/aisat_interior) "bTL" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 8; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2 }, @@ -53210,7 +53146,7 @@ /area/tcommsat/server) "bYo" = ( /obj/structure/table/wood, -/obj/item/pinpointer, +/obj/item/pinpointer/nuke, /obj/item/disk/nuclear, /obj/item/device/radio/intercom{ name = "Station Intercom"; @@ -54595,8 +54531,7 @@ d2 = 8; icon_state = "0-8" }, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Brig APC"; areastring = "/area/security/brig"; @@ -54967,9 +54902,7 @@ dir = 8 }, /obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/kiddieplaque{ - desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside."; - name = "Library Rules Sign"; +/obj/structure/sign/kiddieplaque/library{ pixel_x = -32 }, /turf/open/floor/wood, @@ -55007,9 +54940,7 @@ }, /area/library) "cbD" = ( -/obj/structure/sign/kiddieplaque{ - desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside."; - name = "Library Rules Sign"; +/obj/structure/sign/kiddieplaque/library{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -55181,8 +55112,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 2; name = "Captain's Quarters APC"; areastring = "/area/crew_quarters/heads/captain/private"; @@ -57975,7 +57905,7 @@ /turf/open/floor/plasteel, /area/maintenance/port) "chF" = ( -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -58237,8 +58167,7 @@ "cig" = ( /obj/structure/table, /obj/item/hand_tele, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Teleporter APC"; areastring = "/area/teleporter"; @@ -58772,9 +58701,7 @@ icon_state = "1-2" }, /obj/structure/table/reinforced, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-07"; - name = "Photosynthetic Potted plant"; +/obj/item/twohanded/required/kirbyplants/photosynthetic{ pixel_y = 10 }, /turf/open/floor/plasteel/vault{ @@ -61491,7 +61418,7 @@ icon_state = "2-8" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/glass_security{ +/obj/machinery/door/airlock/glass_security/abandoned{ name = "Storage Closet"; req_access_txt = "63" }, @@ -63428,8 +63355,7 @@ d2 = 2; icon_state = "0-2" }, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Gateway APC"; areastring = "/area/gateway"; @@ -64275,8 +64201,6 @@ dir = 1 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, @@ -64760,9 +64684,7 @@ dir = 8 }, /obj/machinery/disposal/bin, -/obj/structure/sign/kiddieplaque{ - desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside."; - name = "Library Rules Sign"; +/obj/structure/sign/kiddieplaque/library{ pixel_x = -32 }, /obj/structure/disposalpipe/trunk{ @@ -65566,12 +65488,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/showcase{ - desc = "A stand with an empty old Nanotrasen Corporation combat mech bolted to it. It is described as the premier unit used to defend corporate interests and employees."; - icon = 'icons/mecha/mecha.dmi'; - icon_state = "marauder"; - name = "combat mech exhibit" - }, +/obj/structure/showcase/mecha/marauder, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/grimy, /area/bridge/showroom/corporate) @@ -65638,12 +65555,8 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/showcase{ - desc = "A flimsy model of a standard Nanotrasen automated loyalty implant machine. With secure positioning harnesses and a robotic surgical injector, brain damage and other serious medical anomalies are now up to 60% less likely!"; - icon = 'icons/obj/machines/implantchair.dmi'; - icon_state = "implantchair"; +/obj/structure/showcase/machinery/implanter{ layer = 2.7; - name = "Nanotrasen automated loyalty implanter exhibit"; pixel_y = 4 }, /turf/open/floor/plasteel/grimy, @@ -67174,7 +67087,7 @@ /turf/open/floor/plasteel, /area/maintenance/port) "czB" = ( -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -67343,7 +67256,7 @@ pixel_x = -26 }, /obj/structure/table/reinforced, -/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/grenade/chem_grenade/smart_metal_foam, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -68506,8 +68419,7 @@ /area/crew_quarters/locker) "cCc" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-18"; - layer = 4.1 + icon_state = "plant-18" }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -70040,6 +69952,8 @@ /area/maintenance/port) "cEW" = ( /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -70784,7 +70698,7 @@ "cFS" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -71420,9 +71334,7 @@ "cHm" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/blue/corner{ dir = 4 }, @@ -72959,7 +72871,7 @@ /area/maintenance/starboard/aft) "cKH" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -78525,9 +78437,7 @@ }, /area/medical/chemistry) "cVO" = ( -/obj/machinery/chem_master{ - density = 0 - }, +/obj/machinery/chem_master, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -78919,6 +78829,8 @@ dir = 8 }, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /turf/open/floor/plating, @@ -79652,9 +79564,7 @@ /area/medical/abandoned) "cYb" = ( /obj/structure/bed/roller, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/medical/abandoned) @@ -79675,9 +79585,7 @@ /area/medical/abandoned) "cYd" = ( /obj/structure/bed/roller, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/whiteblue/corner{ dir = 4 @@ -80832,7 +80740,7 @@ /area/maintenance/starboard/aft) "daD" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -80897,7 +80805,7 @@ /area/medical/abandoned) "daJ" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -81019,6 +80927,8 @@ /area/maintenance/port) "daZ" = ( /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -81042,6 +80952,8 @@ "dbb" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -81063,6 +80975,8 @@ "dbd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -81626,9 +81540,7 @@ /turf/open/floor/plating, /area/medical/abandoned) "dcm" = ( -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/medical/abandoned) @@ -83153,7 +83065,7 @@ /area/maintenance/starboard/aft) "dfA" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -83202,7 +83114,9 @@ d2 = 2; icon_state = "0-2" }, -/obj/effect/spawner/structure/window/hollow/reinforced/end/north, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, /obj/structure/cable/white{ d2 = 4; icon_state = "0-4" @@ -83231,7 +83145,9 @@ d2 = 4; icon_state = "0-4" }, -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 9 + }, /obj/structure/cable/white{ d1 = 4; d2 = 8; @@ -83248,7 +83164,9 @@ d2 = 8; icon_state = "0-8" }, -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 1 + }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "dfJ" = ( @@ -83261,7 +83179,9 @@ icon_state = "0-8" }, /obj/structure/cable/white, -/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 5 + }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "dfK" = ( @@ -83384,9 +83304,7 @@ /area/science/explab) "dfZ" = ( /obj/machinery/atmospherics/components/trinary/filter{ - density = 0; - dir = 8; - req_access = "0" + dir = 8 }, /turf/open/floor/plasteel/whitepurple/corner{ dir = 1 @@ -83773,7 +83691,9 @@ d2 = 2; icon_state = "0-2" }, -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/west, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 8 + }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "dgT" = ( @@ -83794,7 +83714,9 @@ d2 = 2; icon_state = "0-2" }, -/obj/effect/spawner/structure/window/hollow/reinforced/one_side/east, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 4 + }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "dgW" = ( @@ -84197,8 +84119,7 @@ d2 = 8; icon_state = "0-8" }, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Mech Bay APC"; areastring = "/area/science/robotics/mechbay"; @@ -84331,8 +84252,7 @@ d2 = 2; icon_state = "0-2" }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Cloning Lab APC"; areastring = "/area/medical/genetics/cloning"; @@ -86373,7 +86293,9 @@ d2 = 2; icon_state = "0-2" }, -/obj/effect/spawner/structure/window/hollow/reinforced/corner, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 6 + }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "dma" = ( @@ -87492,7 +87414,7 @@ /area/maintenance/starboard/aft) "doy" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -87547,7 +87469,7 @@ /area/hallway/secondary/construction) "doE" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -87572,7 +87494,9 @@ d2 = 4; icon_state = "0-4" }, -/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 10 + }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "doH" = ( @@ -87584,7 +87508,7 @@ d2 = 8; icon_state = "0-8" }, -/obj/effect/spawner/structure/window/hollow/reinforced/one_side, +/obj/effect/spawner/structure/window/hollow/reinforced/directional, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "doI" = ( @@ -87593,7 +87517,9 @@ d2 = 8; icon_state = "0-8" }, -/obj/effect/spawner/structure/window/hollow/reinforced/end/east, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "doJ" = ( @@ -90680,7 +90606,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "duA" = ( -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -91869,7 +91795,7 @@ "dwO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dwP" = ( /obj/machinery/door/firedoor, /obj/structure/cable/white{ @@ -91889,7 +91815,7 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dwQ" = ( /obj/structure/table/glass, /obj/item/clipboard, @@ -92088,8 +92014,7 @@ /area/maintenance/starboard/aft) "dxk" = ( /obj/structure/cable/white, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 2; name = "Starboard Quarter Solar APC"; areastring = "/area/maintenance/solars/starboard/aft"; @@ -92523,7 +92448,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dyb" = ( /obj/structure/bed/roller, /obj/machinery/iv_drip, @@ -92531,12 +92456,12 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dyc" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dyd" = ( /obj/structure/cable/white{ d1 = 1; @@ -92545,7 +92470,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dye" = ( /obj/structure/table/glass, /obj/item/folder/white, @@ -92672,7 +92597,7 @@ /turf/closed/wall, /area/security/detectives_office/private_investigators_office) "dyt" = ( -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -92998,12 +92923,12 @@ "dzf" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dzg" = ( /obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dzh" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -93013,14 +92938,14 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dzi" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/item/storage/backpack/duffelbag/med, /obj/item/device/flashlight/pen, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dzj" = ( /turf/closed/wall, /area/crew_quarters/heads/cmo) @@ -93749,7 +93674,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAw" = ( /obj/structure/cable/white{ d1 = 4; @@ -93762,7 +93687,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAx" = ( /obj/structure/cable/white{ d1 = 4; @@ -93774,7 +93699,7 @@ dir = 1 }, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAy" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -93787,7 +93712,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAz" = ( /obj/structure/cable/white{ d1 = 1; @@ -93808,14 +93733,14 @@ dir = 4 }, /turf/open/floor/plasteel/neutral, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAA" = ( /obj/structure/table, /obj/item/clothing/gloves/color/latex/nitrile, /obj/item/clothing/suit/apron/surgical, /obj/item/clothing/mask/breath/medical, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAB" = ( /obj/structure/closet/secure_closet/CMO, /obj/item/clothing/under/rank/nursesuit, @@ -94065,9 +93990,7 @@ /area/science/mixing) "dBf" = ( /obj/machinery/atmospherics/components/trinary/filter{ - density = 0; - dir = 8; - req_access = "0" + dir = 8 }, /turf/open/floor/plasteel/neutral/side{ dir = 1 @@ -94401,7 +94324,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dBP" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -94411,13 +94334,13 @@ dir = 4 }, /turf/open/floor/plasteel/neutral, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dBQ" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dBR" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -94427,7 +94350,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dBS" = ( /obj/structure/rack, /obj/effect/decal/cleanable/dirt, @@ -94436,7 +94359,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dBT" = ( /obj/machinery/light{ dir = 8 @@ -95109,15 +95032,15 @@ /obj/structure/closet/secure_closet/medical3, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dDe" = ( /obj/structure/closet/wardrobe/white/medical, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dDf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dDg" = ( /obj/structure/cable/white{ d1 = 1; @@ -95125,10 +95048,15 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dDh" = ( /obj/machinery/suit_storage_unit/cmo, /obj/effect/turf_decal/stripes/line{ @@ -95220,7 +95148,7 @@ /area/maintenance/starboard/aft) "dDr" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -95680,7 +95608,7 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dEn" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, @@ -98159,6 +98087,7 @@ /area/security/checkpoint/customs) "dJd" = ( /obj/structure/cable/white{ + d2 = 2; icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, @@ -98743,6 +98672,7 @@ /area/medical/virology) "dKq" = ( /obj/structure/cable/white{ + d2 = 2; icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, @@ -98825,9 +98755,7 @@ /area/maintenance/port/aft) "dKD" = ( /obj/machinery/atmospherics/components/trinary/filter{ - density = 0; - dir = 8; - req_access = "0" + dir = 8 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, @@ -100742,10 +100670,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/atmosplaque{ - desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom."; - icon_state = "kiddieplaque"; - name = "Remembrance Plaque"; +/obj/structure/sign/kiddieplaque/badger{ pixel_y = 32 }, /turf/open/floor/plasteel/vault{ @@ -102792,7 +102717,7 @@ name = "Delta emergency shuttle"; width = 30; preferred_direction = 2; - port_angle = 90 + port_direction = 4 }, /obj/docking_port/stationary{ dheight = 0; @@ -104595,8 +104520,7 @@ /area/maintenance/solars/port/aft) "dWj" = ( /obj/structure/cable/white, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 2; name = "Port Quarter Solar APC"; areastring = "/area/maintenance/solars/port/aft"; @@ -105619,10 +105543,7 @@ /area/shuttle/escape) "dYc" = ( /obj/structure/lattice, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/space, /area/space) "dYd" = ( @@ -105951,6 +105872,7 @@ /area/security/checkpoint/checkpoint2) "dYE" = ( /obj/structure/cable/white{ + d2 = 2; icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, @@ -107661,7 +107583,7 @@ height = 13; id = "ferry"; name = "ferry shuttle"; - port_angle = 0; + port_direction = 1; preferred_direction = 4; roundstart_move = "ferry_away"; width = 5 @@ -108453,8 +108375,8 @@ amount = 50 }, /obj/item/crowbar, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/item/grenade/chem_grenade/smart_metal_foam, /obj/effect/turf_decal/bot, /obj/structure/sign/poster/official/report_crimes{ pixel_y = 32 @@ -108844,8 +108766,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "egC" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Departure Lounge APC"; areastring = "/area/hallway/secondary/exit/departure_lounge"; @@ -109692,24 +109613,32 @@ /area/hallway/primary/aft) "eiL" = ( /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/neutral, /area/hallway/primary/aft) "eiM" = ( /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/neutral, /area/hallway/primary/aft) "eiN" = ( /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/neutral, /area/hallway/primary/aft) "eiO" = ( /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/neutral, @@ -109815,6 +109744,8 @@ /area/crew_quarters/dorms) "ejb" = ( /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, @@ -109838,6 +109769,8 @@ /area/crew_quarters/dorms) "ejd" = ( /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -110542,7 +110475,7 @@ height = 24; id = "syndicate"; name = "syndicate infiltrator"; - port_angle = 0; + port_direction = 1; roundstart_move = "syndicate_away"; width = 18 }, @@ -112349,7 +112282,7 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "eqf" = ( -/obj/machinery/door/airlock/maintenance_hatch{ +/obj/machinery/door/airlock/maintenance_hatch/abandoned{ name = "Maintenance Hatch"; req_access_txt = "12" }, @@ -113162,6 +113095,50 @@ /obj/structure/ore_box, /turf/open/floor/plating, /area/shuttle/auxillary_base) +"esz" = ( +/turf/closed/wall/r_wall, +/area/maintenance/department/medical/morgue) +"esA" = ( +/turf/closed/wall/r_wall, +/area/maintenance/department/medical/morgue) +"esB" = ( +/turf/closed/wall, +/area/maintenance/department/medical/morgue) +"esC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/maintenance/department/medical/morgue) +"esD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"esE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + dir = 2; + name = "Morgue Maintenance APC"; + areastring = "/area/maintenance/department/medical/morgue"; + pixel_y = -26 + }, +/obj/structure/cable/white{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/maintenance/department/medical/morgue) +"esF" = ( +/turf/closed/wall, +/area/maintenance/department/medical/morgue) +"esG" = ( +/turf/closed/wall, +/area/maintenance/department/medical/morgue) +"esH" = ( +/turf/closed/wall, +/area/maintenance/department/medical/morgue) (1,1,1) = {" aaa @@ -136768,7 +136745,7 @@ aae aae aae aaf -dYc +aBW aae aae aaa @@ -137019,7 +136996,7 @@ aaa aaa aae aaf -dYc +aBW aae aae aaa @@ -137545,7 +137522,7 @@ dZB eab ear aaa -dYc +aBW aaa aaa aaa @@ -139601,7 +139578,7 @@ dZB eaf ear aaa -dYc +aBW aae aae aae @@ -140615,7 +140592,7 @@ dVy dUl aaf aaf -dYc +aBW aaa dZB eag @@ -140629,7 +140606,7 @@ dZB eag ear aaa -dYc +aBW aaa aaa aaa @@ -141132,14 +141109,14 @@ aaf aae aae aae -dYc +aBW aae aaa aaa aaf aaa aaa -dYc +aBW aae aae aaf @@ -141396,7 +141373,7 @@ aae aaf aae aae -dYc +aBW aaa aaa aaa @@ -156004,13 +155981,13 @@ drr dsR dur dvw -dwN +esz dya -dyY +esD dAw dBO dDd -dwK +esF dFd dGE dHP @@ -156261,13 +156238,13 @@ drs dsS drs dvx -dwN +esA dyb dzf dAx dBP dDe -dwK +esG dFe dGF dHP @@ -157032,13 +157009,13 @@ drv dlO dus dvA -dwK -dxS +esB +esC dzi dAA dBS -dxS -dwK +esE +esH dEY dGA dHP @@ -178697,4 +178674,4 @@ aaa aaa aaa aaa -"} +"} \ No newline at end of file diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index ec76a564d5..5a1762e989 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -178,7 +178,6 @@ /turf/open/floor/plasteel/airless/solarpanel, /area/solar/port/fore) "aav" = ( -/obj/effect/landmark/marauder_entry, /turf/open/space, /area/space) "aaw" = ( @@ -216,8 +215,7 @@ icon_state = "1-2" }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-03"; - layer = 4.1 + icon_state = "plant-03" }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) @@ -237,9 +235,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/item/twohanded/required/kirbyplants{ - layer = 4.1 - }, +/obj/item/twohanded/required/kirbyplants, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "aaE" = ( @@ -583,8 +579,6 @@ /area/security/prison) "abr" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/barber{ @@ -613,7 +607,7 @@ /obj/docking_port/mobile/pod{ id = "pod2"; name = "escape pod 2"; - port_angle = 180 + port_direction = 2 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_2) @@ -1461,7 +1455,6 @@ /area/security/execution/education) "acZ" = ( /obj/machinery/power/apc{ - cell_type = 2500; dir = 1; name = "Prisoner Education Chamber APC"; areastring = "/area/security/execution/education"; @@ -1489,12 +1482,9 @@ /turf/closed/wall/r_wall, /area/security/prison) "adb" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "permacell3"; - name = "Cell Shutters"; - opacity = 0 + name = "Cell Shutters" }, /obj/machinery/door/airlock/glass{ id_tag = "permabolt3"; @@ -1507,12 +1497,9 @@ /turf/closed/wall, /area/security/prison) "add" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "permacell2"; - name = "Cell Shutters"; - opacity = 0 + name = "Cell Shutters" }, /obj/machinery/door/airlock/glass{ id_tag = "permabolt2"; @@ -1527,12 +1514,9 @@ /turf/open/floor/plasteel/floorgrime, /area/security/prison) "ade" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "permacell1"; - name = "Cell Shutters"; - opacity = 0 + name = "Cell Shutters" }, /obj/machinery/door/airlock/glass{ id_tag = "permabolt1"; @@ -1771,7 +1755,7 @@ dir = 4; id = "pod3"; name = "escape pod 3"; - port_angle = 180; + port_direction = 2; preferred_direction = 4 }, /turf/open/floor/mineral/titanium/blue, @@ -1788,8 +1772,6 @@ dir = 1 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = 32 }, /obj/machinery/computer/shuttle/pod{ @@ -1954,13 +1936,9 @@ "adX" = ( /obj/structure/bed/roller, /obj/structure/bed/roller, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/whitered/side{ dir = 2 }, @@ -2246,14 +2224,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) -"aeD" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/landmark/syndicate_breach_area, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/crew_quarters/fitness/recreation) "aeE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2554,8 +2524,7 @@ }, /area/security/prison) "aeX" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Prison Wing APC"; areastring = "/area/security/prison"; @@ -2669,8 +2638,7 @@ dir = 9 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-16"; - layer = 4.1 + icon_state = "plant-16" }, /obj/structure/sign/securearea{ desc = "A warning sign which reads 'WARNING: Criminally Insane Inmates', describing the possible hazards of those contained within."; @@ -2746,8 +2714,6 @@ /area/crew_quarters/heads/hos) "afj" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_x = -32; pixel_y = 32 }, @@ -2779,8 +2745,6 @@ /area/crew_quarters/heads/hos) "afn" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_x = 32; pixel_y = 32 }, @@ -2924,8 +2888,7 @@ /area/maintenance/solars/port/fore) "afF" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "applebush"; - layer = 4.1 + icon_state = "applebush" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -3616,6 +3579,7 @@ pixel_y = 3 }, /obj/item/gun/ballistic/shotgun/riot, +/obj/item/gun/ballistic/shotgun/riot, /turf/open/floor/plasteel/vault{ dir = 1 }, @@ -3849,35 +3813,26 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "Prison Gate"; - name = "Security Blast Door"; - opacity = 0 + name = "Security Blast Door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/security/brig) "ahz" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "Prison Gate"; - name = "Security Blast Door"; - opacity = 0 + name = "Security Blast Door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/security/brig) "ahA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "Prison Gate"; - name = "Security Blast Door"; - opacity = 0 + name = "Security Blast Door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -3934,8 +3889,7 @@ }, /area/ai_monitored/security/armory) "ahF" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Armory APC"; areastring = "/area/ai_monitored/security/armory"; @@ -4219,6 +4173,7 @@ id = "trash"; name = "disposal bay door" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/maintenance/disposal) "aig" = ( @@ -4399,13 +4354,6 @@ /obj/structure/closet{ name = "Evidence Closet 1" }, -/obj/item/storage/backpack{ - name = "Evidence Bag 1" - }, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, /turf/open/floor/plasteel/vault{ dir = 1 }, @@ -4432,11 +4380,6 @@ /area/security/warden) "aiz" = ( /obj/structure/closet/secure_closet/evidence, -/obj/item/storage/secure/briefcase{ - name = "Secure Evidence Briefcase"; - pixel_x = 3; - pixel_y = -3 - }, /turf/open/floor/plasteel/vault{ dir = 4 }, @@ -4803,17 +4746,10 @@ /obj/structure/closet{ name = "Evidence Closet 2" }, -/obj/item/storage/backpack{ - name = "Evidence Bag 2" - }, /obj/machinery/airalarm{ dir = 4; pixel_x = -23 }, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, /turf/open/floor/plasteel/vault{ dir = 1 }, @@ -4837,13 +4773,6 @@ /obj/structure/closet{ name = "Evidence Closet 5" }, -/obj/item/storage/backpack{ - name = "Evidence Bag 5" - }, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, /obj/machinery/firealarm{ dir = 4; pixel_x = 28 @@ -5408,13 +5337,6 @@ /obj/structure/closet{ name = "Evidence Closet 4" }, -/obj/item/storage/backpack{ - name = "Evidence Bag 4" - }, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, /turf/open/floor/plasteel/vault{ dir = 4 }, @@ -5999,7 +5921,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "alF" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Secure Storage Room"; req_access_txt = "65" }, @@ -6333,8 +6255,7 @@ d2 = 4; icon_state = "1-4" }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 8; name = "Brig Control APC"; areastring = "/area/security/warden"; @@ -6499,7 +6420,6 @@ req_access_txt = "1" }, /obj/machinery/power/apc{ - cell_type = 2500; dir = 4; name = "Shooting Range APC"; areastring = "/area/security/range"; @@ -7000,8 +6920,7 @@ /turf/open/floor/plasteel, /area/security/main) "anC" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Security Office APC"; areastring = "/area/security/main"; @@ -7029,7 +6948,7 @@ /area/maintenance/fore) "anE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -7365,9 +7284,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/whitered/side, /area/security/brig) "aoq" = ( @@ -8012,7 +7929,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "apv" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -8060,9 +7977,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/kiddieplaque{ - desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside."; - name = "Library Rules Sign"; +/obj/structure/sign/kiddieplaque/library{ pixel_y = -32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -9398,7 +9313,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "asl" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -9842,7 +9757,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -10618,7 +10533,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aut" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -11944,7 +11859,7 @@ /turf/open/floor/wood, /area/crew_quarters/dorms) "awI" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -12217,8 +12132,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 2; name = "Brig APC"; areastring = "/area/security/brig"; @@ -13194,7 +13108,6 @@ "azl" = ( /obj/structure/closet/emcloset, /obj/machinery/status_display{ - density = 0; pixel_y = 32; supply_display = 1 }, @@ -13587,11 +13500,6 @@ /turf/open/floor/carpet, /area/security/detectives_office) "azU" = ( -/obj/machinery/computer/security/wooden_tv{ - density = 0; - pixel_x = 3; - pixel_y = 2 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, @@ -13602,6 +13510,11 @@ network = list("Prison"); pixel_y = 30 }, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/restraints/handcuffs, /turf/open/floor/carpet, /area/security/detectives_office) "azV" = ( @@ -13609,17 +13522,16 @@ /obj/item/storage/secure/safe{ pixel_x = 32 }, -/obj/item/device/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/restraints/handcuffs, /obj/machinery/button/door{ id = "detective_shutters"; name = "detective's office shutters control"; pixel_y = 26; req_access_txt = "4" }, +/obj/machinery/computer/security/wooden_tv{ + pixel_x = 3; + pixel_y = 2 + }, /turf/open/floor/carpet, /area/security/detectives_office) "azW" = ( @@ -13956,7 +13868,7 @@ height = 5; id = "mining"; name = "mining shuttle"; - port_angle = 90; + port_direction = 4; width = 7 }, /obj/docking_port/stationary{ @@ -14172,7 +14084,7 @@ height = 5; id = "laborcamp"; name = "labor camp shuttle"; - port_angle = 90; + port_direction = 4; width = 9 }, /obj/docking_port/stationary{ @@ -14525,7 +14437,6 @@ /obj/effect/decal/cleanable/cobweb, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-20"; - layer = 4.1; pixel_y = 3 }, /obj/effect/turf_decal/bot{ @@ -15481,8 +15392,6 @@ dir = 1 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -17037,8 +16946,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Fore Primary Hallway APC"; areastring = "/area/hallway/primary/fore"; @@ -17440,8 +17348,8 @@ amount = 50 }, /obj/item/crowbar, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/item/grenade/chem_grenade/smart_metal_foam, /obj/effect/turf_decal/bot{ dir = 1 }, @@ -18059,7 +17967,6 @@ pixel_y = 23 }, /obj/machinery/status_display{ - density = 0; pixel_y = 32; supply_display = 1 }, @@ -18558,8 +18465,6 @@ name = "Judge" }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/light{ @@ -18650,8 +18555,7 @@ pixel_y = 24 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/wood, /area/lawoffice) @@ -19670,9 +19574,7 @@ c_tag = "AI Upload Chamber - Fore"; network = list("SS13","RD","AIUpload") }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-07"; - name = "Photosynthetic Potted plant"; +/obj/item/twohanded/required/kirbyplants/photosynthetic{ pixel_y = 10 }, /turf/open/floor/plasteel/black, @@ -19819,8 +19721,6 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/portable_atmospherics/scrubber, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 30 }, /obj/effect/turf_decal/delivery, @@ -20552,13 +20452,6 @@ /obj/structure/closet{ name = "Evidence Closet 3" }, -/obj/item/storage/backpack{ - name = "Evidence Bag 3" - }, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, /turf/open/floor/plasteel/vault{ dir = 4 }, @@ -21223,8 +21116,7 @@ }, /area/hydroponics/garden) "aOO" = ( -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 8; name = "Engine Room APC"; areastring = "/area/engine/engineering"; @@ -21856,8 +21748,6 @@ icon_state = "0-4" }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/camera{ @@ -21926,8 +21816,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_y = 32 }, /obj/machinery/computer/shuttle/pod{ @@ -22051,7 +21939,6 @@ /obj/item/clipboard, /obj/item/stamp/qm, /obj/machinery/status_display{ - density = 0; pixel_x = 32; supply_display = 1 }, @@ -22133,8 +22020,7 @@ /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/ai_upload) "aQA" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Upload APC"; areastring = "/area/ai_monitored/turret_protected/ai_upload"; @@ -22184,8 +22070,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_x = 32 }, /obj/machinery/flasher{ @@ -22250,8 +22134,7 @@ pixel_x = -27 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-03"; - layer = 4.1 + icon_state = "plant-03" }, /turf/open/floor/plasteel/neutral/corner{ dir = 1 @@ -22691,7 +22574,7 @@ /obj/docking_port/mobile/pod{ id = "pod1"; name = "escape pod 1"; - port_angle = 180 + port_direction = 2 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) @@ -23368,7 +23251,6 @@ dir = 8 }, /obj/machinery/status_display{ - density = 0; pixel_x = 32; supply_display = 1 }, @@ -23506,6 +23388,7 @@ /turf/open/floor/plating, /area/storage/primary) "aTi" = ( +/obj/machinery/door/firedoor, /obj/machinery/door/airlock/highsecurity{ locked = 0; name = "AI Upload"; @@ -24313,7 +24196,6 @@ /area/security/courtroom) "aUG" = ( /obj/machinery/power/apc{ - cell_type = 2500; dir = 2; name = "Courtroom APC"; areastring = "/area/security/courtroom"; @@ -24575,21 +24457,14 @@ /area/ai_monitored/turret_protected/ai) "aVm" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/ai) "aVn" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 2; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_y = 20 }, /turf/open/floor/plasteel/black, @@ -24600,13 +24475,8 @@ dir = 2; network = list("RD") }, -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 2; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_y = 20 }, /obj/structure/cable{ @@ -24619,8 +24489,6 @@ /area/ai_monitored/turret_protected/ai) "aVq" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_pump/on, @@ -24638,8 +24506,7 @@ /area/hallway/secondary/entry) "aVt" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-13"; - layer = 4.1 + icon_state = "plant-13" }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -24689,8 +24556,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -24794,7 +24659,6 @@ /area/hallway/secondary/entry) "aVG" = ( /obj/machinery/status_display{ - density = 0; supply_display = 1 }, /turf/closed/wall, @@ -24945,6 +24809,7 @@ /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai_upload_foyer) "aVY" = ( +/obj/machinery/door/firedoor, /obj/machinery/door/airlock/highsecurity{ name = "Secure Network Access"; req_access_txt = "19" @@ -24965,8 +24830,7 @@ pixel_y = 23 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "applebush"; - layer = 4.1 + icon_state = "applebush" }, /turf/open/floor/plasteel/neutral/side{ dir = 9 @@ -24987,8 +24851,6 @@ dir = 1 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/neutral/side{ @@ -25058,8 +24920,7 @@ pixel_x = 27 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-16"; - layer = 4.1 + icon_state = "plant-16" }, /obj/item/device/radio/intercom{ freerange = 0; @@ -25180,8 +25041,6 @@ pixel_y = 25 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/structure/extinguisher_cabinet{ @@ -26260,13 +26119,8 @@ dir = 4; network = list("RD") }, -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 4; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2 }, @@ -26292,13 +26146,8 @@ /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "aYB" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 8; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2 }, @@ -26324,8 +26173,7 @@ /area/hallway/secondary/entry) "aYF" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-05"; - layer = 4.1 + icon_state = "plant-05" }, /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -26780,7 +26628,7 @@ /area/storage/tools) "aZv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -27468,7 +27316,6 @@ "baA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/machinery/status_display{ - density = 0; pixel_y = 32; supply_display = 1 }, @@ -28128,13 +27975,8 @@ }, /area/security/checkpoint/engineering) "bbF" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 4; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2 }, @@ -28163,13 +28005,8 @@ dir = 8; network = list("RD") }, -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 8; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2 }, @@ -28267,7 +28104,6 @@ "bbS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/machinery/status_display{ - density = 0; pixel_y = 32; supply_display = 1 }, @@ -28346,8 +28182,6 @@ pixel_x = -29 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_x = -32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -29102,13 +28936,11 @@ /area/crew_quarters/heads/captain/private) "bdI" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table/wood, -/obj/item/pinpointer, +/obj/item/pinpointer/nuke, /obj/item/disk/nuclear, /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) @@ -30293,12 +30125,9 @@ /turf/open/floor/plasteel/black, /area/aisat) "bfT" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "Engineering"; - name = "Engineering Security Doors"; - opacity = 0 + name = "Engineering Security Doors" }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -30692,7 +30521,6 @@ /area/quartermaster/sorting) "bgL" = ( /obj/machinery/status_display{ - density = 0; pixel_y = 32; supply_display = 1 }, @@ -30962,7 +30790,6 @@ "bhf" = ( /obj/effect/landmark/blobstart, /obj/machinery/power/apc{ - cell_type = 2500; dir = 4; name = "Central Maintenance APC"; areastring = "/area/maintenance/central"; @@ -31006,8 +30833,6 @@ /area/bridge) "bhk" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/item/folder/yellow{ @@ -31519,7 +31344,7 @@ dir = 4; id = "pod4"; name = "escape pod 4"; - port_angle = 180; + port_direction = 2; preferred_direction = 4 }, /turf/open/floor/mineral/titanium/blue, @@ -31625,8 +31450,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = -32 }, /turf/open/floor/plasteel/black, @@ -32675,7 +32498,6 @@ }, /obj/item/hand_labeler, /obj/machinery/power/apc{ - cell_type = 2500; dir = 4; name = "Delivery Office APC"; areastring = "/area/quartermaster/sorting"; @@ -33355,8 +33177,6 @@ "blC" = ( /obj/machinery/teleport/station, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/vault{ @@ -33376,13 +33196,8 @@ /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/ai) "blF" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 2; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_y = 20 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -33397,13 +33212,8 @@ /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/aisat_interior) "blH" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 2; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_y = 20 }, /turf/open/floor/plasteel/darkblue/corner{ @@ -33450,8 +33260,6 @@ "blK" = ( /obj/machinery/recharge_station, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/structure/cable/yellow{ @@ -34013,8 +33821,6 @@ "bmJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_x = -32 }, /obj/structure/disposalpipe/segment, @@ -34385,13 +34191,8 @@ dir = 1; pixel_y = 1 }, -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 8; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2 }, @@ -34407,13 +34208,8 @@ /turf/closed/wall/r_wall, /area/aisat) "bnw" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 4; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2 }, @@ -34503,7 +34299,6 @@ "bnE" = ( /obj/machinery/power/apc{ aidisabled = 0; - cell_type = 2500; dir = 4; name = "MiniSat Antechamber APC"; areastring = "/area/ai_monitored/turret_protected/aisat_interior"; @@ -34579,13 +34374,8 @@ /turf/open/floor/plasteel/black, /area/ai_monitored/storage/satellite) "bnI" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 8; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2 }, @@ -34914,8 +34704,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/hop) "bop" = ( -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 8; name = "Bridge APC"; areastring = "/area/bridge"; @@ -35030,8 +34819,6 @@ pixel_y = 5 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/wood, @@ -35354,12 +35141,9 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bpm" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "transittube"; - name = "Transit Tube Blast Door"; - opacity = 0 + name = "Transit Tube Blast Door" }, /obj/structure/cable{ d1 = 4; @@ -36172,8 +35956,6 @@ /area/crew_quarters/heads/hop) "bqF" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/darkblue/corner{ @@ -36423,7 +36205,6 @@ "brd" = ( /obj/structure/table, /obj/machinery/power/apc{ - cell_type = 2500; dir = 8; name = "Art Storage APC"; areastring = "/area/storage/art"; @@ -36433,6 +36214,7 @@ d2 = 4; icon_state = "0-4" }, +/obj/item/paper_bin, /obj/item/stack/cable_coil/random, /obj/item/stack/cable_coil/random, /obj/item/stack/cable_coil/random, @@ -36453,6 +36235,7 @@ /area/storage/art) "brf" = ( /obj/structure/table, +/obj/item/paper_bin/construction, /obj/item/airlock_painter, /obj/machinery/airalarm{ dir = 8; @@ -36957,13 +36740,8 @@ /area/aisat) "brU" = ( /obj/structure/window/reinforced, -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 8; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2 }, @@ -37019,9 +36797,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/highcap/five_k{ aidisabled = 0; - cell_type = 5000; dir = 2; name = "MiniSat Foyer APC"; areastring = "/area/ai_monitored/turret_protected/aisat/foyer"; @@ -37083,8 +36860,6 @@ /area/ai_monitored/turret_protected/aisat_interior) "bse" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/porta_turret/ai{ @@ -37355,8 +37130,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = -32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -37473,8 +37246,6 @@ /area/crew_quarters/heads/hop) "bsP" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/structure/bed/dogbed/ian, @@ -38019,8 +37790,7 @@ /area/hallway/secondary/entry) "btR" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-18"; - layer = 4.1 + icon_state = "plant-18" }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -38049,8 +37819,7 @@ /area/hallway/secondary/entry) "btU" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-08"; - layer = 4.1 + icon_state = "plant-08" }, /turf/open/floor/plasteel/grimy, /area/hallway/primary/port) @@ -38062,8 +37831,7 @@ /area/hallway/primary/port) "btW" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-03"; - layer = 4.1 + icon_state = "plant-03" }, /turf/open/floor/plasteel/grimy, /area/hallway/primary/port) @@ -38680,23 +38448,17 @@ /turf/open/floor/plating, /area/engine/break_room) "bvj" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 + name = "Atmos Blast Door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/break_room) "bvk" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 + name = "Atmos Blast Door" }, /obj/structure/cable/yellow{ d1 = 1; @@ -38710,12 +38472,9 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bvl" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 + name = "Atmos Blast Door" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -38817,13 +38576,8 @@ /area/engine/break_room) "bvw" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 2; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_y = 20 }, /turf/open/floor/plasteel/grimy, @@ -38841,13 +38595,8 @@ /obj/machinery/light_switch{ pixel_y = 28 }, -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 2; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_y = 20 }, /turf/open/floor/plasteel/grimy, @@ -38883,8 +38632,7 @@ /area/tcommsat/computer) "bvB" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-20"; - layer = 4.1 + icon_state = "plant-20" }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -39293,8 +39041,6 @@ "bwu" = ( /obj/machinery/holopad, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/light{ @@ -39570,8 +39316,7 @@ /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) "bwR" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Bar APC"; areastring = "/area/crew_quarters/bar"; @@ -39838,8 +39583,6 @@ network = list("SS13") }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = -32 }, /obj/effect/turf_decal/stripes/line, @@ -39992,8 +39735,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = -32 }, /turf/open/floor/plasteel/neutral/side, @@ -40107,8 +39848,7 @@ /area/crew_quarters/toilet/auxiliary) "bxS" = ( /obj/item/cigbutt, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Port Maintenance APC"; areastring = "/area/maintenance/port"; @@ -40214,13 +39954,10 @@ name = "Reception Window"; req_access_txt = "0" }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "hop"; layer = 3.1; - name = "privacy shutters"; - opacity = 0 + name = "privacy shutters" }, /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) @@ -40487,12 +40224,9 @@ /turf/open/floor/carpet, /area/crew_quarters/theatre) "byK" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "Engineering"; - name = "Engineering Security Doors"; - opacity = 0 + name = "Engineering Security Doors" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -40586,8 +40320,6 @@ /area/engine/atmos) "byS" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/light{ @@ -40670,8 +40402,7 @@ }, /area/engine/atmos) "byX" = ( -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Atmospherics APC"; areastring = "/area/engine/atmos"; @@ -40909,8 +40640,7 @@ /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) "bzt" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Telecomms Control Room APC"; areastring = "/area/tcommsat/computer"; @@ -40972,7 +40702,7 @@ /area/security/vacantoffice) "bzz" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ +/obj/machinery/door/airlock/centcom/abandoned{ name = "Vacant Office"; opacity = 1; req_access_txt = "32" @@ -41088,8 +40818,6 @@ /area/hallway/secondary/command) "bzN" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -41430,12 +41158,9 @@ /area/hallway/primary/starboard) "bAA" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 + name = "Atmos Blast Door" }, /obj/structure/cable/yellow{ d2 = 2; @@ -41497,8 +41222,8 @@ /obj/item/stack/sheet/metal{ amount = 50 }, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/item/grenade/chem_grenade/smart_metal_foam, /turf/open/floor/plasteel/caution{ dir = 8 }, @@ -41613,8 +41338,6 @@ /obj/structure/table/wood, /obj/item/folder/blue, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 31 }, /obj/item/folder/blue, @@ -41958,13 +41681,10 @@ /area/hallway/primary/port) "bBH" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "council blast"; layer = 2.9; - name = "Council Blast Doors"; - opacity = 0 + name = "Council Blast Doors" }, /obj/structure/cable/yellow{ d2 = 4; @@ -41974,13 +41694,10 @@ /area/bridge) "bBI" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "council blast"; layer = 2.9; - name = "Council Blast Doors"; - opacity = 0 + name = "Council Blast Doors" }, /obj/structure/cable/yellow{ d2 = 4; @@ -41994,13 +41711,10 @@ /area/bridge) "bBJ" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "council blast"; layer = 2.9; - name = "Council Blast Doors"; - opacity = 0 + name = "Council Blast Doors" }, /obj/structure/cable/yellow{ d2 = 2; @@ -42018,13 +41732,10 @@ /area/bridge) "bBK" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "council blast"; layer = 2.9; - name = "Council Blast Doors"; - opacity = 0 + name = "Council Blast Doors" }, /obj/structure/cable/yellow{ d2 = 8; @@ -42038,13 +41749,10 @@ /area/bridge) "bBL" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "council blast"; layer = 2.9; - name = "Council Blast Doors"; - opacity = 0 + name = "Council Blast Doors" }, /obj/structure/cable/yellow{ d2 = 8; @@ -42226,8 +41934,7 @@ density = 0; icon_state = "pdoor0"; id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 + name = "Atmos Blast Door" }, /obj/machinery/door/window/northleft{ dir = 4; @@ -42239,12 +41946,9 @@ /obj/item/folder/yellow, /obj/item/pen, /obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 + name = "Atmos Blast Door" }, /obj/effect/turf_decal/delivery, /obj/structure/cable/yellow{ @@ -42538,8 +42242,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Auxiliary Restrooms APC"; areastring = "/area/crew_quarters/toilet/auxiliary"; @@ -42725,8 +42428,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, @@ -42794,8 +42495,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Command Hallway APC"; areastring = "/area/hallway/secondary/command"; @@ -42869,8 +42569,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, @@ -43185,13 +42883,8 @@ /turf/open/floor/circuit/green/telecomms/mainframe, /area/tcommsat/server) "bEg" = ( -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 2; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_y = 20 }, /turf/open/floor/plasteel/black/telecomms/mainframe, @@ -43241,8 +42934,6 @@ icon_state = "1-2" }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_x = 32 }, /turf/open/floor/plasteel/arrival{ @@ -44218,12 +43909,9 @@ freq = 1400; location = "Atmospherics" }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 + name = "Atmos Blast Door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -45460,8 +45148,7 @@ }, /obj/item/storage/toolbox/emergency, /obj/item/device/flashlight, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Gateway APC"; areastring = "/area/gateway"; @@ -45823,8 +45510,7 @@ /area/tcommsat/server) "bJh" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) @@ -46289,8 +45975,6 @@ dir = 1 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/vault{ @@ -46655,8 +46339,7 @@ /area/aisat) "bKS" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-06"; - level = 4.1 + icon_state = "plant-06" }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -47071,8 +46754,6 @@ "bLH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_x = -32 }, /obj/machinery/camera{ @@ -47415,8 +47096,7 @@ /turf/open/floor/plasteel/black/telecomms/mainframe, /area/tcommsat/server) "bMs" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Telecomms Server Room APC"; areastring = "/area/tcommsat/server"; @@ -47537,8 +47217,7 @@ pixel_y = -32 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-03"; - layer = 4.1 + icon_state = "plant-03" }, /turf/open/floor/plasteel/arrival{ dir = 6 @@ -47776,12 +47455,7 @@ /area/teleporter) "bNa" = ( /obj/structure/window/reinforced, -/obj/structure/showcase{ - desc = "A stand with an retired construction mech bolted to it. The clamps are rated at 9300PSI. It seems to be falling apart."; - icon = 'icons/mecha/mecha.dmi'; - icon_state = "firefighter"; - name = "construction mech exhibit" - }, +/obj/structure/showcase/mecha/ripley, /obj/structure/cable/yellow{ d1 = 1; d2 = 2; @@ -47791,10 +47465,7 @@ /turf/open/floor/carpet, /area/bridge/showroom/corporate) "bNb" = ( -/obj/structure/sign/atmosplaque{ - desc = "A guide to the exhibit, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today."; - icon_state = "kiddieplaque"; - name = "\improper 'Perfect Drone' sign"; +/obj/structure/sign/kiddieplaque/perfect_drone{ pixel_y = 32 }, /obj/machinery/droneDispenser, @@ -47802,12 +47473,7 @@ /turf/open/floor/carpet, /area/bridge/showroom/corporate) "bNc" = ( -/obj/structure/showcase{ - desc = "A stand with an empty old Nanotrasen Corporation combat mech bolted to it. It is described as the premier unit used to defend corporate interests and employees."; - icon = 'icons/mecha/mecha.dmi'; - icon_state = "marauder"; - name = "combat mech exhibit" - }, +/obj/structure/showcase/mecha/marauder, /obj/structure/window/reinforced{ dir = 4 }, @@ -47897,26 +47563,16 @@ icon_state = "1-2" }, /obj/structure/window/reinforced, -/obj/structure/showcase{ - desc = "Signs describe how cloning pods like these ensure that every Nanotrasen employee can carry out their contracts in full, even in the unlikely event of their catastrophic death. Hopefully they aren't all made of cardboard, like this one."; - icon = 'icons/obj/cloning.dmi'; - icon_state = "pod_0"; +/obj/structure/showcase/machinery/cloning_pod{ layer = 4; - name = "cloning pod exhibit"; pixel_x = 2; pixel_y = 5 }, /turf/open/floor/carpet, /area/bridge/showroom/corporate) "bNj" = ( -/obj/structure/showcase{ - desc = "A stand with a model of the perfect Nanotrasen Employee bolted to it. Signs indicate it is robustly genetically engineered, as well as being ruthlessly loyal."; - name = "'Perfect Man' employee exhibit" - }, -/obj/structure/sign/atmosplaque{ - desc = "A guide to the exhibit, explaining how recent developments in loyalty implant and cloning technologies by Nanotrasen Corporation have led to the development and the effective immortality of the 'perfect man', the loyal Nanotrasen Employee."; - icon_state = "kiddieplaque"; - name = "\improper 'Perfect Man' sign"; +/obj/structure/showcase/perfect_employee, +/obj/structure/sign/kiddieplaque/perfect_man{ pixel_y = 32 }, /obj/structure/window/reinforced, @@ -47930,12 +47586,8 @@ }, /obj/structure/window/reinforced, /obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/showcase{ - desc = "A flimsy model of a standard Nanotrasen automated loyalty implant machine. With secure positioning harnesses and a robotic surgical injector, brain damage and other serious medical anomalies are now up to 60% less likely!"; - icon = 'icons/obj/machines/implantchair.dmi'; - icon_state = "implantchair"; +/obj/structure/showcase/machinery/implanter{ layer = 2.7; - name = "Nanotrasen automated loyalty implanter exhibit"; pixel_y = 4 }, /turf/open/floor/carpet, @@ -48631,8 +48283,7 @@ /turf/open/floor/wood, /area/bridge/showroom/corporate) "bOF" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Nanotrasen Corporate Showroom APC"; areastring = "/area/bridge/showroom/corporate"; @@ -48948,9 +48599,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "bPn" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - req_access = "0" - }, +/obj/machinery/atmospherics/components/trinary/filter, /turf/open/floor/plating, /area/maintenance/starboard) "bPo" = ( @@ -49127,7 +48776,7 @@ /turf/open/floor/plating, /area/maintenance/port) "bPI" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Vacant Office Maintenance"; req_access_txt = "32"; req_one_access_txt = "0" @@ -49375,7 +49024,7 @@ /area/bridge/showroom/corporate) "bQl" = ( /obj/structure/table/wood, -/obj/item/toy/carpplushie{ +/obj/item/toy/plush/carpplushie{ color = "red"; name = "Nanotrasen wildlife department space carp plushie" }, @@ -49786,7 +49435,7 @@ /turf/open/floor/plating, /area/maintenance/port) "bRf" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -49941,12 +49590,8 @@ /turf/open/floor/wood, /area/bridge/showroom/corporate) "bRz" = ( -/obj/structure/showcase{ - desc = "The famous Nanotrasen-brand microwave, the multi-purpose cooking appliance every station needs! This one appears to be drawn onto a cardboard box."; +/obj/structure/showcase/machinery/microwave{ dir = 1; - icon = 'icons/obj/kitchen.dmi'; - icon_state = "mw"; - name = "Nanotrasen-brand microwave"; pixel_y = 2 }, /obj/structure/table/wood, @@ -50024,12 +49669,8 @@ d2 = 8; icon_state = "4-8" }, -/obj/structure/showcase{ - desc = "A slightly battered looking TV. Various Nanotrasen infomercials play on a loop, accompanied by a jaunty tune."; +/obj/structure/showcase/machinery/tv{ dir = 1; - icon = 'icons/obj/computer.dmi'; - icon_state = "television"; - name = "Nanotrasen corporate newsfeed"; pixel_x = 2; pixel_y = 3 }, @@ -50924,7 +50565,6 @@ /area/maintenance/starboard) "bTc" = ( /obj/machinery/power/apc{ - cell_type = 2500; dir = 1; name = "Starboard Maintenance APC"; areastring = "/area/maintenance/starboard"; @@ -51069,7 +50709,7 @@ /area/engine/engineering) "bTr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -51305,8 +50945,6 @@ dir = 1 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -51362,8 +51000,6 @@ dir = 1 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -51374,8 +51010,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Central Primary Hallway APC"; areastring = "/area/hallway/primary/central"; @@ -53376,8 +53011,7 @@ pixel_x = -27 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "applebush"; - layer = 4.1 + icon_state = "applebush" }, /turf/open/floor/plasteel/blue/corner{ dir = 8 @@ -53478,8 +53112,7 @@ pixel_x = 24 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel/purple/corner{ dir = 2 @@ -54362,7 +53995,7 @@ /turf/open/floor/plating/airless, /area/maintenance/solars/port/aft) "bZO" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -54730,8 +54363,6 @@ }, /obj/item/pen, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/light/small{ @@ -55242,7 +54873,7 @@ id = "whiteship"; launch_status = 0; name = "NT Recovery White-Ship"; - port_angle = -90; + port_direction = 8; preferred_direction = 4; roundstart_move = "whiteship_away"; width = 27 @@ -56190,7 +55821,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cde" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -57087,8 +56718,7 @@ pixel_y = -30 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-08"; - layer = 4.1 + icon_state = "plant-08" }, /turf/open/floor/plasteel/whitepurple/side{ dir = 2 @@ -57350,7 +56980,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "cfl" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "12" }, @@ -59017,10 +58647,7 @@ }, /area/medical/chemistry) "ciA" = ( -/obj/machinery/chem_master{ - layer = 2.7; - pixel_x = -2 - }, +/obj/machinery/chem_master, /obj/machinery/light{ dir = 4 }, @@ -59120,8 +58747,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "ciJ" = ( -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Research Division APC"; areastring = "/area/science/research"; @@ -60290,9 +59916,7 @@ /area/medical/medbay/central) "clo" = ( /obj/structure/bed/roller, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/whiteblue/side{ dir = 2 }, @@ -60662,7 +60286,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "clX" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ locked = 0; name = "Storage Room"; req_access_txt = "0"; @@ -61433,8 +61057,6 @@ /area/medical/medbay/central) "cnC" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/structure/table/glass, @@ -61792,8 +61414,7 @@ /area/science/research) "coj" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel/whitepurple/corner{ dir = 2 @@ -61989,9 +61610,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/white, /area/medical/surgery) "coE" = ( @@ -63089,10 +62708,7 @@ }, /area/medical/chemistry) "cqu" = ( -/obj/machinery/chem_master{ - layer = 2.7; - pixel_x = -2 - }, +/obj/machinery/chem_master, /obj/structure/noticeboard{ desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; dir = 1; @@ -63541,9 +63157,7 @@ /area/medical/surgery) "cro" = ( /obj/structure/bed/roller, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/white, /area/medical/surgery) "crp" = ( @@ -63763,8 +63377,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "crH" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Aft Hallway APC"; areastring = "/area/hallway/primary/aft"; @@ -63959,9 +63572,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "csc" = ( -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /obj/item/roller, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -64081,9 +63692,7 @@ /obj/structure/sign/nosmoking_2{ pixel_x = -28 }, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/whiteblue/side{ dir = 2 }, @@ -64588,8 +64197,6 @@ /area/crew_quarters/heads/hor) "ctc" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/effect/landmark/xmastree/rdrod, @@ -64655,8 +64262,7 @@ /area/science/storage) "cti" = ( /obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Toxins Storage APC"; areastring = "/area/science/storage"; @@ -65586,7 +65192,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cuZ" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; req_access_txt = "0"; req_one_access_txt = "12;47" @@ -66668,7 +66274,7 @@ /turf/open/floor/plasteel, /area/science/storage) "cwZ" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "airlock access"; req_access_txt = "0"; req_one_access_txt = "12;47" @@ -67565,8 +67171,6 @@ /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/white/side{ @@ -67937,9 +67541,7 @@ /area/science/mixing) "czz" = ( /obj/machinery/atmospherics/components/trinary/filter{ - density = 0; - dir = 8; - req_access = "0" + dir = 8 }, /turf/open/floor/plasteel/white, /area/science/mixing) @@ -69957,6 +69559,7 @@ id = "toxinsdriver"; name = "Toxins Launcher Bay Door" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/science/mixing) "cDu" = ( @@ -70046,8 +69649,7 @@ pixel_y = 2 }, /obj/item/storage/box/syringes, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Virology APC"; areastring = "/area/medical/virology"; @@ -70115,7 +69717,6 @@ /obj/item/device/healthanalyzer, /obj/item/clothing/glasses/hud/health, /obj/structure/reagent_dispensers/virusfood{ - density = 0; pixel_y = 30 }, /obj/structure/table/glass, @@ -71305,9 +70906,7 @@ dir = 2; pixel_y = 24 }, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/whitegreen/side{ dir = 8 }, @@ -71336,7 +70935,6 @@ "cFQ" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -71950,7 +71548,7 @@ }, /area/medical/medbay/aft) "cGP" = ( -/obj/machinery/door/airlock{ +/obj/machinery/door/airlock/abandoned{ name = "Medical Surplus Storeroom"; req_access_txt = "5" }, @@ -72961,12 +72559,8 @@ "cIA" = ( /obj/structure/bed/roller, /obj/structure/bed/roller, -/obj/machinery/iv_drip{ - density = 0 - }, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/floorgrime, /area/maintenance/aft) "cIB" = ( @@ -73434,7 +73028,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Medical Surplus Storeroom"; req_access_txt = "12"; req_one_access_txt = "0" @@ -73642,8 +73236,7 @@ /area/science/research) "cJQ" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel/whitepurple/corner{ dir = 8 @@ -73954,8 +73547,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "cKy" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Departure Lounge APC"; areastring = "/area/hallway/secondary/exit/departure_lounge"; @@ -74108,7 +73700,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ locked = 0; name = "Storage Room"; req_access_txt = "0"; @@ -74935,8 +74527,7 @@ pixel_x = 27 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-14"; - layer = 4.1 + icon_state = "plant-14" }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -74944,8 +74535,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "cMk" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Aft Maintenance APC"; areastring = "/area/maintenance/aft"; @@ -75299,7 +74889,6 @@ /area/hallway/secondary/exit/departure_lounge) "cMU" = ( /obj/machinery/status_display{ - density = 0; layer = 4 }, /turf/closed/wall, @@ -76581,10 +76170,7 @@ /turf/open/floor/carpet, /area/chapel/main) "cPE" = ( -/obj/structure/sign/atmosplaque{ - desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom."; - icon_state = "kiddieplaque"; - name = "Remembrance Plaque"; +/obj/structure/sign/kiddieplaque/badger{ pixel_y = 32 }, /obj/item/reagent_containers/food/snacks/grown/poppy{ @@ -76699,8 +76285,7 @@ pixel_x = -27 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-04"; - layer = 4.1 + icon_state = "plant-04" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -76769,8 +76354,7 @@ pixel_x = 29 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-16"; - layer = 4.1 + icon_state = "plant-16" }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -77613,6 +77197,7 @@ id = "chapelgun"; name = "Chapel Launcher Door" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/chapel/main) "cRQ" = ( @@ -78214,8 +77799,6 @@ dir = 1 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = 32 }, /obj/machinery/computer/shuttle/pod{ @@ -78404,8 +77987,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_y = 32 }, /obj/machinery/computer/shuttle/pod{ @@ -78474,7 +78055,7 @@ height = 24; id = "syndicate"; name = "syndicate infiltrator"; - port_angle = 0; + port_direction = 1; roundstart_move = "syndicate_away"; width = 18 }, @@ -79453,7 +79034,7 @@ height = 13; id = "ferry"; name = "ferry shuttle"; - port_angle = 0; + port_direction = 1; preferred_direction = 4; roundstart_move = "ferry_away"; width = 5 @@ -80965,9 +80546,7 @@ req_access_txt = "0"; use_power = 0 }, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; name = "dust" @@ -82764,8 +82343,7 @@ pixel_y = 3 }, /obj/item/reagent_containers/dropper, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Xenobiology APC"; areastring = "/area/science/xenobiology"; @@ -83175,10 +82753,7 @@ /turf/open/floor/plasteel/whitepurple/side, /area/science/xenobiology) "dcM" = ( -/obj/machinery/chem_master{ - pixel_x = -2; - pixel_y = 1 - }, +/obj/machinery/chem_master, /obj/item/device/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 @@ -85615,8 +85190,6 @@ "diD" = ( /obj/machinery/vending/cigarette, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/structure/sign/poster/official/random{ @@ -85841,8 +85414,7 @@ network = list("SS13") }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-24"; - layer = 4.1 + icon_state = "plant-24" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -87024,7 +86596,6 @@ icon_state = "0-8" }, /obj/machinery/power/apc{ - cell_type = 2500; dir = 4; name = "Port Bow Maintenance APC"; areastring = "/area/maintenance/port/fore"; @@ -89548,8 +89119,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "dAd" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Starboard Quarter Maintenance APC"; areastring = "/area/maintenance/starboard/aft"; @@ -89970,12 +89540,9 @@ /area/engine/atmos) "dBK" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 + name = "Atmos Blast Door" }, /obj/structure/cable/yellow, /turf/open/floor/plating, @@ -90803,6 +90370,22 @@ dir = 1 }, /area/construction/mining/aux_base) +"dDL" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Storage Room"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"dDM" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + name = "Storage Room"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) (1,1,1) = {" aaa @@ -100196,7 +99779,7 @@ aVs aVs aVs cVF -cVW +cVF cWn cVF cVF @@ -122608,7 +122191,7 @@ cRu cRi cRi cRi -bpu +cRi aaf aaa aaf @@ -128910,7 +128493,7 @@ aaa aaa aaf aaa -aaX +blx adl aQf adl @@ -129428,7 +129011,7 @@ aaa aaa bii aaa -aeD +aeC afD afD afD @@ -129958,7 +129541,7 @@ arI atd bai ate -dpP +dDL axP dnS axY @@ -131755,7 +131338,7 @@ ape dnS arL ate -dpP +dDL avt awJ axS @@ -156338,4 +155921,4 @@ aaa aaa aaa aaa -"} +"} \ No newline at end of file diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 3e53168c2e..90e8ab96bf 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -358,8 +358,6 @@ /area/mine/laborcamp) "bj" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel, diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 207a64fe5d..14282b7ebf 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -27,10 +27,7 @@ /area/space) "aag" = ( /obj/structure/lattice, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/space, /area/space) "aah" = ( @@ -235,6 +232,8 @@ "aaz" = ( /obj/machinery/computer/card, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/darkred/side{ @@ -374,6 +373,8 @@ "aaL" = ( /obj/machinery/computer/monitor, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/darkyellow/side{ @@ -398,6 +399,8 @@ name = "command camera" }, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/vault{ @@ -436,7 +439,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -493,6 +495,8 @@ name = "command camera" }, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/vault{ @@ -524,6 +528,8 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/vault{ @@ -581,6 +587,8 @@ /area/bridge) "abb" = ( /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -698,6 +706,8 @@ dir = 10 }, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/vault{ @@ -823,9 +833,7 @@ /area/crew_quarters/heads/hop) "abt" = ( /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "abu" = ( /turf/open/floor/plating/astplate, /area/ruin/unpowered{ @@ -1018,24 +1026,18 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/starboard/fore) "abM" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/starboard/fore) "abN" = ( /obj/structure/sign/vacuum, /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "abO" = ( /obj/structure/closet/emcloset/anchored, /obj/effect/decal/cleanable/dirt, @@ -1044,9 +1046,7 @@ }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "abP" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/astplate, @@ -1105,9 +1105,7 @@ }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/fore) "abX" = ( /obj/structure/window/reinforced{ dir = 8 @@ -1187,7 +1185,7 @@ pixel_x = 32; pixel_y = 24 }, -/obj/item/pinpointer, +/obj/item/pinpointer/nuke, /obj/item/disk/nuclear, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -1381,9 +1379,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/starboard/fore) "acv" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1391,9 +1387,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "acw" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ @@ -1407,9 +1401,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "acx" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -1420,9 +1412,7 @@ /obj/effect/landmark/xeno_spawn, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "acy" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ @@ -1433,9 +1423,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "acz" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -1554,9 +1542,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/fore) "acO" = ( /obj/structure/mirror{ pixel_x = -26 @@ -1911,13 +1897,21 @@ "adm" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Starboard Bow Maintenace APC"; + areastring = "/area/maintenance/starboard/fore"; + pixel_x = 26 + }, /turf/open/floor/plasteel/neutral/corner{ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/starboard/fore) "adn" = ( /turf/closed/wall, /area/quartermaster/storage) @@ -1927,7 +1921,6 @@ /area/quartermaster/storage) "adp" = ( /obj/machinery/status_display{ - density = 0; name = "cargo display"; supply_display = 1 }, @@ -2047,9 +2040,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/fore) "adG" = ( /obj/structure/toilet{ dir = 4 @@ -2145,8 +2136,7 @@ d2 = 8; icon_state = "2-8" }, -/obj/structure/sign/goldenplaque{ - name = "The Most Robust Captain Award for Robustness"; +/obj/structure/sign/goldenplaque/captain{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -2253,7 +2243,6 @@ req_access = null; req_access_txt = "57" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -2270,10 +2259,13 @@ "adY" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/starboard/fore) "adZ" = ( /obj/machinery/conveyor{ dir = 8; @@ -2496,10 +2488,19 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/power/apc{ + dir = 8; + name = "Fore Maintenace APC"; + areastring = "/area/maintenance/fore"; + pixel_x = -26; + pixel_y = 3 + }, +/obj/structure/cable/white{ + d2 = 2; + icon_state = "0-2" + }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/fore) "aeu" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, @@ -2783,8 +2784,7 @@ d2 = 2; icon_state = "0-2" }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Head of Personnel Quarter's APC"; areastring = "/area/crew_quarters/heads/hop"; @@ -2815,7 +2815,6 @@ /area/crew_quarters/heads/hop) "aeP" = ( /obj/machinery/status_display{ - density = 0; name = "cargo display"; pixel_x = -32; supply_display = 1 @@ -2968,8 +2967,7 @@ /turf/open/floor/wood, /area/security/detectives_office) "afh" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Detective's Office APC"; areastring = "/area/security/detectives_office"; @@ -2990,15 +2988,18 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/security/detectives_office) +/area/maintenance/fore) "afj" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/delivery, +/obj/structure/cable/white{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/fore) "afk" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -26 @@ -3035,8 +3036,7 @@ /area/crew_quarters/heads/captain/private) "afo" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/item/device/radio/intercom{ dir = 8; @@ -3281,10 +3281,13 @@ "afB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/landmark/blobstart, +/obj/structure/cable/white{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/starboard/fore) "afC" = ( /obj/machinery/airalarm{ dir = 4; @@ -3465,10 +3468,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/delivery, /obj/effect/landmark/event_spawn, +/obj/structure/cable/white{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/fore) "afW" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ @@ -3485,7 +3491,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/crew_quarters/heads/captain/private) +/area/maintenance/fore) "afX" = ( /obj/structure/cable/white{ d1 = 4; @@ -3763,13 +3769,16 @@ "agu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable/white{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/open/floor/plasteel/neutral/corner{ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/starboard/fore) "agv" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -26 @@ -3943,9 +3952,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/fore) "agO" = ( /obj/machinery/light{ dir = 8 @@ -4249,10 +4256,13 @@ "ahj" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/starboard/fore) "ahk" = ( /obj/machinery/firealarm{ dir = 8; @@ -4523,9 +4533,7 @@ /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "ahE" = ( -/obj/machinery/computer/security/wooden_tv{ - density = 0 - }, +/obj/machinery/computer/security/wooden_tv, /obj/structure/table/wood, /obj/machinery/button/door{ id = "detectivewindows"; @@ -4551,7 +4559,6 @@ /obj/item/storage/secure/safe{ pixel_x = 32 }, -/obj/item/reagent_containers/food/drinks/flask/det, /obj/structure/extinguisher_cabinet{ pixel_x = 24; pixel_y = -26 @@ -4568,9 +4575,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/fore) "ahH" = ( /obj/structure/sign/securearea{ pixel_x = -32 @@ -4600,9 +4605,7 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) "ahK" = ( -/obj/machinery/computer/security/wooden_tv{ - density = 0 - }, +/obj/machinery/computer/security/wooden_tv, /obj/structure/table/wood, /obj/machinery/button/door{ id = "captainhall"; @@ -4727,30 +4730,22 @@ /area/bridge) "ahY" = ( /turf/closed/wall/r_wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ahZ" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aia" = ( /obj/machinery/light{ dir = 1 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aib" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aic" = ( /obj/structure/table, /obj/item/paper_bin, @@ -4761,9 +4756,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aid" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/mining{ @@ -5014,9 +5007,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/fore) "aiy" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass_command{ @@ -5100,9 +5091,7 @@ /turf/open/floor/plasteel/loadingarea{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aiE" = ( /obj/structure/cable/white{ d2 = 2; @@ -5110,24 +5099,18 @@ }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aiF" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "hopline"; name = "Queue Shutters" }, /turf/open/floor/plasteel/loadingarea, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aiG" = ( /obj/structure/sign/electricshock, /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aiH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/airlock/maintenance_hatch{ @@ -5137,10 +5120,13 @@ /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/structure/cable/white{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/starboard/fore) "aiI" = ( /obj/structure/filingcabinet/filingcabinet, /obj/machinery/airalarm{ @@ -5310,9 +5296,6 @@ icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -5382,9 +5365,7 @@ /turf/open/floor/plasteel/red/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aje" = ( /obj/structure/cable/white{ d1 = 1; @@ -5398,17 +5379,13 @@ /turf/open/floor/plasteel/red/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajf" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/red/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5417,9 +5394,7 @@ /turf/open/floor/plasteel/red/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5427,9 +5402,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aji" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -5437,9 +5410,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajj" = ( /obj/structure/cable/white{ d1 = 1; @@ -5453,9 +5424,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5467,9 +5436,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5481,9 +5448,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5497,9 +5462,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajn" = ( /obj/structure/sign/nanotrasen{ pixel_y = 32 @@ -5512,9 +5475,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajo" = ( /obj/structure/cable/white{ d1 = 1; @@ -5528,17 +5489,13 @@ /turf/open/floor/plasteel/blue/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajp" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/blue/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajq" = ( /obj/structure/sign/securearea{ pixel_y = 32 @@ -5549,9 +5506,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5562,9 +5517,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajs" = ( /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /obj/machinery/camera{ @@ -5575,9 +5528,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajt" = ( /obj/structure/cable/white{ d1 = 1; @@ -5591,9 +5542,7 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aju" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5603,9 +5552,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5617,9 +5564,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajw" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5631,9 +5576,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajx" = ( /obj/structure/sign/securearea{ pixel_y = 32 @@ -5647,9 +5590,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5658,9 +5599,7 @@ /turf/open/floor/plasteel/blue/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajz" = ( /obj/structure/cable/white{ d1 = 1; @@ -5671,9 +5610,7 @@ /turf/open/floor/plasteel/blue/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajA" = ( /obj/structure/sign/directions/engineering{ desc = "A sign that shows there are doors here. There are doors everywhere!"; @@ -5689,9 +5626,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5699,9 +5634,7 @@ /turf/open/floor/plasteel/blue/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajC" = ( /obj/structure/cable/white{ d1 = 1; @@ -5714,9 +5647,7 @@ /turf/open/floor/plasteel/blue/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajD" = ( /obj/structure/cable/white{ d1 = 1; @@ -5729,9 +5660,7 @@ /turf/open/floor/plasteel/blue/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -5739,16 +5668,13 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/camera{ c_tag = "Central Hallway North-East"; @@ -5757,17 +5683,13 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/brown/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ajH" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/plasticflaps{ @@ -6034,9 +5956,7 @@ /turf/open/floor/plasteel/red/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akd" = ( /obj/effect/landmark/lightsout, /obj/structure/cable/white{ @@ -6053,9 +5973,7 @@ dir = 8 }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ake" = ( /obj/structure/cable/white{ d1 = 4; @@ -6069,9 +5987,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akf" = ( /obj/structure/cable/white{ d1 = 4; @@ -6084,9 +6000,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akg" = ( /obj/structure/cable/white{ d1 = 4; @@ -6100,9 +6014,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akh" = ( /obj/structure/cable/white{ d1 = 4; @@ -6117,9 +6029,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aki" = ( /obj/structure/cable/white{ d1 = 1; @@ -6136,9 +6046,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akj" = ( /obj/structure/cable/white{ d1 = 4; @@ -6156,9 +6064,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akk" = ( /obj/structure/sign/electricshock{ pixel_y = -32 @@ -6175,9 +6081,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akl" = ( /obj/structure/cable/white{ d1 = 4; @@ -6194,9 +6098,7 @@ }, /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akm" = ( /obj/structure/cable/white{ d1 = 4; @@ -6209,9 +6111,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akn" = ( /obj/structure/cable/white{ d1 = 4; @@ -6228,9 +6128,7 @@ }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ako" = ( /obj/structure/cable/white{ d1 = 4; @@ -6247,9 +6145,7 @@ }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akp" = ( /obj/structure/cable/white{ d1 = 4; @@ -6268,9 +6164,7 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akq" = ( /obj/structure/cable/white{ d1 = 4; @@ -6285,9 +6179,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akr" = ( /obj/structure/cable/white{ d1 = 2; @@ -6314,9 +6206,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aks" = ( /obj/structure/cable/white{ d1 = 2; @@ -6335,9 +6225,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akt" = ( /obj/structure/cable/white{ d1 = 4; @@ -6355,9 +6243,7 @@ /turf/open/floor/plasteel{ icon_state = "L1" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aku" = ( /obj/structure/cable/white{ d1 = 4; @@ -6371,9 +6257,7 @@ /turf/open/floor/plasteel{ icon_state = "L3" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akv" = ( /obj/structure/cable/white{ d1 = 4; @@ -6392,9 +6276,7 @@ /turf/open/floor/plasteel{ icon_state = "L5" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akw" = ( /obj/structure/cable/white{ d1 = 4; @@ -6418,9 +6300,7 @@ /turf/open/floor/plasteel{ icon_state = "L7" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akx" = ( /obj/structure/cable/white{ d1 = 4; @@ -6431,9 +6311,7 @@ /turf/open/floor/plasteel{ icon_state = "L9" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aky" = ( /obj/structure/cable/white{ d1 = 4; @@ -6446,9 +6324,7 @@ /turf/open/floor/plasteel{ icon_state = "L11" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akz" = ( /obj/structure/cable/white{ d1 = 4; @@ -6466,9 +6342,7 @@ /turf/open/floor/plasteel{ icon_state = "L13" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akA" = ( /obj/structure/cable/white{ d1 = 4; @@ -6479,9 +6353,7 @@ dir = 4 }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akB" = ( /obj/structure/cable/white{ d1 = 2; @@ -6495,9 +6367,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akC" = ( /obj/structure/cable/white{ d1 = 2; @@ -6523,9 +6393,7 @@ icon_state = "1-4" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akD" = ( /obj/structure/cable/white{ d1 = 2; @@ -6542,9 +6410,7 @@ }, /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akE" = ( /obj/structure/cable/white{ d1 = 2; @@ -6566,9 +6432,7 @@ }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akF" = ( /obj/structure/cable/white{ d1 = 2; @@ -6590,9 +6454,7 @@ }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akG" = ( /obj/structure/cable/white{ d1 = 4; @@ -6610,9 +6472,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akH" = ( /obj/structure/cable/white{ d1 = 2; @@ -6631,9 +6491,7 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akI" = ( /obj/structure/sign/electricshock{ pixel_y = -32 @@ -6647,9 +6505,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -6664,9 +6520,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akK" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -6677,10 +6531,13 @@ icon_state = "2-8" }, /obj/effect/turf_decal/delivery, +/obj/structure/cable/white{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "akL" = ( /obj/structure/closet/wardrobe/cargotech, /turf/open/floor/plasteel/brown{ @@ -6847,9 +6704,7 @@ /turf/open/floor/plasteel/red/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alc" = ( /obj/structure/cable/white{ d1 = 1; @@ -6860,15 +6715,11 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ald" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ale" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ @@ -6879,15 +6730,11 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alg" = ( /turf/closed/wall/r_wall, /area/teleporter) @@ -6928,9 +6775,7 @@ /obj/structure/cable/white, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "all" = ( /obj/structure/sign/directions/engineering{ dir = 8; @@ -6943,13 +6788,10 @@ pixel_y = -8 }, /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alm" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/light{ dir = 8 @@ -6962,9 +6804,7 @@ /turf/open/floor/plasteel{ icon_state = "L2" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aln" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -6972,9 +6812,7 @@ /turf/open/floor/plasteel{ icon_state = "L4" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ @@ -6985,24 +6823,18 @@ /turf/open/floor/plasteel{ icon_state = "L6" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alp" = ( /turf/open/floor/plasteel{ icon_state = "L8" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel{ icon_state = "L10" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 @@ -7010,9 +6842,7 @@ /turf/open/floor/plasteel{ icon_state = "L12" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "als" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" @@ -7028,9 +6858,7 @@ /turf/open/floor/plasteel{ icon_state = "L14" }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alt" = ( /obj/structure/sign/directions/engineering{ desc = "A direction sign, pointing out which way the Supply department is."; @@ -7049,21 +6877,15 @@ pixel_y = -8 }, /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alu" = ( /turf/closed/wall/r_wall, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "alv" = ( /obj/structure/cable/white, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "alw" = ( /obj/structure/cable/white{ d1 = 1; @@ -7081,9 +6903,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "alx" = ( /obj/machinery/door/poddoor/shutters{ id = "evashutters"; @@ -7095,17 +6915,13 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "aly" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -7116,9 +6932,7 @@ /turf/open/floor/plasteel/brown/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alA" = ( /obj/structure/table/reinforced, /obj/structure/noticeboard{ @@ -7343,9 +7157,7 @@ /turf/open/floor/plasteel/red/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alS" = ( /obj/structure/cable/white{ d1 = 1; @@ -7362,9 +7174,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -7377,18 +7187,14 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alU" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alV" = ( /obj/structure/urinal{ pixel_y = 28 @@ -7398,18 +7204,14 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alW" = ( /obj/structure/urinal{ pixel_y = 28 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alX" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/bin, @@ -7417,9 +7219,7 @@ pixel_y = 24 }, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "alY" = ( /obj/machinery/shieldwallgen, /obj/effect/decal/cleanable/dirt, @@ -7493,9 +7293,7 @@ }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amf" = ( /obj/structure/closet/crate/bin, /obj/structure/cable/white{ @@ -7510,17 +7308,13 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amg" = ( /turf/open/floor/plasteel/neutral/corner{ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ @@ -7530,27 +7324,19 @@ }, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ami" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amk" = ( /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aml" = ( /obj/structure/closet/emcloset, /obj/structure/cable/white{ @@ -7565,9 +7351,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amm" = ( /obj/structure/cable/white{ d2 = 8; @@ -7575,9 +7359,7 @@ }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amn" = ( /obj/structure/cable/white{ d2 = 4; @@ -7585,9 +7367,7 @@ }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "amo" = ( /obj/structure/table/reinforced, /obj/item/stack/sheet/metal{ @@ -7609,9 +7389,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "amp" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -7629,26 +7407,20 @@ dir = 9 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "amq" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "amr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 5 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "ams" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/electrical{ @@ -7668,9 +7440,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "amt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -7683,9 +7453,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amu" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -7698,9 +7466,7 @@ /turf/open/floor/plasteel/brown/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amv" = ( /obj/machinery/computer/stockexchange, /obj/structure/table/reinforced, @@ -7724,8 +7490,7 @@ }, /obj/machinery/light, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/brown, /area/quartermaster/storage) @@ -7899,9 +7664,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amP" = ( /obj/machinery/firealarm{ dir = 1; @@ -7912,15 +7675,11 @@ dir = 1 }, /turf/open/floor/plasteel/neutral/side, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amQ" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral/side, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amR" = ( /obj/machinery/airalarm{ dir = 1; @@ -7928,9 +7687,7 @@ }, /obj/machinery/light/small, /turf/open/floor/plasteel/neutral/side, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amS" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ @@ -7939,9 +7696,7 @@ network = list("SS13") }, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "amT" = ( /obj/structure/table/reinforced, /obj/item/stack/cable_coil/white, @@ -8010,9 +7765,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ana" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ @@ -8024,20 +7777,14 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anb" = ( /turf/open/floor/plasteel/neutral/side, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "and" = ( /obj/structure/closet/firecloset, /obj/structure/sign/nanotrasen{ @@ -8050,24 +7797,18 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ane" = ( /obj/structure/sign/electricshock, /turf/closed/wall/r_wall, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "anf" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/effect/turf_decal/stripes/end{ dir = 8 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "ang" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -8082,9 +7823,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "anh" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, @@ -8094,18 +7833,14 @@ /obj/item/device/flashlight/flare, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "ani" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "anj" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/effect/decal/cleanable/dirt, @@ -8118,9 +7853,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "ank" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, @@ -8128,9 +7861,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor, @@ -8143,9 +7874,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anm" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -8374,8 +8103,7 @@ /area/security/brig) "anF" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/door_timer{ id = "brig2"; @@ -8408,9 +8136,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anI" = ( /obj/machinery/door/firedoor, /obj/structure/cable/white{ @@ -8423,9 +8149,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anJ" = ( /obj/machinery/door/airlock{ name = "Toilet Unit" @@ -8434,9 +8158,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anK" = ( /obj/machinery/door/airlock{ name = "Toilet Unit" @@ -8446,9 +8168,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anL" = ( /obj/machinery/door/window/northleft{ dir = 4; @@ -8506,9 +8226,7 @@ "anQ" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, @@ -8524,9 +8242,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anS" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ @@ -8536,9 +8252,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor, @@ -8549,9 +8263,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "anU" = ( /obj/structure/closet/crate/rcd{ pixel_y = 4 @@ -8576,9 +8288,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "anV" = ( /obj/structure/cable/white{ d1 = 1; @@ -8589,16 +8299,12 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "anW" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "anX" = ( /obj/machinery/requests_console{ department = "E.V.A. Storage"; @@ -8617,14 +8323,10 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "anY" = ( /turf/closed/wall, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "anZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ @@ -8634,9 +8336,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aoa" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -8649,9 +8349,7 @@ /turf/open/floor/plasteel/brown/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aob" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -8661,9 +8359,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aoc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -8671,9 +8367,7 @@ /turf/open/floor/plasteel/brown/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aod" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -8682,9 +8376,7 @@ /turf/open/floor/plasteel/brown/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aoe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -8696,9 +8388,7 @@ /turf/open/floor/plasteel/brown{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aof" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -8707,9 +8397,7 @@ /turf/open/floor/plasteel/brown/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aog" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/structure/cable/white{ @@ -8720,9 +8408,7 @@ /turf/open/floor/plasteel/brown/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aoh" = ( /obj/machinery/door/firedoor, /obj/effect/decal/cleanable/dirt, @@ -8946,9 +8632,7 @@ /turf/open/floor/plasteel/red/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aoC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/vomit/old, @@ -8961,9 +8645,7 @@ /obj/machinery/light/small, /obj/effect/landmark/revenantspawn, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aoD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/toilet{ @@ -8976,9 +8658,7 @@ /obj/effect/landmark/blobstart, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aoE" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/toilet{ @@ -8991,9 +8671,7 @@ /obj/effect/landmark/start/assistant, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aoF" = ( /obj/structure/table/reinforced, /obj/item/stock_parts/cell/high, @@ -9087,9 +8765,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aoO" = ( /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /obj/structure/cable/white{ @@ -9110,9 +8786,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aoP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -9123,9 +8797,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/neutral, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aoQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -9139,9 +8811,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aoR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -9154,9 +8824,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aoS" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -9222,16 +8890,12 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "aoX" = ( /obj/structure/tank_dispenser/oxygen, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "aoY" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/machinery/newscaster{ @@ -9241,9 +8905,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "aoZ" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 @@ -9255,9 +8917,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "apa" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -9280,9 +8940,7 @@ icon_state = "2-4" }, /turf/open/floor/plasteel/brown/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "apb" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -9297,9 +8955,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "apc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -9312,9 +8968,7 @@ /turf/open/floor/plasteel/brown/corner{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "apd" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/structure/cable/white{ @@ -9325,9 +8979,7 @@ /turf/open/floor/plasteel/brown/corner{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ape" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -9339,9 +8991,7 @@ }, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/brown, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "apf" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/structure/cable/white{ @@ -9350,9 +9000,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/brown/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "apg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -9371,9 +9019,7 @@ icon_state = "1-8" }, /turf/open/floor/plasteel/brown/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aph" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -9386,9 +9032,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "api" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/mining{ @@ -9503,7 +9147,7 @@ height = 5; id = "mining"; name = "mining shuttle"; - port_angle = 90; + port_direction = 4; width = 7 }, /obj/docking_port/stationary{ @@ -9708,9 +9352,7 @@ /turf/open/floor/plasteel/red/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "apH" = ( /obj/structure/cable/white{ d1 = 1; @@ -9732,9 +9374,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "apI" = ( /turf/closed/wall, /area/storage/primary) @@ -9876,9 +9516,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "apU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -9903,30 +9541,22 @@ dir = 8; heat_capacity = 1e+006 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "apV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/neutral, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "apW" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /turf/open/floor/plasteel/neutral/corner, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "apX" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "apY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -9984,9 +9614,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "aqd" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/status_display{ @@ -10001,9 +9629,7 @@ dir = 10 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "aqe" = ( /obj/machinery/power/apc{ dir = 2; @@ -10017,9 +9643,7 @@ }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "aqf" = ( /obj/machinery/status_display{ pixel_y = -32 @@ -10031,9 +9655,7 @@ dir = 6 }, /turf/open/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "aqg" = ( /obj/structure/table/reinforced, /obj/item/stack/sheet/plasteel{ @@ -10058,18 +9680,14 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/ai_monitored/storage/eva) "aqh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral/corner{ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aqi" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -10078,16 +9696,12 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/brown/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aqj" = ( /obj/machinery/computer/cargo/request, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aqk" = ( /obj/structure/chair{ dir = 1 @@ -10095,9 +9709,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aql" = ( /obj/structure/chair{ dir = 1 @@ -10105,9 +9717,7 @@ /obj/effect/landmark/start/assistant, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aqm" = ( /obj/structure/table, /obj/machinery/light, @@ -10118,9 +9728,7 @@ /obj/item/pen, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aqn" = ( /obj/structure/chair{ dir = 1 @@ -10131,9 +9739,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aqo" = ( /obj/structure/chair{ dir = 1 @@ -10142,9 +9748,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aqp" = ( /obj/machinery/autolathe, /obj/structure/extinguisher_cabinet{ @@ -10157,9 +9761,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aqq" = ( /obj/structure/rack, /obj/item/storage/toolbox/emergency{ @@ -10304,9 +9906,7 @@ dir = 4 }, /turf/open/floor/plating/astplate, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "aqH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -10389,8 +9989,7 @@ /area/security/brig) "aqP" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/firealarm{ dir = 4; @@ -10437,9 +10036,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aqT" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, @@ -10525,15 +10122,11 @@ /area/maintenance/port/central) "ara" = ( /turf/closed/wall, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "arb" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "arc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/firedoor, @@ -10549,9 +10142,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "ard" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ @@ -10561,9 +10152,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "are" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor, @@ -10574,9 +10163,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "arf" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -10586,9 +10173,7 @@ pixel_x = 32 }, /turf/open/floor/plating, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "arg" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -10616,9 +10201,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "arj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -10627,9 +10210,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ark" = ( /obj/structure/table/reinforced, /obj/machinery/airalarm{ @@ -10906,9 +10487,7 @@ /area/engine/atmos) "arB" = ( /turf/open/floor/plating/astplate, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "arC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, @@ -10923,6 +10502,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, +/obj/structure/closet/l3closet/security, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -11329,18 +10909,13 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "ase" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "asf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ @@ -11349,28 +10924,20 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "asg" = ( /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "ash" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "asi" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "asj" = ( /obj/machinery/vending/cola, /obj/machinery/newscaster{ @@ -11379,9 +10946,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "ask" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ @@ -11467,9 +11032,7 @@ /turf/open/floor/plasteel/loadingarea{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ass" = ( /obj/machinery/mineral/mint, /obj/effect/decal/cleanable/dirt, @@ -11479,15 +11042,11 @@ pixel_y = 32 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ast" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/loadingarea, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "asu" = ( /obj/structure/shuttle/engine/propulsion/burst, /obj/structure/window/reinforced{ @@ -11617,9 +11176,7 @@ pixel_x = -32 }, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "asJ" = ( /obj/structure/closet/wardrobe/red, /obj/item/clothing/under/rank/security/grey, @@ -11806,9 +11363,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "asU" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass_engineering{ @@ -11993,9 +11548,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "atj" = ( /obj/machinery/vending/coffee, /obj/machinery/firealarm{ @@ -12009,30 +11562,28 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "atk" = ( /turf/closed/wall, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "atl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "atm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "atn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, /turf/closed/wall, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "ato" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -12054,9 +11605,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "atq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -12070,18 +11619,14 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "atr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ats" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -12089,9 +11634,7 @@ /obj/effect/turf_decal/bot, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "att" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -12100,9 +11643,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "atu" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ @@ -12119,9 +11660,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "atv" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -12132,9 +11671,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "atw" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/machinery/light/small{ @@ -12267,9 +11804,7 @@ /turf/open/floor/plasteel/caution/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "atL" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Security Maintenance"; @@ -12297,9 +11832,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "atN" = ( /obj/structure/cable/white{ d1 = 1; @@ -12313,9 +11846,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "atO" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass_engineering{ @@ -12517,7 +12048,6 @@ }, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -12532,9 +12062,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "auc" = ( /obj/item/reagent_containers/food/condiment/saltshaker{ pixel_x = -8; @@ -12546,22 +12074,16 @@ /obj/structure/table/wood, /obj/item/kitchen/fork, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aud" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aue" = ( /obj/structure/chair/stool/bar, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "auf" = ( /obj/structure/table/reinforced, /obj/item/lighter{ @@ -12572,14 +12094,14 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "aug" = ( /obj/structure/sign/barsign{ pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/black, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "auh" = ( /obj/structure/table/wood, /obj/machinery/chem_dispenser/drinks, @@ -12596,11 +12118,11 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "aui" = ( /obj/machinery/status_display, /turf/closed/wall, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "auj" = ( /obj/structure/table/wood, /obj/structure/reagent_dispensers/beerkeg, @@ -12613,7 +12135,7 @@ network = list("MINE") }, /turf/open/floor/plasteel/vault, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "auk" = ( /obj/structure/sink/kitchen{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; @@ -12622,7 +12144,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/vault, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "aul" = ( /obj/structure/closet/gmcloset, /obj/item/wrench, @@ -12639,11 +12161,11 @@ pixel_x = 26 }, /turf/open/floor/plasteel/vault, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "aum" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "aun" = ( /obj/effect/landmark/blobstart, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -12663,9 +12185,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aup" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/airalarm{ @@ -12678,9 +12198,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "auq" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ dir = 4; @@ -12801,9 +12319,7 @@ "auD" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "auE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/space_heater, @@ -12816,18 +12332,14 @@ dir = 10 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "auF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/structure/sign/poster/contraband/random, /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "auG" = ( /obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dirt, @@ -12835,9 +12347,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "auH" = ( /obj/structure/cable/white{ d1 = 2; @@ -12850,9 +12360,7 @@ }, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/red/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "auI" = ( /obj/structure/cable/white{ d1 = 4; @@ -12865,9 +12373,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "auJ" = ( /obj/structure/cable/white{ d1 = 1; @@ -12883,9 +12389,7 @@ /obj/effect/landmark/revenantspawn, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "auK" = ( /obj/structure/cable/white{ d1 = 4; @@ -12900,9 +12404,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "auL" = ( /obj/effect/landmark/blobstart, /obj/structure/cable/white{ @@ -12919,9 +12421,7 @@ icon_state = "2-4" }, /turf/open/floor/plasteel/red/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "auM" = ( /obj/structure/cable/white{ d1 = 4; @@ -12940,9 +12440,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "auN" = ( /obj/structure/cable/white{ d1 = 4; @@ -12955,9 +12453,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "auO" = ( /obj/structure/cable/white{ d1 = 4; @@ -12984,9 +12480,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "auP" = ( /obj/structure/cable/white{ d1 = 4; @@ -12999,9 +12493,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "auQ" = ( /obj/structure/cable/white{ d1 = 4; @@ -13014,9 +12506,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "auR" = ( /obj/structure/cable/white{ d1 = 4; @@ -13030,9 +12520,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "auS" = ( /obj/structure/cable/white{ d1 = 1; @@ -13045,9 +12533,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "auT" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/yellow/side{ @@ -13132,9 +12618,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "avf" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -13146,9 +12630,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "avg" = ( /obj/structure/table/wood, /obj/item/device/paicard, @@ -13156,9 +12638,7 @@ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "avh" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -13166,26 +12646,20 @@ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "avi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "avj" = ( /obj/structure/chair/stool/bar, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "avk" = ( /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -13194,7 +12668,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "avl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -13203,7 +12677,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "avm" = ( /obj/structure/table/wood, /obj/machinery/chem_dispenser/drinks/beer, @@ -13213,14 +12687,14 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "avn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/sign/poster/random, /turf/closed/wall, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "avo" = ( /obj/structure/table/wood, /obj/item/storage/box/beanbag, @@ -13229,7 +12703,7 @@ dir = 4 }, /turf/open/floor/plasteel/black, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "avp" = ( /obj/effect/landmark/start/bartender, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -13239,7 +12713,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "avq" = ( /obj/machinery/chem_master/condimaster{ name = "HoochMaster 2000" @@ -13254,13 +12728,13 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "avr" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "avs" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -13279,9 +12753,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "avu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -13293,16 +12765,12 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "avv" = ( /obj/machinery/shieldgen, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "avw" = ( /obj/machinery/shieldgen, /obj/effect/decal/cleanable/dirt, @@ -13310,9 +12778,7 @@ dir = 5 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "avx" = ( /obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/cyan/visible, @@ -13425,9 +12891,7 @@ dir = 6 }, /turf/open/floor/plasteel/caution, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "avJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ @@ -13439,9 +12903,7 @@ dir = 4 }, /turf/open/floor/plasteel/caution, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "avK" = ( /obj/structure/cable/white{ d1 = 4; @@ -13460,9 +12922,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "avL" = ( /obj/structure/cable/white{ d1 = 4; @@ -13473,10 +12933,18 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/machinery/power/apc{ + dir = 2; + name = "Port Bow Maintenance APC"; + areastring = "/area/maintenance/port/fore"; + pixel_y = -26 + }, +/obj/structure/cable/white{ + d2 = 4; + icon_state = "0-4" + }, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "avM" = ( /obj/structure/cable/white{ d1 = 1; @@ -13491,18 +12959,14 @@ dir = 1 }, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "avN" = ( /obj/structure/girder, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "avO" = ( /obj/structure/rack, /obj/item/clothing/gloves/color/black, @@ -13518,9 +12982,7 @@ dir = 9 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "avP" = ( /obj/structure/closet/crate{ icon_state = "crateopen"; @@ -13540,9 +13002,7 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "avQ" = ( /obj/structure/table, /obj/item/clothing/under/rank/security, @@ -13557,17 +13017,13 @@ dir = 5 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "avR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/port/fore) "avS" = ( /obj/machinery/vending/cigarette, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -13579,9 +13035,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "avT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -13595,9 +13049,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "avU" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -13606,17 +13058,13 @@ dir = 1 }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "avV" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "avW" = ( /obj/machinery/airalarm{ dir = 1; @@ -13626,22 +13074,17 @@ dir = 9 }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "avX" = ( /obj/machinery/firealarm{ dir = 4; pixel_x = 24 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "avY" = ( /obj/structure/table/reinforced, /obj/item/stock_parts/cell/high, @@ -13754,9 +13197,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "awk" = ( /obj/structure/chair/stool, /obj/effect/landmark/start/assistant, @@ -13767,42 +13208,32 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "awl" = ( /obj/structure/table/wood, /obj/item/storage/bag/tray, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "awm" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "awn" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "awo" = ( /obj/structure/chair/stool/bar, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "awp" = ( /obj/structure/table/reinforced, /obj/item/storage/box/matches{ @@ -13815,7 +13246,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "awq" = ( /obj/effect/landmark/start/bartender, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, @@ -13825,7 +13256,7 @@ icon_state = "2-4" }, /turf/open/floor/plasteel/black, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "awr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -13839,7 +13270,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "aws" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ @@ -13858,7 +13289,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "awt" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -13871,7 +13302,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "awu" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ @@ -13882,7 +13313,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "awv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -13898,7 +13329,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "aww" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ @@ -13951,9 +13382,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "awz" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -13962,9 +13391,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "awA" = ( /turf/open/floor/engine/o2, /area/engine/atmos) @@ -14093,7 +13520,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/engine/atmos) +/area/maintenance/port/fore) "awN" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/plasticflaps{ @@ -14119,9 +13546,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "awP" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, @@ -14151,9 +13576,7 @@ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "awU" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -14166,9 +13589,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "awV" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb, @@ -14176,23 +13597,19 @@ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "awW" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "awX" = ( /obj/structure/table/reinforced, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "awY" = ( /obj/structure/cable/white{ d1 = 1; @@ -14203,7 +13620,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "awZ" = ( /obj/structure/table/wood, /obj/item/book/manual/barman_recipes, @@ -14213,11 +13630,11 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "axa" = ( /obj/machinery/vending/boozeomat, /turf/closed/wall, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "axb" = ( /obj/structure/table/wood, /obj/machinery/reagentgrinder{ @@ -14231,7 +13648,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "axc" = ( /obj/structure/closet/gmcloset, /obj/item/wrench, @@ -14245,7 +13662,7 @@ /obj/item/stack/cable_coil/random, /obj/machinery/light, /turf/open/floor/plasteel/black, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "axd" = ( /obj/structure/closet/secure_closet/bar, /obj/machinery/light_switch{ @@ -14257,7 +13674,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "axe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -14273,9 +13690,7 @@ dir = 10 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "axg" = ( /obj/structure/rack, /obj/item/crowbar/red, @@ -14284,9 +13699,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "axh" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/light/small{ @@ -14377,8 +13790,7 @@ pixel_y = 32 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -14488,8 +13900,8 @@ /obj/item/stack/sheet/metal{ amount = 50 }, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/item/grenade/chem_grenade/smart_metal_foam, /obj/machinery/newscaster{ pixel_y = 32 }, @@ -14519,17 +13931,13 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "axC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "axD" = ( /obj/structure/table, /obj/item/paper_bin, @@ -14662,9 +14070,7 @@ icon_state = "1-4" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "axP" = ( /obj/structure/cable/white{ d1 = 4; @@ -14672,9 +14078,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "axQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -14683,9 +14087,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "axR" = ( /obj/structure/cable/white{ d1 = 4; @@ -14700,7 +14102,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "axS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -14711,7 +14113,7 @@ icon_state = "1-8" }, /turf/open/floor/plasteel/black, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "axT" = ( /obj/structure/table/wood, /obj/item/clipboard, @@ -14732,7 +14134,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "axU" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -14752,14 +14154,10 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "axW" = ( /turf/closed/wall, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "axX" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) @@ -14981,9 +14379,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ayu" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -15097,9 +14493,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "ayJ" = ( /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /obj/structure/cable/white{ @@ -15108,32 +14502,24 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "ayK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "ayL" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "ayM" = ( /obj/machinery/holopad, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "ayN" = ( /obj/item/storage/fancy/cigarettes/cigars{ pixel_y = 6 @@ -15146,7 +14532,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "ayO" = ( /obj/structure/table/reinforced, /obj/machinery/newscaster{ @@ -15156,7 +14542,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar) +/area/crew_quarters/bar/atrium) "ayP" = ( /turf/closed/wall, /area/maintenance/starboard/central) @@ -15182,8 +14568,7 @@ d2 = 2; icon_state = "0-2" }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Central Starboard Maintenance APC"; areastring = "/area/maintenance/starboard/central"; @@ -15213,16 +14598,12 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ayV" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "ayW" = ( /obj/structure/table/reinforced, /obj/structure/cable/white{ @@ -15249,9 +14630,7 @@ /turf/open/floor/plasteel/red/side{ dir = 9 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "ayX" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, @@ -15267,9 +14646,7 @@ /turf/open/floor/plasteel/red/side{ dir = 1 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "ayY" = ( /obj/structure/chair, /obj/machinery/light{ @@ -15287,9 +14664,7 @@ /turf/open/floor/plasteel/red/side{ dir = 1 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "ayZ" = ( /obj/structure/chair, /obj/machinery/ai_status_display{ @@ -15303,9 +14678,7 @@ /turf/open/floor/plasteel/red/side{ dir = 1 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aza" = ( /obj/structure/chair, /obj/machinery/firealarm{ @@ -15314,15 +14687,11 @@ /turf/open/floor/plasteel/red/side{ dir = 5 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "azb" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "azc" = ( /obj/structure/chair{ dir = 4 @@ -15630,9 +14999,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "azJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -15644,9 +15011,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "azK" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/britcup, @@ -15654,9 +15019,7 @@ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "azL" = ( /obj/structure/closet/crate/bin, /obj/structure/extinguisher_cabinet{ @@ -15666,9 +15029,7 @@ dir = 5 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "azM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -15736,9 +15097,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "azT" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -15747,33 +15106,25 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "azU" = ( /obj/structure/closet/crate/bin, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "azV" = ( /obj/structure/table/reinforced, /obj/machinery/recharger, /turf/open/floor/plasteel/red/side{ dir = 8 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "azW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "azX" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -15781,9 +15132,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "azY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/cable/white{ @@ -15792,9 +15141,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "azZ" = ( /obj/structure/chair{ dir = 8 @@ -15802,9 +15149,7 @@ /turf/open/floor/plasteel/red/side{ dir = 4 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aAa" = ( /obj/structure/chair{ dir = 4 @@ -16081,9 +15426,7 @@ /turf/open/floor/plasteel/neutral, /area/engine/atmos) "aAB" = ( -/obj/machinery/computer/station_alert{ - density = 0 - }, +/obj/machinery/computer/station_alert, /obj/structure/cable/white{ d1 = 1; d2 = 4; @@ -16100,9 +15443,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aAD" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ @@ -16191,7 +15532,7 @@ /obj/machinery/power/apc{ dir = 8; name = "Atrium APC"; - areastring = "/area/crew_quarters/bar"; + areastring = "/area/crew_quarters/bar/atrium"; pixel_x = -26; pixel_y = 3 }, @@ -16200,9 +15541,7 @@ icon_state = "0-4" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aAO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ @@ -16231,9 +15570,7 @@ icon_state = "1-4" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aAP" = ( /obj/item/reagent_containers/food/condiment/saltshaker{ pixel_x = -8; @@ -16251,9 +15588,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aAQ" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -16264,9 +15599,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aAR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -16277,9 +15610,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aAS" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -16290,9 +15621,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aAT" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -16383,9 +15712,7 @@ dir = 4 }, /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aAZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -16395,9 +15722,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aBa" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -16408,17 +15733,13 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aBb" = ( /obj/machinery/vending/cola, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aBc" = ( /obj/machinery/computer/security, /obj/machinery/newscaster/security_unit{ @@ -16427,22 +15748,16 @@ /turf/open/floor/plasteel/red/side{ dir = 10 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aBd" = ( /obj/structure/chair/office/dark, /turf/open/floor/plasteel/red/side, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aBe" = ( /obj/machinery/computer/secure_data, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/red/side, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aBf" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -16451,9 +15766,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/red/side, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aBg" = ( /obj/machinery/camera{ c_tag = "Security - Departures Starboard"; @@ -16463,9 +15776,7 @@ /turf/open/floor/plasteel/red/side{ dir = 6 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aBh" = ( /obj/machinery/door/airlock/external{ name = "External Docking Port"; @@ -16475,16 +15786,12 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aBi" = ( /obj/structure/fans/tiny, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aBj" = ( /obj/machinery/door/airlock/shuttle{ name = "Emergency Shuttle Airlock"; @@ -16503,7 +15810,6 @@ "aBl" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -16751,9 +16057,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aBL" = ( /obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -16766,9 +16070,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aBM" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ @@ -16893,8 +16195,7 @@ d2 = 2; icon_state = "0-2" }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Theatre Backstage APC"; areastring = "/area/crew_quarters/theatre"; @@ -16921,16 +16222,12 @@ dir = 8 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aBZ" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/cheesiehonkers, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aCa" = ( /obj/machinery/light{ dir = 4 @@ -16939,9 +16236,7 @@ icon_state = "plant-22" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aCb" = ( /obj/machinery/status_display, /turf/closed/wall, @@ -16978,9 +16273,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aCh" = ( /obj/machinery/vending/snack, /obj/machinery/firealarm{ @@ -16991,9 +16284,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aCi" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white{ @@ -17001,9 +16292,7 @@ icon_state = "0-4" }, /turf/open/floor/plating, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aCj" = ( /obj/machinery/door/firedoor, /obj/structure/cable/white{ @@ -17033,9 +16322,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aCk" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white{ @@ -17048,9 +16335,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aCl" = ( /obj/machinery/door/firedoor, /obj/structure/cable/white{ @@ -17077,9 +16362,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aCm" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white{ @@ -17087,16 +16370,12 @@ icon_state = "0-8" }, /turf/open/floor/plating, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aCn" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/vacuum, /turf/open/floor/plating, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aCo" = ( /obj/machinery/door/airlock/glass_security{ name = "Holding Area"; @@ -17392,15 +16671,11 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aCM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aCN" = ( /obj/structure/table, /obj/item/storage/firstaid/regular, @@ -17475,9 +16750,7 @@ dir = 10 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aCV" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -17554,9 +16827,7 @@ "aDc" = ( /obj/machinery/status_display, /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aDd" = ( /obj/structure/table, /obj/item/paper_bin, @@ -17570,9 +16841,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aDe" = ( /obj/structure/cable/white{ d1 = 1; @@ -17582,9 +16851,7 @@ /turf/open/floor/plasteel/escape{ dir = 1 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aDg" = ( /obj/structure/cable/white{ d1 = 1; @@ -17595,15 +16862,11 @@ /turf/open/floor/plasteel/escape{ dir = 1 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aDh" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aDi" = ( /obj/machinery/door/airlock/external{ name = "External Docking Port" @@ -17612,9 +16875,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aDj" = ( /obj/machinery/door/airlock/shuttle{ name = "Emergency Shuttle Airlock" @@ -17651,7 +16912,6 @@ "aDm" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -17716,9 +16976,7 @@ "aDv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aDw" = ( /obj/machinery/firealarm{ dir = 8; @@ -17732,9 +16990,7 @@ /turf/open/floor/plasteel/escape{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aDx" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -17747,17 +17003,13 @@ /turf/open/floor/plasteel/caution{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aDy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/caution{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aDz" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -17765,9 +17017,7 @@ /turf/open/floor/plasteel/caution{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aDA" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -17775,28 +17025,21 @@ /turf/open/floor/plasteel/caution{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aDB" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/caution{ dir = 5 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aDC" = ( /obj/structure/table/reinforced, /obj/item/airlock_painter, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aDD" = ( /turf/open/floor/plasteel/neutral/corner{ dir = 8; @@ -17931,27 +17174,21 @@ icon_state = "1-8" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aDP" = ( /obj/effect/landmark/xmastree, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aDQ" = ( /obj/structure/chair/stool/bar, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aDR" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -18032,32 +17269,24 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aEa" = ( /obj/structure/table, /obj/item/storage/firstaid/regular, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aEb" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aEc" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aEd" = ( /obj/structure/chair{ dir = 4 @@ -18065,24 +17294,18 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aEe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aEf" = ( /obj/structure/chair{ dir = 8 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aEg" = ( /obj/structure/chair{ dir = 4 @@ -18356,9 +17579,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/sign/nosmoking_2, /turf/closed/wall/r_wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aEB" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -18367,9 +17588,7 @@ /turf/open/floor/plasteel/escape{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aEC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -18380,34 +17599,26 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aED" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aEE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aEF" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aEG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -18415,9 +17626,7 @@ /turf/open/floor/plasteel/yellow/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aEH" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -18430,9 +17639,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aEI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -18446,9 +17653,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aEJ" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -18457,9 +17662,7 @@ pixel_x = 24 }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aEK" = ( /obj/machinery/vending/clothing, /obj/machinery/firealarm{ @@ -18472,8 +17675,7 @@ /area/crew_quarters/dorms) "aEL" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/status_display{ pixel_y = -32 @@ -18609,16 +17811,12 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aEX" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/chips, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aEY" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -18756,17 +17954,13 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFi" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFj" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ @@ -18779,32 +17973,24 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aFk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aFl" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aFn" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aFo" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/mineral/titanium/nodiagonal, @@ -18987,9 +18173,7 @@ /turf/open/floor/plasteel/arrival{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -19010,9 +18194,7 @@ icon_state = "2-4" }, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ @@ -19021,9 +18203,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFF" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -19035,9 +18215,7 @@ }, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -19049,9 +18227,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -19062,9 +18238,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/yellow/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFI" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -19082,9 +18256,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -19098,9 +18270,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFK" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -19119,9 +18289,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFL" = ( /obj/machinery/firealarm{ dir = 4; @@ -19133,9 +18301,7 @@ dir = 8 }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -19159,9 +18325,7 @@ network = list("MINE") }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aFO" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/soda_cans/cola, @@ -19169,18 +18333,14 @@ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aFP" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aFQ" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -19237,9 +18397,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFY" = ( /obj/machinery/holopad, /obj/effect/landmark/lightsout, @@ -19251,9 +18409,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aFZ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ @@ -19263,23 +18419,17 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aGa" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aGb" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aGc" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -19288,9 +18438,7 @@ name = "WARNING: EXTERNAL AIRLOCK" }, /turf/open/floor/plating, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aGd" = ( /obj/structure/flora/ausbushes/grassybush, /obj/structure/flora/ausbushes/lavendergrass, @@ -19427,9 +18575,7 @@ /turf/open/floor/plasteel/arrival{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aGq" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -19442,9 +18588,7 @@ /turf/open/floor/plasteel/yellow/corner{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aGr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/light, @@ -19455,33 +18599,25 @@ /turf/open/floor/plasteel/yellow/corner{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aGs" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/yellow/corner{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aGt" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, /turf/open/floor/plasteel/yellow/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aGu" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" }, /turf/open/floor/plasteel/yellow/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aGv" = ( /obj/structure/table/reinforced, /obj/item/stock_parts/cell/high, @@ -19489,9 +18625,7 @@ /obj/machinery/cell_charger, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aGw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -19506,17 +18640,13 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aGx" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aGy" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, @@ -19560,8 +18690,7 @@ d2 = 2; icon_state = "0-2" }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Central Port Maintenance APC"; areastring = "/area/maintenance/port/central"; @@ -19722,9 +18851,7 @@ icon_state = "2-8" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aGO" = ( /obj/item/reagent_containers/food/condiment/saltshaker{ pixel_x = -8; @@ -19739,9 +18866,7 @@ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aGP" = ( /obj/structure/chair/stool, /obj/effect/landmark/start/assistant, @@ -19749,9 +18874,7 @@ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aGQ" = ( /obj/machinery/holopad, /obj/item/device/radio/intercom{ @@ -19759,9 +18882,7 @@ pixel_x = 28 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aGR" = ( /obj/machinery/vending/dinnerware, /obj/machinery/button/door{ @@ -19851,23 +18972,21 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aGY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aHe" = ( /turf/open/floor/plasteel/vault{ dir = 1 @@ -19906,8 +19025,7 @@ req_access_txt = "10" }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -20264,9 +19382,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aHD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -20278,9 +19394,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aHE" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -20293,9 +19407,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aHF" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ @@ -20466,9 +19578,7 @@ dir = 4 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aHS" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -20479,28 +19589,21 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aHT" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/coffee, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aHU" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/structure/sign/poster/random{ pixel_x = 32 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aHV" = ( /obj/machinery/status_display, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -20538,27 +19641,20 @@ /obj/item/pen, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aHZ" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aIa" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aIb" = ( /obj/structure/sign/radiation{ pixel_x = -32 @@ -20876,9 +19972,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aIA" = ( /obj/machinery/airalarm{ dir = 8; @@ -20889,9 +19983,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aIB" = ( /turf/closed/wall, /area/janitor) @@ -21058,9 +20150,7 @@ }, /obj/structure/closet/crate/bin, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aIR" = ( /obj/structure/closet/secure_closet/freezer/meat, /obj/effect/turf_decal/bot, @@ -21148,9 +20238,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aIY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -21164,15 +20252,11 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aIZ" = ( /obj/machinery/ai_status_display, /turf/closed/wall, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aJa" = ( /obj/structure/table, /obj/item/storage/pill_bottle/dice, @@ -21185,20 +20269,14 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aJb" = ( /turf/open/floor/plasteel/escape, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aJc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/escape, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aJe" = ( /obj/machinery/door/airlock/shuttle{ name = "Emergency Shuttle Airlock"; @@ -21215,7 +20293,6 @@ "aJg" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -21269,8 +20346,7 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "aJl" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Gravity Generator APC"; areastring = "/area/engine/gravity_generator"; @@ -21463,8 +20539,8 @@ amount = 50 }, /obj/item/crowbar, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/item/grenade/chem_grenade/smart_metal_foam, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -21563,8 +20639,7 @@ /obj/effect/decal/cleanable/dirt, /obj/item/storage/bag/trash, /obj/item/key/janitor, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Custodial Closet APC"; areastring = "/area/janitor"; @@ -21696,17 +20771,13 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aJX" = ( /obj/machinery/vending/cola, /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aJY" = ( /obj/structure/sign/nosmoking_2, /turf/closed/wall, @@ -21810,15 +20881,11 @@ /obj/structure/closet/emcloset, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aKh" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aKi" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -21831,9 +20898,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aKj" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/plasticflaps{ @@ -21843,9 +20908,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aKl" = ( /obj/structure/cable/white{ d2 = 8; @@ -21854,9 +20917,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/vacuum, /turf/open/floor/plating, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aKm" = ( /obj/machinery/door/airlock/shuttle{ name = "Emergency Shuttle Cargo" @@ -22417,9 +21478,7 @@ pixel_y = -32 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aLg" = ( /obj/machinery/vending/snack, /obj/machinery/firealarm{ @@ -22433,9 +21492,7 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aLh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -22485,33 +21542,25 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aLn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aLt" = ( /turf/open/floor/plasteel/brown{ dir = 5 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aLu" = ( /obj/structure/fans/tiny, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aLv" = ( /obj/machinery/door/airlock/external{ name = "External Docking Port" @@ -22521,9 +21570,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aLw" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -22842,8 +21889,7 @@ icon_state = "1-4" }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -23014,9 +22060,7 @@ dir = 8 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aMu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/white{ @@ -23030,9 +22074,7 @@ icon_state = "2-4" }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aMv" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ @@ -23083,44 +22125,33 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aMz" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/brown{ dir = 8 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aMA" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aMB" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, /obj/effect/landmark/lightsout, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aMC" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/brown{ dir = 4 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aMD" = ( /obj/machinery/recharge_station, /obj/machinery/status_display{ @@ -23485,18 +22516,14 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aNi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/newscaster{ pixel_x = 32 }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aNj" = ( /obj/structure/reagent_dispensers/watertank, /obj/item/reagent_containers/glass/bucket, @@ -23657,9 +22684,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aNz" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ @@ -23670,9 +22695,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "aNA" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -23748,9 +22771,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aNG" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -23768,9 +22789,7 @@ /turf/open/floor/plasteel/brown{ dir = 8 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aNH" = ( /obj/structure/closet/crate, /obj/effect/decal/cleanable/dirt, @@ -23779,9 +22798,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aNI" = ( /obj/structure/closet/crate, /obj/item/device/radio/intercom{ @@ -23791,9 +22808,7 @@ /obj/machinery/light, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aNJ" = ( /obj/structure/closet/crate, /obj/effect/decal/cleanable/dirt, @@ -23802,9 +22817,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aNK" = ( /obj/structure/closet/crate, /obj/machinery/firealarm{ @@ -23813,9 +22826,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "aNL" = ( /obj/structure/table, /obj/item/clipboard, @@ -24120,8 +23131,7 @@ /area/hallway/primary/central) "aOm" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/redyellow/side{ dir = 9 @@ -24440,9 +23450,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aOP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ @@ -24459,9 +23467,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aOQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -24475,9 +23481,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aOR" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -24495,9 +23499,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aOS" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -24510,9 +23512,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aOT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -24531,9 +23531,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aOU" = ( /obj/machinery/door/firedoor, /obj/effect/landmark/lightsout, @@ -24547,9 +23545,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aOV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -24569,9 +23565,7 @@ /turf/open/floor/plasteel/green/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aOW" = ( /obj/machinery/light{ dir = 1 @@ -24596,9 +23590,7 @@ /turf/open/floor/plasteel/purple/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aOX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -24622,9 +23614,7 @@ /turf/open/floor/plasteel/green/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aOY" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ @@ -24640,9 +23630,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aOZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -24658,9 +23646,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPa" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -24677,9 +23663,7 @@ /turf/open/floor/plasteel/green/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -24692,9 +23676,7 @@ /turf/open/floor/plasteel/blue/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -24711,9 +23693,7 @@ /turf/open/floor/plasteel/green/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPd" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -24982,9 +23962,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPv" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -24997,9 +23975,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -25013,9 +23989,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPx" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -25031,17 +24005,13 @@ icon_state = "2-8" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPy" = ( /obj/structure/table, /obj/item/storage/briefcase, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPz" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -25283,13 +24253,10 @@ /turf/open/floor/plasteel/vault{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPX" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -25302,18 +24269,14 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPY" = ( /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /turf/open/floor/plasteel/neutral/corner{ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aPZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -25328,9 +24291,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQa" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -25342,18 +24303,14 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQb" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/neutral/corner{ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQc" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -25363,9 +24320,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -25374,9 +24329,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQe" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -25385,9 +24338,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQf" = ( /obj/machinery/firealarm{ dir = 1; @@ -25400,9 +24351,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -25410,9 +24359,7 @@ /turf/open/floor/plasteel/yellow/corner{ dir = 8 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQh" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -25547,9 +24494,7 @@ "aQw" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/purple/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQx" = ( /obj/machinery/firealarm{ dir = 1; @@ -25560,9 +24505,7 @@ }, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQy" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -25574,9 +24517,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQz" = ( /obj/structure/sign/securearea{ pixel_y = -32 @@ -25586,13 +24527,10 @@ dir = 9 }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQA" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/newscaster{ pixel_y = -32 @@ -25603,9 +24541,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "aQB" = ( /obj/structure/table/wood, /obj/item/crowbar/red, @@ -25843,10 +24779,7 @@ /turf/open/floor/plasteel, /area/library) "aRa" = ( -/obj/structure/sign/kiddieplaque{ - desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside."; - name = "Library Rules Sign" - }, +/obj/structure/sign/kiddieplaque/library, /turf/closed/wall, /area/library) "aRb" = ( @@ -26410,8 +25343,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Chemistry Lab APC"; areastring = "/area/medical/chemistry"; @@ -26422,8 +25354,7 @@ icon_state = "0-2" }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/camera{ c_tag = "Chemistry"; @@ -26435,9 +25366,6 @@ }, /area/medical/chemistry) "aSl" = ( -/obj/machinery/chem_master{ - density = 0 - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -26986,6 +25914,7 @@ /area/medical/chemistry) "aTt" = ( /obj/effect/turf_decal/stripes/line, +/obj/machinery/chem_master, /turf/open/floor/plasteel, /area/medical/chemistry) "aTu" = ( @@ -28222,6 +27151,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, +/obj/structure/closet/l3closet, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -28658,7 +27588,6 @@ "aWR" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -28929,8 +27858,7 @@ /area/medical/medbay/zone3) "aXu" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/button/door{ desc = "A remote control switch for the medbay foyer."; @@ -29453,8 +28381,7 @@ /area/science/research) "aYp" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/structure/extinguisher_cabinet{ pixel_x = 24 @@ -30345,8 +29272,7 @@ locked = 0; pixel_x = -23 }, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Mech Bay APC"; areastring = "/area/science/robotics/mechbay"; @@ -30768,7 +29694,7 @@ /turf/open/floor/plasteel/red/side{ dir = 9 }, -/area/hallway/primary/central) +/area/security/checkpoint) "baJ" = ( /obj/structure/cable/white{ d1 = 1; @@ -30781,7 +29707,7 @@ /turf/open/floor/plasteel/red/side{ dir = 1 }, -/area/hallway/primary/central) +/area/security/checkpoint) "baK" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, @@ -30792,7 +29718,7 @@ /turf/open/floor/plasteel/red/side{ dir = 5 }, -/area/hallway/primary/central) +/area/security/checkpoint) "baL" = ( /obj/machinery/light{ dir = 8 @@ -31163,8 +30089,7 @@ /area/medical/medbay/zone3) "bbs" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/whiteblue/corner, /area/medical/medbay/zone3) @@ -31218,7 +30143,7 @@ }, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/security/checkpoint) "bby" = ( /obj/machinery/light_switch{ pixel_x = -26; @@ -31230,7 +30155,7 @@ /turf/open/floor/plasteel/red/side{ dir = 8 }, -/area/hallway/primary/central) +/area/security/checkpoint) "bbz" = ( /obj/structure/cable/white{ d1 = 1; @@ -31248,16 +30173,16 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/security/checkpoint) "bbA" = ( /obj/structure/cable/white{ d2 = 8; icon_state = "0-8" }, /obj/machinery/power/apc{ + areastring = "/area/security/checkpoint"; dir = 4; name = "Security Checkpoint APC"; - areastring = "/area/hallway/primary/central"; pixel_x = 26 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -31266,7 +30191,7 @@ /turf/open/floor/plasteel/red/side{ dir = 4 }, -/area/hallway/primary/central) +/area/security/checkpoint) "bbB" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -31645,7 +30570,7 @@ icon_state = "0-2" }, /turf/open/floor/plating, -/area/hallway/primary/central) +/area/security/checkpoint) "bcn" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -31653,7 +30578,7 @@ /turf/open/floor/plasteel/red/side{ dir = 8 }, -/area/hallway/primary/central) +/area/security/checkpoint) "bco" = ( /obj/structure/cable/white{ d1 = 1; @@ -31661,7 +30586,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central) +/area/security/checkpoint) "bcp" = ( /obj/machinery/status_display{ pixel_x = 32 @@ -31670,7 +30595,7 @@ /turf/open/floor/plasteel/red/side{ dir = 6 }, -/area/hallway/primary/central) +/area/security/checkpoint) "bcq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -32010,7 +30935,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/security/checkpoint) "bde" = ( /obj/structure/cable/white{ d1 = 4; @@ -32029,7 +30954,7 @@ /turf/open/floor/plasteel/red/side{ dir = 8 }, -/area/hallway/primary/central) +/area/security/checkpoint) "bdf" = ( /obj/structure/cable/white{ d1 = 1; @@ -32050,7 +30975,7 @@ icon_state = "1-4" }, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central) +/area/security/checkpoint) "bdg" = ( /obj/machinery/computer/security, /obj/machinery/light{ @@ -32062,7 +30987,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/red, -/area/hallway/primary/central) +/area/security/checkpoint) "bdh" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white{ @@ -32070,7 +30995,7 @@ icon_state = "0-8" }, /turf/open/floor/plating, -/area/hallway/primary/central) +/area/security/checkpoint) "bdi" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 @@ -32558,14 +31483,14 @@ /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white, /turf/open/floor/plating, -/area/hallway/primary/central) +/area/security/checkpoint) "bec" = ( /obj/structure/table/reinforced, /obj/machinery/recharger, /turf/open/floor/plasteel/red/side{ dir = 8 }, -/area/hallway/primary/central) +/area/security/checkpoint) "bed" = ( /obj/structure/cable/white{ d1 = 1; @@ -32574,7 +31499,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/neutral, -/area/hallway/primary/central) +/area/security/checkpoint) "bee" = ( /obj/machinery/computer/secure_data, /obj/machinery/ai_status_display{ @@ -32583,7 +31508,7 @@ /turf/open/floor/plasteel/red/side{ dir = 5 }, -/area/hallway/primary/central) +/area/security/checkpoint) "bef" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -32892,7 +31817,7 @@ /turf/open/floor/plasteel/red/side{ dir = 10 }, -/area/hallway/primary/central) +/area/security/checkpoint) "beI" = ( /obj/structure/cable/white{ d1 = 1; @@ -32901,7 +31826,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/red/side, -/area/hallway/primary/central) +/area/security/checkpoint) "beJ" = ( /obj/structure/closet/secure_closet/security, /obj/machinery/airalarm{ @@ -32915,7 +31840,7 @@ /turf/open/floor/plasteel/red/side{ dir = 6 }, -/area/hallway/primary/central) +/area/security/checkpoint) "beK" = ( /obj/machinery/firealarm{ dir = 4; @@ -33096,6 +32021,8 @@ /area/maintenance/port) "beX" = ( /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -33209,7 +32136,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central) +/area/security/checkpoint) "bfg" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -33800,8 +32727,7 @@ /obj/structure/chair/wood/normal{ dir = 8 }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Chapel APC"; areastring = "/area/chapel/main"; @@ -33841,10 +32767,7 @@ /area/chapel/main) "bgb" = ( /obj/structure/bookcase, -/obj/structure/sign/atmosplaque{ - desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom."; - icon_state = "kiddieplaque"; - name = "Remembrance Plaque"; +/obj/structure/sign/kiddieplaque/badger{ pixel_y = 32 }, /obj/machinery/light/small{ @@ -34043,7 +32966,6 @@ "bgy" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -34639,8 +33561,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Arrivals APC"; areastring = "/area/hallway/secondary/entry"; @@ -34711,7 +33632,6 @@ "bhL" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -34799,7 +33719,6 @@ "bhU" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -34876,10 +33795,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/atmosplaque{ - desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom."; - icon_state = "kiddieplaque"; - name = "Remembrance Plaque"; +/obj/structure/sign/kiddieplaque/badger{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -35718,6 +34634,7 @@ /turf/open/floor/plasteel/whitepurple/side, /area/science/xenobiology) "bjG" = ( +/obj/structure/closet/l3closet/scientist, /turf/open/floor/plasteel/whitepurple/side{ dir = 6 }, @@ -36047,15 +34964,12 @@ /area/shuttle/arrival) "bkd" = ( /obj/effect/turf_decal/delivery, +/obj/structure/closet/wardrobe/mixed, /turf/open/floor/plasteel, /area/shuttle/arrival) "bke" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/emergency, -/obj/machinery/camera{ - c_tag = "Arrivals Suttle 1"; - network = list("Labor") - }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/arrival) @@ -36130,6 +35044,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel/white, /area/shuttle/arrival) "bkn" = ( @@ -36149,7 +35066,6 @@ "bkq" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -36170,7 +35086,6 @@ "bks" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -36260,7 +35175,6 @@ "bkE" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -36282,7 +35196,6 @@ "bkH" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -36308,7 +35221,6 @@ "bkK" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -36330,19 +35242,18 @@ /turf/open/floor/plasteel, /area/shuttle/arrival) "bkN" = ( +/obj/structure/closet/wardrobe/black, /turf/open/floor/plasteel/neutral/side, /area/shuttle/arrival) "bkO" = ( +/obj/structure/closet/wardrobe/grey, /turf/open/floor/plasteel/blue/corner, /area/shuttle/arrival) "bkP" = ( /turf/open/floor/plasteel/blue/side, /area/shuttle/arrival) "bkQ" = ( -/obj/machinery/camera{ - c_tag = "Arrivals Shuttle 2"; - dir = 1 - }, +/obj/structure/closet/wardrobe/yellow, /turf/open/floor/plasteel/blue/corner{ dir = 8 }, @@ -36371,10 +35282,16 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/arrival) "bkU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, /obj/machinery/door/airlock/shuttle{ name = "Arrival Shuttle Airlock"; req_access_txt = "0" }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/shuttle/arrival) "bkV" = ( @@ -36456,9 +35373,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "blg" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -36471,9 +35386,7 @@ dir = 2 }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "blh" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -36487,9 +35400,7 @@ network = list("SS13") }, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "bli" = ( /obj/structure/closet/firecloset, /obj/machinery/camera{ @@ -36499,9 +35410,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "blj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -36516,9 +35425,7 @@ dir = 1 }, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "blk" = ( /obj/machinery/camera{ c_tag = "Atmospherics Tank 3"; @@ -36545,9 +35452,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "blm" = ( /obj/structure/closet/emcloset, /obj/machinery/camera{ @@ -36557,9 +35462,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "bln" = ( /obj/structure/cable/white{ d1 = 1; @@ -36591,14 +35494,14 @@ network = list("SS13") }, /obj/structure/cable/white{ + d1 = 2; + d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "blp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/camera{ @@ -36778,6 +35681,7 @@ id = "chapelmassdoor"; name = "Chapel Launcher Door" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/chapel/main) "blJ" = ( @@ -36806,17 +35710,13 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "blM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "blN" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -36825,9 +35725,7 @@ icon_state = "plant-22" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "blO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -36836,26 +35734,19 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "blU" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "blX" = ( /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "blY" = ( /obj/machinery/door/airlock/glass{ name = "Departure Lounge" @@ -36864,37 +35755,26 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "blZ" = ( /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bmb" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bmh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bmw" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bmx" = ( /turf/closed/wall, /area/space) @@ -36912,9 +35792,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bmD" = ( /turf/open/floor/plasteel, /area/space) @@ -36926,9 +35804,7 @@ icon_state = "plant-22" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bmH" = ( /turf/open/floor/plasteel, /area/space) @@ -37387,7 +36263,7 @@ height = 24; id = "syndicate"; name = "syndicate infiltrator"; - port_angle = 0; + port_direction = 1; roundstart_move = "syndicate_away"; width = 18 }, @@ -38434,9 +37310,7 @@ /turf/open/floor/plasteel/escape{ dir = 1 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsw" = ( /obj/structure/chair{ dir = 4 @@ -38449,9 +37323,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsx" = ( /obj/structure/chair{ dir = 4 @@ -38468,9 +37340,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsy" = ( /obj/structure/chair{ dir = 4 @@ -38478,12 +37348,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -38502,9 +37372,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "bsA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -38515,9 +37383,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "bsB" = ( /obj/machinery/door/airlock/glass{ name = "Departure Lounge" @@ -38534,9 +37400,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -38547,16 +37411,13 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/structure/cable/white{ d1 = 4; @@ -38564,9 +37425,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsE" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/machinery/light, @@ -38576,53 +37435,51 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -38637,31 +37494,29 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsL" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -38677,9 +37532,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsN" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ @@ -38697,9 +37550,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -38711,9 +37562,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsP" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -38724,9 +37573,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsQ" = ( /obj/structure/chair{ dir = 4 @@ -38746,9 +37593,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -38757,9 +37602,7 @@ icon_state = "2-8" }, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsS" = ( /obj/structure/cable/white{ d1 = 1; @@ -38767,9 +37610,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -38778,11 +37619,11 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsU" = ( /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -38795,11 +37636,11 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/escape, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsW" = ( /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/plasteel, @@ -38820,9 +37661,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsY" = ( /obj/structure/cable/white{ d1 = 1; @@ -38830,9 +37669,7 @@ icon_state = "1-4" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bsZ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass_mining{ @@ -38845,9 +37682,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bta" = ( /obj/structure/cable/white{ d1 = 4; @@ -38857,9 +37692,7 @@ /turf/open/floor/plasteel/brown{ dir = 9 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "btb" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -38872,9 +37705,7 @@ /turf/open/floor/plasteel/brown{ dir = 1 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "btc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -38886,9 +37717,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "btd" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -38899,9 +37728,7 @@ /turf/open/floor/plasteel/brown{ dir = 1 }, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bte" = ( /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/grille, @@ -38932,7 +37759,7 @@ dir = 2; dwidth = 4; height = 17; - name = "delta arrivals shuttle"; + name = "omega arrivals shuttle"; width = 9 }, /obj/docking_port/stationary{ @@ -38940,7 +37767,7 @@ dwidth = 4; height = 17; id = "arrivals_stationary"; - name = "delta arrivals"; + name = "omega arrivals"; width = 9 }, /turf/closed/wall/mineral/plastitanium, @@ -38976,9 +37803,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/secondary/entry{ - name = "Arrivals" - }) +/area/hallway/secondary/entry) "btn" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 8; @@ -38988,9 +37813,7 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/hallway/secondary/entry{ - name = "Arrivals" - }) +/area/hallway/secondary/entry) "bto" = ( /obj/machinery/computer/secure_data/syndie, /turf/open/floor/plasteel/vault{ @@ -39910,7 +38733,7 @@ height = 13; id = "ferry"; name = "ferry shuttle"; - port_angle = 0; + port_direction = 1; preferred_direction = 4; roundstart_move = "ferry_away"; width = 5 @@ -40081,7 +38904,7 @@ volume_rate = 200 }, /turf/open/space/basic, -/area/space) +/area/engine/engineering) "bxd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -40218,10 +39041,13 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/landmark/event_spawn, +/obj/structure/cable/white{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/open/floor/plating, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/maintenance/starboard/fore) "bxx" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/white{ @@ -40254,9 +39080,7 @@ /turf/open/floor/plasteel/neutral/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "bxA" = ( /obj/structure/cable/white{ d1 = 1; @@ -40298,9 +39122,7 @@ /turf/open/floor/plasteel/red/corner{ dir = 1 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "bxE" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -40322,9 +39144,7 @@ }, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "bxH" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event_spawn, @@ -40355,15 +39175,11 @@ "bxL" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "bxM" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, -/area/hallway/secondary/exit{ - name = "\improper Departure Lounge" - }) +/area/hallway/secondary/exit) "bxN" = ( /obj/structure/cable/white{ d1 = 4; @@ -40379,16 +39195,12 @@ "bxO" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar{ - name = "Atrium" - }) +/area/crew_quarters/bar/atrium) "bxP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/neutral/corner, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "bxQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -40398,9 +39210,7 @@ dir = 8; heat_capacity = 1e+006 }, -/area/hallway/primary/central{ - name = "Primary Hallway" - }) +/area/hallway/primary/central) "bxR" = ( /obj/structure/cable/white{ d1 = 1; @@ -40469,6 +39279,157 @@ heat_capacity = 1e+006 }, /area/hallway/secondary/entry) +"bxZ" = ( +/turf/closed/wall, +/area/maintenance/starboard/fore) +"bya" = ( +/turf/closed/wall, +/area/maintenance/starboard/fore) +"byb" = ( +/turf/closed/wall, +/area/maintenance/starboard/fore) +"byc" = ( +/turf/closed/wall, +/area/maintenance/starboard/fore) +"byd" = ( +/turf/closed/wall, +/area/maintenance/starboard/fore) +"bye" = ( +/turf/closed/wall, +/area/maintenance/fore) +"byf" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall, +/area/maintenance/starboard/fore) +"byg" = ( +/obj/structure/closet/emcloset/anchored, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/maintenance/starboard/fore) +"byh" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall, +/area/maintenance/starboard/fore) +"byi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/maintenance/starboard/fore) +"byj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "13" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/starboard/fore) +"byk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/landmark/xeno_spawn, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/maintenance/starboard/fore) +"byl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "13" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/starboard/fore) +"bym" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/maintenance/starboard/fore) +"byn" = ( +/obj/structure/closet/wardrobe/grey, +/turf/open/floor/plasteel/neutral, +/area/shuttle/arrival) +"byo" = ( +/turf/closed/wall, +/area/security/checkpoint) +"byp" = ( +/turf/closed/wall, +/area/security/checkpoint) +"byq" = ( +/obj/structure/cable/white{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/checkpoint) +"byr" = ( +/turf/closed/wall, +/area/security/checkpoint) +"bys" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall, +/area/security/checkpoint) +"byt" = ( +/turf/closed/wall, +/area/security/checkpoint) +"byu" = ( +/turf/closed/wall, +/area/security/checkpoint) +"byv" = ( +/turf/closed/wall, +/area/security/checkpoint) +"byw" = ( +/turf/closed/wall, +/area/security/checkpoint) +"byx" = ( +/turf/closed/wall, +/area/security/checkpoint) +"byy" = ( +/turf/closed/wall, +/area/security/checkpoint) +"byz" = ( +/turf/closed/wall, +/area/security/checkpoint) +"byA" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall, +/area/security/checkpoint) +"byB" = ( +/turf/closed/wall, +/area/security/checkpoint) +"byC" = ( +/turf/closed/wall, +/area/security/checkpoint) +"byD" = ( +/turf/closed/wall, +/area/security/checkpoint) (1,1,1) = {" aaa @@ -78328,7 +77289,7 @@ aad aad aad aad -abt +bye abW acN adF @@ -79913,7 +78874,7 @@ aMo aNs aHM aPd -aQh +aQc aRf aSk aTr @@ -80170,7 +79131,7 @@ aMp aNt aOi aPe -aQi +aQg aRh aSl aTs @@ -80683,8 +79644,8 @@ aLc aMr aNv aOh -aPg -aQi +aPb +aQg aRj aSn aTu @@ -81197,10 +80158,10 @@ aLe aHM aNx aOh -aPg +aPb aQl aRk -aSo +anH aTw aTw aTw @@ -81453,11 +80414,11 @@ asg ase ara ara -aOl +all aPi aQm -aRl -aSp +aIz +awO aTx aTx aVo @@ -81713,26 +80674,26 @@ arb aOm aPj aQn -aRm -aSq +amg +aIZ aTy aUx aVp aUx aWP -aSs +aDc aYc aYW -aXv -aXv +byo +byo bbx bcm bdd beb -aXv -aZT +byo +bys bfK -bgg +aQd bgT bhG bxY @@ -81970,26 +80931,26 @@ aNy aOn aPk aQo -aRm -aSr +amg +anQ aTz aUy aUy aUy aWQ -aXv +abt aYc aYW -aXv +byo baI bby bcn bde bec beH -aXv +byo bfK -bgg +aQd bgU bhH bix @@ -82227,17 +81188,17 @@ ard aOo aPl aQp -aRn -aSr +ami +anQ aTA aUy aVq aUy aWR -aXv +abt aYd bls -aZS +byq baJ bbz bco @@ -82484,26 +81445,26 @@ aNz aOp aPm aQq -aRo -aSr +amk +anQ aTB aUy aUy aUy aWS -aXv +abt aYe aYW -aXv +byo baK bbA bcp bdg bee beJ -aXv +byo bfK -bgi +avV bgU bhH bix @@ -82525,7 +81486,7 @@ bko bkQ bkV bla -blz +bld bkb aaa aaa @@ -82741,26 +81702,26 @@ arf aOq aPn aQr -aRo -aSs +amk +aDc aTC aUz aVr aUz aWT -aSq +aIZ aYc aYW -aZT -aXv -aXv -aXv +bys +byo +byo +byo bdh -aXv -aXv -aXv +byo +byo +byo bfM -bgi +avV bgV bhG biw @@ -82779,7 +81740,7 @@ bko bko bko bko -bkN +byn bka bka bkb @@ -82998,8 +81959,8 @@ ara aOr aPo aQs -aRp -aSo +aCM +anH aTD aTD aVs @@ -83012,12 +81973,12 @@ aTD baL aTD bcq -bdi +aED aTD -bdi +aED aTD -bfN -bgj +aFG +aGx bgR bhJ biy @@ -83231,7 +82192,7 @@ aoT apZ ara ara -atk +ara auf avk awp @@ -83252,7 +82213,7 @@ aJY aLh aMv ayP -aOs +ayV aPp aQt blp @@ -83274,7 +82235,7 @@ bef beK bfg bfO -bgk +anc bgW bhK biz @@ -83285,14 +82246,14 @@ aaa bjO bjZ bka -bka +bkm bka bkb bkb bkb bkb bkG -bka +bkm bka bka aaa @@ -83529,8 +82490,8 @@ bcs bdk aZa beL -bfh -aOs +aHE +ayV bgl bgX bhL @@ -84007,7 +82968,7 @@ aui avn aws axa -atk +ara ayP azM aAT @@ -84264,7 +83225,7 @@ auj avo awt axb -atk +ara ayQ azN aAU @@ -84521,7 +83482,7 @@ auk avp awu axc -atk +ara ayR azO aAV @@ -84539,7 +83500,7 @@ aCe aNB ayP aPd -aQh +aQc aRr aSx aTJ @@ -84778,7 +83739,7 @@ aul avq awv axd -atk +ara ayS azP aso @@ -85566,7 +84527,7 @@ abt abt abt abt -aPv +aPp avU aRv aSB @@ -86037,18 +84998,18 @@ aad aad aad aad -abt +bxZ abL acu adm bxw -adm +bym afB agu ahj adY aiH -ajG +alz akK alz amu @@ -86294,9 +85255,9 @@ aad aad aad aad -abt +bxZ abM -acv +byi adn adn adn @@ -86551,9 +85512,9 @@ aad aad aad aad -abt -abN -acw +bxZ +byf +byj adn adZ aeP @@ -86808,9 +85769,9 @@ aac aad aad aad -abt -abO -acx +bxZ +byg +byk adn aea aeQ @@ -87065,9 +86026,9 @@ aad aad aad aad -abt -abN -acy +bxZ +byf +byl adn aeb aeR @@ -87343,7 +86304,7 @@ ape aqm abt abN -atu +acw abt aad aad @@ -106004,4 +104965,4 @@ aaa aaa aaa aaa -"} +"} \ No newline at end of file diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 502f7ba293..9ac324de33 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -297,7 +297,7 @@ height = 24; id = "syndicate"; name = "syndicate infiltrator"; - port_angle = 0; + port_direction = 1; roundstart_move = "syndicate_away"; width = 18 }, @@ -2168,9 +2168,7 @@ /turf/open/floor/plasteel/black, /area/ai_monitored/turret_protected/aisat_interior) "afe" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-09"; - name = "Photosynthetic Potted plant"; +/obj/item/twohanded/required/kirbyplants/photosynthetic{ pixel_y = 10 }, /obj/structure/cable/yellow{ @@ -2198,9 +2196,7 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "afg" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-09"; - name = "Photosynthetic Potted plant"; +/obj/item/twohanded/required/kirbyplants/photosynthetic{ pixel_y = 10 }, /obj/structure/cable/yellow{ @@ -3033,13 +3029,8 @@ /area/security/main) "ahh" = ( /obj/structure/lattice/catwalk, -/obj/structure/showcase{ - density = 0; - desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; +/obj/structure/showcase/cyborg/old{ dir = 2; - icon = 'icons/mob/robots.dmi'; - icon_state = "robot_old"; - name = "Cyborg Statue"; pixel_y = 20 }, /turf/open/space, @@ -3325,8 +3316,7 @@ }, /area/security/prison) "ahJ" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Prison Wing APC"; pixel_x = 1; @@ -3804,8 +3794,7 @@ /obj/item/storage/box/firingpins, /obj/item/storage/box/firingpins, /obj/item/key/security, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Armory APC"; pixel_x = 24 @@ -4076,8 +4065,6 @@ "ajo" = ( /obj/machinery/vending/coffee, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/red/side{ @@ -4415,8 +4402,6 @@ /obj/structure/table/wood, /obj/machinery/recharger, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/machinery/light{ @@ -4717,9 +4702,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/whitered/side{ dir = 5 }, @@ -4967,7 +4950,7 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "ali" = ( -/obj/machinery/door/airlock{ +/obj/machinery/door/airlock/abandoned{ id_tag = "mainthideout"; name = "Hideout" }, @@ -5369,8 +5352,7 @@ d2 = 8; icon_state = "0-8" }, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 4; name = "Brig APC"; pixel_x = 24 @@ -5668,7 +5650,7 @@ }, /area/maintenance/department/crew_quarters/dorms) "amH" = ( -/obj/machinery/door/airlock/atmos{ +/obj/machinery/door/airlock/atmos/abandoned{ name = "Atmospherics Maintenance"; req_access_txt = "12;24" }, @@ -5932,7 +5914,7 @@ /turf/open/space/basic, /area/space) "anm" = ( -/obj/machinery/door/airlock/maintenance{ +/obj/machinery/door/airlock/maintenance/abandoned{ name = "Pete's Speakeasy"; req_access_txt = "12" }, @@ -6585,8 +6567,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = -32 }, /turf/open/floor/mineral/titanium/blue, @@ -6599,8 +6579,6 @@ dir = 8 }, /obj/machinery/status_display{ - density = 0; - layer = 3; pixel_x = 32 }, /turf/open/floor/mineral/titanium/blue, @@ -7486,12 +7464,9 @@ d2 = 8; icon_state = "0-8" }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "bridgespace"; - name = "bridge external shutters"; - opacity = 0 + name = "bridge external shutters" }, /turf/open/floor/plating, /area/bridge) @@ -7656,7 +7631,7 @@ id = "pod1"; launch_status = 0; name = "monastery shuttle"; - port_angle = 180; + port_direction = 2; width = 5 }, /turf/open/floor/mineral/titanium/blue, @@ -7950,8 +7925,6 @@ /area/bridge) "arK" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/item/folder/yellow{ @@ -9405,22 +9378,16 @@ /turf/open/floor/plating, /area/maintenance/fore) "auK" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "bridgespace"; - name = "bridge external shutters"; - opacity = 0 + name = "bridge external shutters" }, /turf/open/floor/plasteel/black, /area/bridge) "auL" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "bridgespace"; - name = "bridge external shutters"; - opacity = 0 + name = "bridge external shutters" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/black, @@ -9701,7 +9668,7 @@ height = 5; id = "laborcamp"; name = "labor camp shuttle"; - port_angle = 90; + port_direction = 4; width = 9 }, /obj/docking_port/stationary{ @@ -10205,8 +10172,6 @@ dir = 4 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/arrival{ @@ -10240,8 +10205,7 @@ /area/crew_quarters/fitness/recreation) "awC" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-05"; - layer = 4.1 + icon_state = "plant-05" }, /obj/machinery/power/apc{ dir = 1; @@ -10563,12 +10527,9 @@ /area/bridge) "axf" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "bridgespace"; - name = "bridge external shutters"; - opacity = 0 + name = "bridge external shutters" }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -10728,8 +10689,7 @@ /area/security/brig) "axF" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel, /area/hallway/primary/fore) @@ -10810,7 +10770,6 @@ /area/crew_quarters/heads/captain) "axS" = ( /obj/machinery/power/apc{ - cell_type = 2500; dir = 1; name = "Captain's Office APC"; pixel_y = 24 @@ -10925,12 +10884,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "bridgespace"; - name = "bridge external shutters"; - opacity = 0 + name = "bridge external shutters" }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -11495,8 +11451,7 @@ /area/bridge) "azo" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 4; name = "Bridge APC"; areastring = "/area/bridge"; @@ -11956,8 +11911,7 @@ /area/hallway/primary/fore) "aAo" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-14"; - layer = 4.1 + icon_state = "plant-14" }, /turf/open/floor/plasteel/red/side{ dir = 4 @@ -12297,7 +12251,6 @@ }, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-20"; - layer = 4.1; pixel_y = 3 }, /turf/open/floor/plasteel/black, @@ -12401,8 +12354,7 @@ }, /area/ai_monitored/turret_protected/ai_upload) "aBx" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Upload APC"; areastring = "/area/ai_monitored/turret_protected/ai_upload"; @@ -12490,8 +12442,6 @@ /area/crew_quarters/heads/hop) "aBF" = ( /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /obj/structure/bed/dogbed/ian, @@ -12508,8 +12458,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/hop) "aBH" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 8; name = "Central Hall APC"; pixel_x = -25 @@ -12639,8 +12588,7 @@ /area/crew_quarters/fitness/recreation) "aBY" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-05"; - layer = 4.1 + icon_state = "plant-05" }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) @@ -12751,7 +12699,6 @@ /obj/structure/table/wood, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-18"; - layer = 4.1; pixel_y = 12 }, /turf/open/floor/plasteel/grimy, @@ -13842,9 +13789,7 @@ pixel_x = -1; pixel_y = 9 }, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_y = 0 - }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ pixel_x = 7; pixel_y = 2 @@ -13917,7 +13862,7 @@ /area/storage/primary) "aEx" = ( /obj/structure/table/wood, -/obj/item/pinpointer, +/obj/item/pinpointer/nuke, /obj/item/disk/nuclear, /obj/machinery/light{ dir = 8 @@ -14064,8 +14009,7 @@ /area/crew_quarters/heads/hop) "aEM" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-24"; - layer = 4.1 + icon_state = "plant-24" }, /obj/structure/cable{ d1 = 1; @@ -14389,13 +14333,10 @@ name = "Reception Window"; req_access_txt = "0" }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "hop"; layer = 3.1; - name = "privacy shutters"; - opacity = 0 + name = "privacy shutters" }, /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) @@ -14700,13 +14641,8 @@ }, /area/crew_quarters/heads/captain) "aGn" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-09"; - layer = 3.1; - light_color = "#2cb2e8"; - light_range = 3; - name = "Photosynthetic Potted plant"; - pixel_y = 0 +/obj/item/twohanded/required/kirbyplants/photosynthetic{ + layer = 3.1 }, /obj/structure/window/reinforced/fulltile, /turf/open/floor/plating, @@ -14986,7 +14922,6 @@ "aHa" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_y = 3 }, /turf/open/floor/plasteel/vault{ @@ -15121,7 +15056,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aHn" = ( -/obj/machinery/door/airlock{ +/obj/machinery/door/airlock/abandoned{ name = "Starboard Emergency Storage"; req_access_txt = "0" }, @@ -15722,8 +15657,6 @@ "aID" = ( /obj/structure/chair, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 30 }, /turf/open/floor/plasteel/red/side{ @@ -16596,8 +16529,7 @@ /area/hallway/primary/central) "aKg" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-04"; - layer = 4.1 + icon_state = "plant-04" }, /turf/open/floor/plasteel/white/corner{ tag = "icon-whitecorner (EAST)"; @@ -16970,6 +16902,7 @@ id = "trash"; name = "disposal bay door" }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/maintenance/disposal) "aLo" = ( @@ -17253,8 +17186,7 @@ pixel_y = 22 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-14"; - layer = 4.1 + icon_state = "plant-14" }, /turf/open/floor/plasteel, /area/teleporter) @@ -17389,8 +17321,6 @@ }, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 30; supply_display = 1 }, @@ -17433,9 +17363,7 @@ dir = 4; id = "packageSort2" }, -/obj/structure/plasticflaps{ - opacity = 0 - }, +/obj/structure/plasticflaps, /obj/machinery/light/small{ dir = 1 }, @@ -17654,8 +17582,7 @@ /area/shuttle/escape) "aMK" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel/escape{ dir = 9 @@ -17679,8 +17606,7 @@ }, /area/hallway/secondary/exit/departure_lounge) "aMO" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Departure Lounge APC"; areastring = "/area/hallway/secondary/exit/departure_lounge"; @@ -17697,7 +17623,6 @@ "aMP" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_y = 3 }, /obj/structure/extinguisher_cabinet{ @@ -17841,8 +17766,7 @@ /area/crew_quarters/toilet/auxiliary) "aNe" = ( /obj/structure/cable, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 2; name = "Auxiliary Restrooms APC"; pixel_y = -24 @@ -18377,8 +18301,7 @@ /area/hallway/secondary/exit/departure_lounge) "aOr" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-16"; - layer = 4.1 + icon_state = "plant-16" }, /obj/machinery/firealarm{ dir = 1; @@ -20209,7 +20132,6 @@ /area/quartermaster/storage) "aSl" = ( /obj/machinery/power/apc{ - cell_type = 2500; dir = 4; name = "Cargo Maintenance APC"; pixel_x = 24 @@ -20667,8 +20589,6 @@ id = "QMLoad" }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 30; supply_display = 1 }, @@ -20903,7 +20823,7 @@ dwidth = 4; height = 15; name = "Pubby emergency shuttle"; - port_angle = 90; + port_direction = 4; width = 18 }, /turf/open/floor/plating, @@ -21669,7 +21589,6 @@ id = "barshutters"; name = "Bar Lockdown"; pixel_x = 28; - pixel_y = 0; req_access_txt = "28" }, /obj/item/device/radio/intercom{ @@ -22373,8 +22292,7 @@ /area/hallway/secondary/exit/departure_lounge) "aWL" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-14"; - layer = 4.1 + icon_state = "plant-14" }, /turf/open/floor/plasteel/escape{ dir = 6 @@ -22776,7 +22694,6 @@ "aXD" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_y = 3 }, /turf/open/floor/plasteel/escape{ @@ -22792,8 +22709,7 @@ /area/hallway/secondary/exit/departure_lounge) "aXF" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /obj/structure/extinguisher_cabinet{ pixel_x = 27 @@ -22824,13 +22740,10 @@ name = "Security Checkpoint"; req_access_txt = "1" }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "papersplease"; layer = 3.1; - name = "privacy shutters"; - opacity = 0 + name = "privacy shutters" }, /obj/item/folder/red, /obj/item/pen, @@ -22996,7 +22909,6 @@ /obj/structure/table/reinforced, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-18"; - layer = 4.1; pixel_y = 10 }, /turf/open/floor/plasteel/darkred/side{ @@ -23030,7 +22942,6 @@ /obj/structure/disposalpipe/segment, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-18"; - layer = 4.1; pixel_y = 10 }, /turf/open/floor/plasteel/darkred/side{ @@ -23390,8 +23301,7 @@ /area/crew_quarters/kitchen) "aYY" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-05"; - layer = 4.1 + icon_state = "plant-05" }, /turf/open/floor/plasteel/black, /area/crew_quarters/bar) @@ -24379,8 +24289,7 @@ /area/hydroponics) "bbd" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel/green/corner, /area/hydroponics) @@ -24709,13 +24618,10 @@ req_access_txt = "1" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id = "papersplease"; layer = 3.1; - name = "privacy shutters"; - opacity = 0 + name = "privacy shutters" }, /obj/item/crowbar, /obj/effect/turf_decal/delivery, @@ -26196,8 +26102,7 @@ /area/hallway/primary/central) "bfp" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/button/door{ id = "kitchenwindowshutters"; @@ -26280,8 +26185,6 @@ d2 = 2 }, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 30 }, /turf/open/floor/plasteel/black, @@ -26406,7 +26309,7 @@ height = 5; id = "mining"; name = "mining shuttle"; - port_angle = 90; + port_direction = 4; width = 7 }, /obj/docking_port/stationary{ @@ -26698,8 +26601,7 @@ /area/crew_quarters/bar) "bgv" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-14"; - layer = 4.1 + icon_state = "plant-14" }, /turf/open/floor/plasteel/neutral/corner{ dir = 4 @@ -27883,8 +27785,7 @@ /area/hallway/primary/central) "biQ" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-05"; - layer = 4.1 + icon_state = "plant-05" }, /turf/open/floor/plasteel/blue/side, /area/hallway/primary/central) @@ -27895,8 +27796,7 @@ dir = 1 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-05"; - layer = 4.1 + icon_state = "plant-05" }, /turf/open/floor/plasteel/blue/corner{ dir = 8 @@ -27989,8 +27889,7 @@ /area/medical/medbay/central) "bji" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel/blue/side, /area/hallway/primary/central) @@ -28014,8 +27913,7 @@ /area/hallway/primary/central) "bjn" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel/purple/side, /area/hallway/primary/central) @@ -29004,7 +28902,6 @@ "blM" = ( /obj/machinery/r_n_d/server/core, /obj/structure/sign/poster/random{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/circuit/telecomms/server, @@ -29015,7 +28912,6 @@ light_color = "#c1caff" }, /obj/structure/sign/poster/random{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plasteel/black/telecomms/server/walkway, @@ -29023,7 +28919,6 @@ "blO" = ( /obj/machinery/r_n_d/server/robotics, /obj/structure/sign/poster/random{ - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/circuit/telecomms/server, @@ -29080,10 +28975,7 @@ /turf/open/floor/engine, /area/science/explab) "blV" = ( -/obj/structure/sign/atmosplaque{ - desc = "A guide to the drone shell dispenser, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today."; - icon_state = "kiddieplaque"; - name = "\improper 'Perfect Drone' sign"; +/obj/structure/sign/kiddieplaque/perfect_drone{ pixel_y = 32 }, /turf/open/floor/engine, @@ -29349,8 +29241,7 @@ /area/security/checkpoint/medical) "bmw" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-05"; - layer = 4.1 + icon_state = "plant-05" }, /turf/open/floor/plasteel/whiteblue/corner{ dir = 8 @@ -29749,8 +29640,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/firealarm{ dir = 8; - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /obj/structure/table, /obj/item/storage/box/gloves{ @@ -30002,8 +29892,7 @@ /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; - pixel_x = -28; - pixel_y = 0 + pixel_x = -28 }, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 @@ -30323,8 +30212,7 @@ }, /obj/machinery/light, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -30579,8 +30467,7 @@ frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; - pixel_x = -30; - pixel_y = 0 + pixel_x = -30 }, /turf/open/floor/plasteel/blue, /area/medical/genetics) @@ -30855,8 +30742,7 @@ "bqa" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/sign/directions/engineering{ - pixel_x = 32; - pixel_y = 0 + pixel_x = 32 }, /turf/open/floor/plasteel/yellow/corner{ dir = 4 @@ -31525,10 +31411,7 @@ }, /area/medical/medbay/central) "brj" = ( -/obj/machinery/chem_master{ - layer = 2.7; - pixel_x = -2 - }, +/obj/machinery/chem_master, /turf/open/floor/plasteel/whiteyellow/side{ dir = 9 }, @@ -31554,10 +31437,7 @@ }, /area/medical/chemistry) "brm" = ( -/obj/machinery/chem_master{ - layer = 2.7; - pixel_x = -2 - }, +/obj/machinery/chem_master, /obj/machinery/button/door{ id = "chemistry_shutters"; name = "Shutters Control"; @@ -32730,7 +32610,7 @@ height = 13; id = "ferry"; name = "ferry shuttle"; - port_angle = 0; + port_direction = 1; preferred_direction = 4; roundstart_move = "ferry_away"; width = 5 @@ -33090,9 +32970,7 @@ /area/science/robotics/lab) "buw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-07"; - name = "Photosynthetic Potted plant"; +/obj/item/twohanded/required/kirbyplants/photosynthetic{ pixel_y = 10 }, /turf/open/floor/plasteel/darkpurple/side{ @@ -33109,9 +32987,7 @@ /turf/open/floor/plasteel/black, /area/science/server) "buy" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-07"; - name = "Photosynthetic Potted plant"; +/obj/item/twohanded/required/kirbyplants/photosynthetic{ pixel_y = 10 }, /turf/open/floor/plasteel/darkpurple/side{ @@ -33154,8 +33030,7 @@ dir = 8 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-14"; - layer = 4.1 + icon_state = "plant-14" }, /turf/open/floor/plasteel/white, /area/science/xenobiology) @@ -33661,8 +33536,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Research Lobby APC"; pixel_y = 25 @@ -33769,8 +33643,7 @@ /turf/closed/wall, /area/science/research) "bvL" = ( -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 1; name = "Research Division APC"; pixel_y = 25 @@ -33829,7 +33702,6 @@ dir = 1 }, /obj/structure/extinguisher_cabinet{ - pixel_x = 0; pixel_y = 30 }, /turf/open/floor/plasteel/darkpurple/side{ @@ -33872,8 +33744,7 @@ /area/science/research) "bvU" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-18"; - layer = 4.1 + icon_state = "plant-18" }, /turf/open/floor/plasteel/darkpurple/side{ dir = 1 @@ -34020,8 +33891,7 @@ icon_state = "0-4"; d2 = 4 }, -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 8; name = "Xenobiology APC"; pixel_x = -25 @@ -34316,9 +34186,7 @@ dir = 4 }, /obj/structure/bed/roller, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/whiteblue/corner, /area/medical/medbay/central) "bwQ" = ( @@ -35510,9 +35378,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-09"; - name = "Photosynthetic Potted plant"; +/obj/item/twohanded/required/kirbyplants/photosynthetic{ pixel_y = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -35888,8 +35754,7 @@ dir = 8; name = "Monastery Monitor"; network = list("Monastery"); - pixel_x = 28; - pixel_y = 0 + pixel_x = 28 }, /turf/open/floor/plasteel/black, /area/hallway/secondary/entry) @@ -35986,8 +35851,7 @@ dir = 5 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel/whitegreen/side, /area/medical/medbay/zone3) @@ -36133,8 +35997,7 @@ /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /obj/machinery/keycard_auth{ - pixel_x = 26; - pixel_y = 0 + pixel_x = 26 }, /turf/open/floor/plasteel/cmo, /area/crew_quarters/heads/cmo) @@ -36787,7 +36650,6 @@ "bBB" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-20"; - layer = 4.1; pixel_y = 3 }, /turf/open/floor/plasteel/vault{ @@ -38010,7 +37872,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bEm" = ( -/obj/machinery/door/airlock/atmos{ +/obj/machinery/door/airlock/atmos/abandoned{ name = "Atmospherics Maintenance"; req_access_txt = "12;24" }, @@ -38222,8 +38084,7 @@ /area/crew_quarters/heads/cmo) "bEH" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-16"; - layer = 4.1 + icon_state = "plant-16" }, /turf/open/floor/plasteel/cmo, /area/crew_quarters/heads/cmo) @@ -38342,8 +38203,7 @@ /area/hallway/primary/aft) "bEQ" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-03"; - layer = 4.1 + icon_state = "plant-03" }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -38387,7 +38247,6 @@ /obj/item/pen, /obj/item/stamp/rd, /obj/machinery/status_display{ - density = 0; pixel_y = -30; supply_display = 0 }, @@ -39331,8 +39190,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bGU" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; name = "Virology APC"; pixel_y = 24 @@ -39417,8 +39275,6 @@ "bHc" = ( /obj/machinery/computer/med_data, /obj/machinery/status_display{ - density = 0; - layer = 4; pixel_y = 32 }, /turf/open/floor/plasteel/freezer, @@ -39630,7 +39486,6 @@ /obj/machinery/button/door{ id = "toxvent"; name = "Aft Vent Control"; - pixel_x = 0; pixel_y = -24; req_access_txt = "0"; req_one_access_txt = "8;24" @@ -39828,7 +39683,6 @@ frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; - pixel_x = 0; pixel_y = 28 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -40627,7 +40481,6 @@ }, /obj/machinery/space_heater, /obj/structure/sign/poster/random{ - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plasteel/green/side, @@ -40648,7 +40501,6 @@ pixel_x = 32 }, /obj/structure/sign/poster/random{ - pixel_x = 0; pixel_y = -32 }, /turf/open/floor/plasteel/green/side{ @@ -40998,9 +40850,7 @@ /area/medical/medbay/central) "bKB" = ( /obj/structure/bed/roller, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/freezer, /area/medical/surgery) "bKC" = ( @@ -41577,8 +41427,7 @@ /area/hallway/primary/aft) "bLT" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "applebush"; - layer = 4.1 + icon_state = "applebush" }, /obj/machinery/airalarm{ pixel_y = 22 @@ -41795,6 +41644,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/fans/tiny, /turf/open/floor/plating, /area/science/mineral_storeroom) "bMr" = ( @@ -41926,7 +41776,6 @@ }, /obj/item/storage/box/syringes, /obj/structure/reagent_dispensers/virusfood{ - density = 0; pixel_x = 32 }, /obj/item/reagent_containers/spray/cleaner, @@ -43456,7 +43305,7 @@ dir = 2; network = list("SS13") }, -/obj/item/circuitboard/computer/shuttle/monastery_shuttle, +/obj/item/circuitboard/computer/monastery_shuttle, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bQx" = ( @@ -44660,7 +44509,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bTf" = ( -/obj/machinery/door/airlock/atmos{ +/obj/machinery/door/airlock/atmos/abandoned{ name = "Atmospherics Maintenance"; req_access_txt = "12;24" }, @@ -45920,7 +45769,7 @@ /area/storage/tech) "bVL" = ( /obj/structure/table, -/obj/item/storage/box/metalfoam{ +/obj/item/storage/box/smart_metal_foam{ pixel_x = 4; pixel_y = 7 }, @@ -46639,8 +46488,7 @@ amount = 50 }, /obj/item/stack/cable_coil, -/obj/machinery/power/apc{ - cell_type = 10000; +/obj/machinery/power/apc/highcap/ten_k{ dir = 8; name = "Engine Room APC"; areastring = "/area/engine/engine_smes"; @@ -46922,7 +46770,6 @@ dir = 1; name = "Auxillary Base Monitor"; network = list("AuxBase"); - pixel_x = 0; pixel_y = -28 }, /obj/machinery/computer/shuttle/mining, @@ -47190,8 +47037,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bYG" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 8; name = "Engineering Maintenance APC"; pixel_x = -25; @@ -47588,8 +47434,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "bZc" = ( -/obj/machinery/power/apc{ - cell_type = 15000; +/obj/machinery/power/apc/highcap/fifteen_k{ dir = 4; name = "Engineering APC"; pixel_x = 28 @@ -48314,8 +48159,7 @@ dir = 4; name = "turbine vent monitor"; network = list("Turbine"); - pixel_x = -29; - pixel_y = 0 + pixel_x = -29 }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 @@ -48803,7 +48647,6 @@ /obj/structure/table/wood, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-18"; - layer = 4.1; pixel_y = 8 }, /obj/machinery/camera{ @@ -49492,7 +49335,6 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /turf/open/floor/plating, @@ -49599,8 +49441,7 @@ /area/chapel/main/monastery) "cdz" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-08"; - layer = 4.1 + icon_state = "plant-08" }, /turf/open/floor/plasteel/chapel{ dir = 4 @@ -50114,8 +49955,7 @@ /area/chapel/main/monastery) "ceK" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-08"; - layer = 4.1 + icon_state = "plant-08" }, /turf/open/floor/plasteel/black, /area/chapel/main/monastery) @@ -52041,7 +51881,7 @@ id = "whiteship"; launch_status = 0; name = "White Ship"; - port_angle = 90; + port_direction = 4; preferred_direction = 1; roundstart_move = "whiteship_away"; timid = null; @@ -53310,8 +53150,7 @@ /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) "cmI" = ( -/obj/machinery/power/apc{ - cell_type = 5000; +/obj/machinery/power/apc/highcap/five_k{ dir = 1; layer = 4; name = "Telecomms Server APC"; @@ -54146,7 +53985,6 @@ /obj/machinery/button/door{ id = "barshutters"; name = "Bar Lockdown"; - pixel_x = 0; pixel_y = 26; req_access_txt = "28" }, @@ -55139,7 +54977,6 @@ /obj/structure/table/wood, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-18"; - layer = 4.1; pixel_y = 8 }, /turf/open/floor/carpet, @@ -55714,8 +55551,7 @@ dir = 8 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /turf/open/floor/plasteel/black, /area/chapel/main/monastery) @@ -55780,8 +55616,7 @@ dir = 4 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/black, /area/chapel/main/monastery) @@ -56473,8 +56308,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/black, /area/chapel/main/monastery) @@ -56580,8 +56414,7 @@ /area/chapel/main/monastery) "cvM" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10"; - layer = 4.1 + icon_state = "plant-10" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -57907,7 +57740,6 @@ /obj/structure/table/wood, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-05"; - layer = 4.1; pixel_y = 10 }, /turf/open/floor/plasteel/vault{ @@ -57952,7 +57784,6 @@ /obj/structure/table/wood, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-05"; - layer = 4.1; pixel_y = 10 }, /turf/open/floor/plasteel/vault{ @@ -58378,6 +58209,42 @@ }, /turf/open/floor/plasteel/black, /area/chapel/office) +"cBN" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) +"cBO" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) +"cBP" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) +"cBQ" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) +"cBR" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) +"cBS" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) +"cBT" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) +"cBU" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) +"cBV" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) (1,1,1) = {" aaa @@ -72108,11 +71975,11 @@ aaa aaa aaa aaa -bVq -cBF -bVq -cBG -bVq +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72356,20 +72223,20 @@ aaa aaa aaa aFS -aFT -aFT +cBN +cBN aKs aFS aFS -aFT -aFT +cBN +cBN aFS aKs -cBC -aOc -aPj -aOc -cBH +aFS +aKs +aFS +aFS +aFS aaa aaa aaa @@ -72616,17 +72483,17 @@ aFS aIs aJx aJx -aFT +cBN aMI aNZ aNZ aNZ aMI -cBD -aOd -aPk -aQq -cBI +aNZ +aMI +aNZ +aVJ +aWD aaa aaa aaa @@ -72879,11 +72746,11 @@ aIx aIx aIx aIx -cBE -aOc -aPl -aOc -cBJ +aIx +aIx +aIx +aVJ +aWD aaa aaa aaa @@ -73130,7 +72997,7 @@ aFS aIu aJy aKt -aFT +cBN aIx aOa aOa @@ -73895,19 +73762,19 @@ aaa aaa aaa aaa -aFT +cBN aGQ aHw aIw aIw -aFT +cBN aIx aIx aOc aPj aOc aIx -aFT +cBN aMI aMI aMI @@ -95714,8 +95581,8 @@ ajv aju ajt alQ -alb -alb +cBt +cBt aiS anY apt @@ -95972,7 +95839,7 @@ akh alc alR amF -alb +cBt anm ajv ajv @@ -96229,7 +96096,7 @@ cBm cBp alS amG -alb +cBt aiS aiS aiS @@ -103970,8 +103837,8 @@ aaa aaa aaa aLn -aLn aNT +aQo aPg aQl aRu @@ -123913,4 +123780,4 @@ aaa aaa aaa aaa -"} +"} \ No newline at end of file diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index ca7c26625b..72a05373eb 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( /turf/open/space/basic, /area/space) @@ -58,10 +58,7 @@ /obj/item/stack/medical/ointment{ heal_burn = 10 }, -/turf/open/floor/holofloor{ - icon_state = "asteroid_warn_side"; - dir = 8 - }, +/turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/bunker) "am" = ( /obj/structure/table/wood{ @@ -69,7 +66,6 @@ }, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-05"; - layer = 4.1; pixel_y = 4 }, /turf/open/floor/holofloor{ @@ -160,10 +156,7 @@ "aA" = ( /obj/structure/table, /obj/machinery/recharger, -/turf/open/floor/holofloor{ - icon_state = "asteroidfloor"; - dir = 8 - }, +/turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/bunker) "aB" = ( /obj/structure/table/wood, @@ -213,10 +206,7 @@ "aJ" = ( /obj/structure/table, /obj/item/gun/energy/laser, -/turf/open/floor/holofloor{ - icon_state = "asteroidfloor"; - dir = 8 - }, +/turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/bunker) "aK" = ( /obj/structure/chair/wood/normal{ @@ -301,7 +291,6 @@ /obj/structure/table/wood, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-05"; - layer = 4.1; pixel_y = 10 }, /turf/open/floor/holofloor{ @@ -360,10 +349,7 @@ /obj/item/stack/medical/bruise_pack{ heal_brute = 10 }, -/turf/open/floor/holofloor{ - icon_state = "asteroid_warn_side"; - dir = 8 - }, +/turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/bunker) "bf" = ( /obj/structure/table/wood, @@ -427,16 +413,14 @@ /obj/structure/table/glass, /obj/item/surgicaldrill, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 9 + icon_state = "white" }, /area/holodeck/rec_center/medical) "br" = ( /obj/structure/table/glass, /obj/item/hemostat, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 1 + icon_state = "white" }, /area/holodeck/rec_center/medical) "bs" = ( @@ -446,16 +430,14 @@ }, /obj/item/circular_saw, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 1 + icon_state = "white" }, /area/holodeck/rec_center/medical) "bt" = ( /obj/structure/table/glass, /obj/item/retractor, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 1 + icon_state = "white" }, /area/holodeck/rec_center/medical) "bu" = ( @@ -463,8 +445,7 @@ /obj/item/stack/medical/gauze, /obj/item/cautery, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 5 + icon_state = "white" }, /area/holodeck/rec_center/medical) "bv" = ( @@ -492,33 +473,21 @@ /turf/open/floor/holofloor/beach, /area/holodeck/rec_center/beach) "bz" = ( -/turf/open/floor/holofloor/basalt, /obj/structure/table, /obj/machinery/readybutton, -/turf/open/floor/holofloor{ - icon_state = "warningline"; - dir = 2 - }, +/turf/open/floor/holofloor/basalt, /area/holodeck/rec_center/thunderdome) "bA" = ( -/turf/open/floor/holofloor/basalt, /obj/structure/table, /obj/item/clothing/head/helmet/thunderdome, /obj/item/clothing/suit/armor/tdome/red, /obj/item/clothing/under/color/red, /obj/item/holo/esword/red, -/turf/open/floor/holofloor{ - icon_state = "warningline"; - dir = 2 - }, +/turf/open/floor/holofloor/basalt, /area/holodeck/rec_center/thunderdome) "bB" = ( -/turf/open/floor/holofloor/basalt, /obj/structure/table, -/turf/open/floor/holofloor{ - icon_state = "warningline"; - dir = 2 - }, +/turf/open/floor/holofloor/basalt, /area/holodeck/rec_center/thunderdome) "bC" = ( /obj/machinery/readybutton, @@ -557,8 +526,7 @@ /obj/item/surgical_drapes, /obj/item/razor, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 8 + icon_state = "white" }, /area/holodeck/rec_center/medical) "bJ" = ( @@ -568,8 +536,7 @@ /area/holodeck/rec_center/medical) "bK" = ( /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 4 + icon_state = "white" }, /area/holodeck/rec_center/medical) "bL" = ( @@ -635,8 +602,7 @@ /area/holodeck/rec_center/pet_lounge) "bX" = ( /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 10 + icon_state = "white" }, /area/holodeck/rec_center/medical) "bZ" = ( @@ -657,8 +623,7 @@ /obj/item/clothing/suit/apron/surgical, /obj/item/clothing/mask/surgical, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 6 + icon_state = "white" }, /area/holodeck/rec_center/medical) "cc" = ( @@ -713,14 +678,12 @@ /obj/structure/table/glass, /obj/machinery/reagentgrinder, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 9 + icon_state = "white" }, /area/holodeck/rec_center/medical) "cl" = ( /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 5 + icon_state = "white" }, /area/holodeck/rec_center/medical) "cm" = ( @@ -811,14 +774,12 @@ "cy" = ( /obj/machinery/chem_master, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 10 + icon_state = "white" }, /area/holodeck/rec_center/medical) "cz" = ( /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 6 + icon_state = "white" }, /area/holodeck/rec_center/medical) "cA" = ( @@ -947,8 +908,7 @@ dir = 1 }, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 9 + icon_state = "white" }, /area/holodeck/rec_center/medical) "cW" = ( @@ -961,8 +921,7 @@ dir = 1 }, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 5 + icon_state = "white" }, /area/holodeck/rec_center/medical) "cX" = ( @@ -1003,8 +962,7 @@ /area/holodeck/rec_center/pet_lounge) "de" = ( /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 8 + icon_state = "white" }, /area/holodeck/rec_center/medical) "df" = ( @@ -1016,14 +974,12 @@ "dg" = ( /obj/machinery/door/window/westleft, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 1 + icon_state = "white" }, /area/holodeck/rec_center/medical) "dh" = ( /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 1 + icon_state = "white" }, /area/holodeck/rec_center/medical) "di" = ( @@ -1032,12 +988,9 @@ "dj" = ( /obj/structure/bed, /obj/item/bedsheet/medical, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 10 + icon_state = "white" }, /area/holodeck/rec_center/medical) "dk" = ( @@ -1046,9 +999,7 @@ }, /obj/structure/bed, /obj/item/bedsheet/medical, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/holofloor{ icon_state = "white" }, @@ -1065,9 +1016,7 @@ }, /area/holodeck/rec_center/medical) "dm" = ( -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /turf/open/floor/holofloor{ icon_state = "white" }, @@ -1077,8 +1026,7 @@ dir = 1 }, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 6 + icon_state = "white" }, /area/holodeck/rec_center/medical) "do" = ( @@ -1115,16 +1063,12 @@ }, /area/holodeck/rec_center/thunderdome) "dt" = ( -/turf/open/floor/holofloor/basalt, /obj/structure/table, /obj/item/clothing/head/helmet/thunderdome, /obj/item/clothing/suit/armor/tdome/green, /obj/item/clothing/under/color/green, /obj/item/holo/esword/green, -/turf/open/floor/holofloor{ - icon_state = "warningline"; - dir = 1 - }, +/turf/open/floor/holofloor/basalt, /area/holodeck/rec_center/thunderdome) "du" = ( /turf/open/floor/holofloor/basalt, @@ -1158,11 +1102,7 @@ /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/refuel) "dz" = ( -/turf/open/floor/holofloor/grass, -/turf/open/floor/holofloor{ - icon_state = "warningline"; - dir = 2 - }, +/turf/open/floor/holofloor/plating, /area/holodeck/rec_center/spacechess) "dA" = ( /obj/item/banner/blue, @@ -1248,21 +1188,15 @@ }, /area/holodeck/rec_center/chapelcourt) "dM" = ( -/obj/machinery/conveyor/holodeck{ - dir = 5; - id = "holocoaster"; - movedir = null; - verted = -1 - }, -/turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) "dN" = ( /obj/machinery/conveyor/holodeck{ dir = 8; id = "holocoaster" }, /turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/area/holodeck/rec_center/school) "dO" = ( /obj/machinery/conveyor/holodeck{ dir = 6; @@ -1271,7 +1205,7 @@ verted = -1 }, /turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/area/holodeck/rec_center/school) "dP" = ( /turf/open/floor/holofloor{ dir = 8; @@ -1286,8 +1220,7 @@ dir = 8 }, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 9 + icon_state = "white" }, /area/holodeck/rec_center/firingrange) "dR" = ( @@ -1295,8 +1228,7 @@ dir = 1 }, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 1 + icon_state = "white" }, /area/holodeck/rec_center/firingrange) "dS" = ( @@ -1307,8 +1239,7 @@ dir = 4 }, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 5 + icon_state = "white" }, /area/holodeck/rec_center/firingrange) "dT" = ( @@ -1502,10 +1433,13 @@ id = "holocoaster" }, /turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/area/holodeck/rec_center/school) "em" = ( -/turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/obj/structure/table/wood, +/obj/item/folder, +/obj/item/melee/classic_baton/telescopic, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) "en" = ( /obj/machinery/conveyor/holodeck{ dir = 1; @@ -1513,7 +1447,7 @@ layer = 2.5 }, /turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/area/holodeck/rec_center/school) "eo" = ( /obj/structure/window/reinforced{ dir = 8 @@ -1638,7 +1572,7 @@ "eF" = ( /obj/item/shovel, /turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/area/holodeck/rec_center/school) "eG" = ( /obj/structure/window/reinforced{ dir = 8 @@ -1808,14 +1742,14 @@ name = "coaster car" }, /turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/area/holodeck/rec_center/school) "fg" = ( -/obj/machinery/conveyor_switch/oneway{ - convdir = -1; - id = "holocoaster" - }, -/turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/obj/structure/table, +/obj/item/paper, +/obj/item/pen, +/obj/item/clothing/under/schoolgirl/orange, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) "fh" = ( /obj/structure/window/reinforced, /turf/open/floor/holofloor/plating, @@ -1896,13 +1830,13 @@ /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/kobayashi) "fr" = ( -/obj/structure/closet/crate/miningcar{ - can_buckle = 1; - desc = "Great for mining!"; - name = "minecart" - }, -/turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/obj/structure/table, +/obj/item/paper, +/obj/item/pen, +/obj/item/clothing/under/schoolgirl, +/obj/item/toy/katana, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) "fs" = ( /obj/structure/table/reinforced, /obj/machinery/recharger, @@ -2038,14 +1972,14 @@ verted = -1 }, /turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/area/holodeck/rec_center/school) "fI" = ( /obj/machinery/conveyor/holodeck{ dir = 4; id = "holocoaster" }, /turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/area/holodeck/rec_center/school) "fJ" = ( /obj/machinery/conveyor/holodeck{ dir = 10; @@ -2053,7 +1987,7 @@ verted = -1 }, /turf/open/floor/holofloor/asteroid, -/area/holodeck/rec_center/rollercoaster) +/area/holodeck/rec_center/school) "fK" = ( /obj/item/target, /obj/item/target/clown, @@ -2981,7 +2915,6 @@ /area/centcom/control) "iQ" = ( /obj/machinery/status_display{ - density = 0; name = "cargo display"; supply_display = 1 }, @@ -3081,7 +3014,7 @@ "je" = ( /obj/machinery/conveyor{ dir = 1; - id = "QMLoad2"; + id = "XCCQMLoad2"; movedir = 2 }, /obj/effect/turf_decal/stripes/line{ @@ -3092,7 +3025,7 @@ "jf" = ( /obj/machinery/conveyor_switch/oneway{ convdir = 1; - id = "QMLoad2"; + id = "XCCQMLoad2"; pixel_x = 6 }, /turf/open/floor/plasteel/brown{ @@ -3149,13 +3082,13 @@ /obj/machinery/door/poddoor{ density = 1; icon_state = "closed"; - id = "QMLoaddoor2"; + id = "XCCQMLoaddoor2"; name = "Supply Dock Loading Door"; opacity = 1 }, /obj/machinery/conveyor{ dir = 4; - id = "QMLoad2"; + id = "XCCQMLoad2"; movedir = 8 }, /obj/effect/turf_decal/stripes/end{ @@ -3167,7 +3100,7 @@ /obj/structure/plasticflaps, /obj/machinery/conveyor{ dir = 4; - id = "QMLoad2"; + id = "XCCQMLoad2"; movedir = 8 }, /obj/effect/turf_decal/stripes/line{ @@ -3179,13 +3112,13 @@ /obj/machinery/door/poddoor{ density = 1; icon_state = "closed"; - id = "QMLoaddoor2"; + id = "XCCQMLoaddoor2"; name = "Supply Dock Loading Door"; opacity = 1 }, /obj/machinery/conveyor{ dir = 4; - id = "QMLoad2"; + id = "XCCQMLoad2"; movedir = 8 }, /obj/effect/turf_decal/stripes/line{ @@ -3196,7 +3129,7 @@ "jo" = ( /obj/machinery/conveyor{ dir = 1; - id = "QMLoad2"; + id = "XCCQMLoad2"; movedir = 2 }, /obj/effect/turf_decal/stripes/end, @@ -3266,7 +3199,7 @@ /area/centcom/control) "jz" = ( /obj/machinery/button/door{ - id = "QMLoaddoor"; + id = "XCCQMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_x = -27; @@ -3274,7 +3207,7 @@ }, /obj/machinery/button/door{ dir = 2; - id = "QMLoaddoor2"; + id = "XCCQMLoaddoor2"; layer = 4; name = "Loading Doors"; pixel_x = -27; @@ -3353,13 +3286,13 @@ /obj/machinery/door/poddoor{ density = 1; icon_state = "closed"; - id = "QMLoaddoor"; + id = "XCCQMLoaddoor"; name = "Supply Dock Loading Door"; opacity = 1 }, /obj/machinery/conveyor{ dir = 8; - id = "QMLoad" + id = "XCCQMLoad" }, /obj/effect/turf_decal/stripes/end{ dir = 8 @@ -3370,7 +3303,7 @@ /obj/structure/plasticflaps, /obj/machinery/conveyor{ dir = 8; - id = "QMLoad" + id = "XCCQMLoad" }, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -3381,13 +3314,13 @@ /obj/machinery/door/poddoor{ density = 1; icon_state = "closed"; - id = "QMLoaddoor"; + id = "XCCQMLoaddoor"; name = "Supply Dock Loading Door"; opacity = 1 }, /obj/machinery/conveyor{ dir = 8; - id = "QMLoad" + id = "XCCQMLoad" }, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -3397,7 +3330,7 @@ "jM" = ( /obj/machinery/conveyor{ dir = 8; - id = "QMLoad" + id = "XCCQMLoad" }, /obj/effect/turf_decal/stripes/end{ dir = 1 @@ -3418,7 +3351,7 @@ "jP" = ( /obj/machinery/conveyor{ dir = 1; - id = "QMLoad"; + id = "XCCQMLoad"; movedir = 2 }, /obj/effect/turf_decal/stripes/line{ @@ -3429,7 +3362,7 @@ "jQ" = ( /obj/machinery/conveyor_switch/oneway{ convdir = 1; - id = "QMLoad"; + id = "XCCQMLoad"; pixel_x = 6 }, /turf/open/floor/plasteel/brown{ @@ -3566,8 +3499,7 @@ /area/centcom/control) "kh" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -3722,8 +3654,7 @@ dir = 4 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/grimy, /area/centcom/control) @@ -3774,8 +3705,7 @@ dir = 8 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/grimy, /area/centcom/control) @@ -4125,8 +4055,7 @@ /area/centcom/control) "ly" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/firealarm{ dir = 1; @@ -4266,7 +4195,6 @@ "lS" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -4935,7 +4863,6 @@ "nz" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -5179,8 +5106,7 @@ /area/centcom/ferry) "oe" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/light{ dir = 4 @@ -5498,8 +5424,7 @@ /area/centcom/ferry) "oM" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/wood, /area/centcom/ferry) @@ -5557,8 +5482,7 @@ /area/centcom/ferry) "oU" = ( /obj/structure/dresser, -/obj/structure/sign/goldenplaque{ - name = "The Most Robust Captain Award for Robustness"; +/obj/structure/sign/goldenplaque/captain{ pixel_x = 32 }, /turf/open/floor/plasteel/vault{ @@ -5827,6 +5751,10 @@ /obj/structure/mirror{ pixel_x = 28 }, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, /turf/open/floor/plasteel/freezer{ dir = 2 }, @@ -5941,8 +5869,7 @@ /area/centcom/ferry) "pQ" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/light{ dir = 1 @@ -5982,6 +5909,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ + d2 = 4; icon_state = "0-4" }, /obj/effect/turf_decal/stripes/line, @@ -6019,6 +5947,7 @@ icon_state = "0-2" }, /obj/structure/cable/white{ + d2 = 8; icon_state = "0-8" }, /obj/effect/turf_decal/stripes/line, @@ -6083,8 +6012,7 @@ /area/centcom/control) "qd" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/structure/extinguisher_cabinet{ pixel_x = -24 @@ -6177,7 +6105,7 @@ /area/syndicate_mothership/control) "qp" = ( /obj/structure/chair/stool, -/obj/effect/landmark/syndicate_spawn, +/obj/effect/landmark/start/nukeop, /turf/open/floor/plasteel/bar{ dir = 2 }, @@ -6287,6 +6215,8 @@ dir = 4 }, /obj/structure/cable/white{ + d1 = 2; + d2 = 4; icon_state = "2-4" }, /turf/open/floor/wood, @@ -6299,6 +6229,8 @@ dir = 4 }, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/vault{ @@ -6311,6 +6243,8 @@ }, /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/grimy, @@ -6320,6 +6254,8 @@ dir = 4 }, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /turf/open/floor/plasteel/grimy, @@ -6333,6 +6269,8 @@ dir = 4 }, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ @@ -6346,9 +6284,13 @@ }, /obj/machinery/meter, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /obj/structure/cable/white{ + d1 = 2; + d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/vault{ @@ -6363,9 +6305,11 @@ dir = 1 }, /obj/structure/cable/white{ + d2 = 8; icon_state = "0-8" }, /obj/structure/cable/white{ + d2 = 4; icon_state = "0-4" }, /obj/structure/cable/white{ @@ -6382,12 +6326,18 @@ }, /obj/machinery/meter, /obj/structure/cable/white{ + d1 = 1; + d2 = 8; icon_state = "1-8" }, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /obj/structure/cable/white{ + d1 = 2; + d2 = 8; icon_state = "2-8" }, /turf/open/floor/plasteel/vault{ @@ -6477,7 +6427,7 @@ "qX" = ( /obj/structure/table, /obj/item/toy/katana, -/obj/item/toy/carpplushie, +/obj/item/toy/plush/carpplushie, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -6560,6 +6510,7 @@ /area/syndicate_mothership/control) "rj" = ( /obj/structure/closet/cardboard, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) "rk" = ( @@ -6674,6 +6625,8 @@ dir = 4 }, /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/wood, @@ -6721,6 +6674,8 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/portable_atmospherics/canister/air, /obj/structure/cable/white{ + d1 = 1; + d2 = 4; icon_state = "1-4" }, /obj/effect/turf_decal/stripes/line{ @@ -6735,9 +6690,13 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ + d1 = 4; + d2 = 8; icon_state = "4-8" }, /obj/structure/cable/white{ + d1 = 1; + d2 = 8; icon_state = "1-8" }, /obj/effect/turf_decal/stripes/line{ @@ -6755,6 +6714,8 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ + d1 = 1; + d2 = 8; icon_state = "1-8" }, /obj/effect/turf_decal/stripes/line{ @@ -6842,8 +6803,7 @@ /area/centcom/control) "rQ" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/green/corner{ dir = 4 @@ -6863,8 +6823,7 @@ /area/centcom/control) "rT" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7028,6 +6987,8 @@ /area/centcom/ferry) "sn" = ( /obj/structure/cable/white{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, /turf/open/floor/wood, @@ -7222,8 +7183,7 @@ /area/centcom/ferry) "sN" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/vault{ dir = 10 @@ -7668,7 +7628,7 @@ /turf/open/floor/wood, /area/syndicate_mothership/control) "tT" = ( -/obj/effect/landmark/syndicate_spawn, +/obj/effect/landmark/start/nukeop_leader, /turf/open/floor/wood, /area/syndicate_mothership/control) "tU" = ( @@ -7953,8 +7913,7 @@ /area/centcom/ferry) "uG" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -7992,8 +7951,7 @@ /area/centcom/control) "uN" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/green/side{ dir = 8 @@ -8001,8 +7959,7 @@ /area/centcom/control) "uO" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/green/side{ dir = 4 @@ -8073,6 +8030,9 @@ /area/syndicate_mothership/control) "vb" = ( /obj/structure/closet/cardboard/metal, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) "vc" = ( @@ -8091,7 +8051,7 @@ /obj/docking_port/mobile/assault_pod{ dwidth = 3; name = "steel rain"; - port_angle = 90; + port_direction = 4; preferred_direction = 4 }, /turf/open/floor/plating, @@ -8402,8 +8362,7 @@ /area/centcom/ferry) "vU" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -8648,7 +8607,7 @@ /area/wizard_station) "wA" = ( /obj/structure/destructible/cult/talisman{ - desc = "A altar dedicated to the Wizard's Federation" + desc = "An altar dedicated to the Wizards' Federation" }, /obj/item/kitchen/knife/ritual, /turf/open/floor/engine/cult, @@ -8754,8 +8713,7 @@ /area/centcom/ferry) "wP" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/red/corner{ dir = 8 @@ -8929,8 +8887,7 @@ /area/centcom/evac) "xt" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, @@ -9327,8 +9284,7 @@ /area/centcom/ferry) "ym" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/structure/extinguisher_cabinet{ pixel_y = -32 @@ -9575,8 +9531,7 @@ /area/centcom/evac) "yL" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/structure/extinguisher_cabinet{ pixel_x = -24 @@ -9784,7 +9739,6 @@ /area/wizard_station) "zj" = ( /obj/structure/table/wood, -/obj/effect/landmark/teleport_scroll, /obj/item/dice/d20, /obj/item/dice, /turf/open/floor/carpet, @@ -9836,8 +9790,7 @@ /area/centcom/control) "zq" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/green/corner{ dir = 8 @@ -10318,8 +10271,7 @@ /area/tdome/tdomeobserve) "AK" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/green/corner, /area/tdome/tdomeobserve) @@ -10396,8 +10348,7 @@ /area/tdome/tdomeobserve) "AW" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/red/corner, /area/tdome/tdomeobserve) @@ -10449,8 +10400,7 @@ /area/tdome/tdomeobserve) "Bg" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/green/corner{ dir = 8 @@ -10474,7 +10424,7 @@ /area/tdome/tdomeobserve) "Bj" = ( /obj/structure/destructible/cult/forge{ - desc = "A engine used in powering the wizards ship"; + desc = "An engine used in powering the wizard's ship"; name = "magma engine" }, /turf/open/floor/engine/cult, @@ -10561,8 +10511,7 @@ /area/tdome/tdomeobserve) "Bw" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/red/corner{ dir = 1 @@ -10570,8 +10519,7 @@ /area/tdome/tdomeobserve) "Bx" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/red/side{ dir = 10 @@ -10601,8 +10549,7 @@ /area/tdome/tdomeobserve) "BD" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/green/side{ dir = 6 @@ -10610,8 +10557,7 @@ /area/tdome/tdomeobserve) "BE" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/green/corner{ dir = 4 @@ -11045,9 +10991,7 @@ /area/tdome/tdomeobserve) "CE" = ( /obj/structure/table/wood, -/obj/structure/sign/atmosplaque{ - desc = "This plaque commemorates those who have fallen in glorious combat. For all the charred, dizzy, and beaten men who have died in its hands."; - name = "Thunderdome Plaque"; +/obj/structure/sign/atmosplaque/thunderdome{ pixel_y = -32 }, /obj/item/clothing/accessory/medal/gold{ @@ -11065,9 +11009,7 @@ /area/tdome/tdomeobserve) "CG" = ( /obj/structure/table/wood, -/obj/structure/sign/atmosplaque{ - desc = "This plaque commemorates those who have fallen in glorious combat. For all the charred, dizzy, and beaten men who have died in its hands."; - name = "Thunderdome Plaque"; +/obj/structure/sign/atmosplaque/thunderdome{ pixel_y = -32 }, /obj/item/clothing/accessory/medal{ @@ -11322,8 +11264,7 @@ /area/tdome/tdomeobserve) "Dl" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/neutral/corner, /area/tdome/tdomeobserve) @@ -11376,8 +11317,7 @@ /area/tdome/tdomeobserve) "Ds" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/neutral/corner{ dir = 8; @@ -11995,8 +11935,7 @@ /area/tdome/tdomeadmin) "Fd" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/firealarm{ dir = 8; @@ -12016,8 +11955,7 @@ /area/tdome/tdomeadmin) "Fg" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -12387,19 +12325,19 @@ /area/abductor_ship) "Gh" = ( /obj/machinery/abductor/experiment{ - team = 1 + team_number = 1 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Gi" = ( /obj/machinery/abductor/console{ - team = 1 + team_number = 1 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Gj" = ( /obj/machinery/abductor/pad{ - team = 1 + team_number = 1 }, /turf/open/floor/plating/abductor, /area/abductor_ship) @@ -12415,19 +12353,19 @@ /area/abductor_ship) "Gm" = ( /obj/machinery/abductor/experiment{ - team = 4 + team_number = 4 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Gn" = ( /obj/machinery/abductor/console{ - team = 4 + team_number = 4 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Go" = ( /obj/machinery/abductor/pad{ - team = 4 + team_number = 4 }, /turf/open/floor/plating/abductor, /area/abductor_ship) @@ -12469,7 +12407,7 @@ /area/abductor_ship) "Gw" = ( /obj/machinery/computer/camera_advanced/abductor{ - team = 1 + team_number = 1 }, /turf/open/floor/plating/abductor, /area/abductor_ship) @@ -12487,7 +12425,7 @@ /area/abductor_ship) "GA" = ( /obj/machinery/computer/camera_advanced/abductor{ - team = 4 + team_number = 4 }, /turf/open/floor/plating/abductor, /area/abductor_ship) @@ -12548,13 +12486,13 @@ /area/abductor_ship) "GM" = ( /obj/effect/landmark/abductor/scientist{ - team = 4 + team_number = 4 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "GN" = ( /obj/effect/landmark/abductor/agent{ - team = 4 + team_number = 4 }, /turf/open/floor/plating/abductor, /area/abductor_ship) @@ -12698,49 +12636,49 @@ /area/space) "Hn" = ( /obj/machinery/abductor/experiment{ - team = 2 + team_number = 2 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Ho" = ( /obj/machinery/abductor/console{ - team = 2 + team_number = 2 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Hp" = ( /obj/machinery/abductor/pad{ - team = 2 + team_number = 2 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Hq" = ( /obj/machinery/abductor/experiment{ - team = 3 + team_number = 3 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Hr" = ( /obj/machinery/abductor/console{ - team = 3 + team_number = 3 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Hs" = ( /obj/machinery/abductor/pad{ - team = 3 + team_number = 3 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Ht" = ( /obj/machinery/computer/camera_advanced/abductor{ - team = 2 + team_number = 2 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Hu" = ( /obj/machinery/computer/camera_advanced/abductor{ - team = 3 + team_number = 3 }, /turf/open/floor/plating/abductor, /area/abductor_ship) @@ -12762,25 +12700,25 @@ /area/centcom/evac) "Hy" = ( /obj/effect/landmark/abductor/scientist{ - team = 2 + team_number = 2 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "Hz" = ( /obj/effect/landmark/abductor/agent{ - team = 2 + team_number = 2 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "HA" = ( /obj/effect/landmark/abductor/scientist{ - team = 3 + team_number = 3 }, /turf/open/floor/plating/abductor, /area/abductor_ship) "HB" = ( /obj/effect/landmark/abductor/agent{ - team = 3 + team_number = 3 }, /turf/open/floor/plating/abductor, /area/abductor_ship) @@ -13647,6 +13585,118 @@ }, /turf/open/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) +"QH" = ( +/obj/structure/table/wood, +/obj/item/toy/crayon/white, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QI" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/apple, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QJ" = ( +/obj/structure/table, +/obj/item/paper, +/obj/item/pen, +/obj/item/clothing/under/schoolgirl, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QK" = ( +/obj/structure/table, +/obj/item/paper, +/obj/item/pen, +/obj/item/clothing/under/schoolgirl/green, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QL" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QM" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QN" = ( +/obj/structure/table, +/obj/item/paper, +/obj/item/pen, +/obj/item/clothing/under/schoolgirl/red, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QO" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QP" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QQ" = ( +/obj/structure/table, +/obj/item/paper, +/obj/item/pen, +/obj/item/clothing/under/schoolgirl/green, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QR" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QS" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/holofloor, +/area/holodeck/rec_center/school) +"QT" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QU" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QV" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QW" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QX" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QY" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QZ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) (1,1,1) = {" aa @@ -34890,7 +34940,7 @@ lG hm aa kl -qs +QT rk rl rm @@ -34898,7 +34948,7 @@ tl rm ux vc -qs +QY kl aa aa @@ -36175,7 +36225,7 @@ hq hm aa kl -qt +QU ro rm sd @@ -36432,7 +36482,7 @@ hq hm aa kl -qs +QV rp ro rm @@ -36440,7 +36490,7 @@ tl rm uy ve -qs +QZ kl aa aa @@ -36690,13 +36740,13 @@ hm aa kl qs -qs +QW se se se se se -qs +QX qs kl aa @@ -40574,7 +40624,7 @@ AR Ay Ay Ay -CN +CL CV CV zV @@ -69964,7 +70014,7 @@ eK eL fi fv -fC +dz fN aa aa @@ -70221,7 +70271,7 @@ eL eK fj fw -fC +dz fN aa aa @@ -70478,7 +70528,7 @@ eK eL fi fx -fC +dz fN aa aa @@ -70704,16 +70754,16 @@ aa "} (223,1,1) = {" ac -ak -az -az -ak -az -az -ak -az -az -ak +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj bl bp bH @@ -70735,7 +70785,7 @@ eL eK fj fy -fC +dz fN ab ab @@ -70964,10 +71014,10 @@ ac al aA aJ -ak +aj aJ aJ -ak +aj aJ aA be @@ -70992,7 +71042,7 @@ eK eL fi fv -fC +dz fN ab fR @@ -71488,13 +71538,13 @@ aR bl bq bI -bX -bJ +cl +cl ck cy -bJ +cl cV -de +cl dj ac dA @@ -71744,14 +71794,14 @@ bc bf bl br -bJ -bJ -bJ cl -cz -bJ +cl +cl +cl +cl +cl cW -df +cl dk ac dB @@ -72001,12 +72051,12 @@ bb bg bl bs -bJ +cl bZ ci cm cA -bJ +cl cX dg dl @@ -72258,14 +72308,14 @@ bb bg bl bt -bJ +cl ca ci -bJ -bJ -bJ -bJ -dh +cl +cl +cl +cl +cl dm ac dD @@ -72515,13 +72565,13 @@ bd bh bl bu -bK +cl cb ci cn cB -bJ -bJ +cl +cl cl dn ac @@ -76121,18 +76171,18 @@ cG bQ bQ bQ -ds +bB bl dM -el -el -el -el -ff -ff -ff -ff -fH +dM +dM +dM +dM +dM +dM +dM +dM +dM fN Ij Il @@ -76380,16 +76430,16 @@ bQ bQ dt bl -dN -em -eF -em +dM em +dM +QJ +QL fg -em -em -em -fI +QL +QK +QL +dM fN fQ fQ @@ -76637,16 +76687,16 @@ bQ bQ dt bl -dN -em -em -em -em -em -em -em -em -fI +dM +QH +dM +dM +dM +dM +dM +dM +dM +dM fN fP fV @@ -76894,16 +76944,16 @@ bQ bQ dt bl -dN -em -em -em -em -em -em +dM +QI +dM +QK +QL +QN +QL fr -em -fI +QL +dM fN ab fT @@ -77149,18 +77199,18 @@ cG bQ bQ bQ -du +bz bl -dO -en -en -en -en -en -en -en -en -fJ +dM +dM +dM +dM +dM +dM +dM +dM +dM +dM fN ab ab @@ -79182,4 +79232,4 @@ aa aa HT HT -"} +"} \ No newline at end of file diff --git a/_maps/map_files/generic/City_of_Cogs.dmm b/_maps/map_files/generic/City_of_Cogs.dmm new file mode 100644 index 0000000000..68f45f5472 --- /dev/null +++ b/_maps/map_files/generic/City_of_Cogs.dmm @@ -0,0 +1,65838 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/open/indestructible/reebe_void, +/area/reebe) +"ab" = ( +/turf/open/indestructible/reebe_void/spawning/lattices, +/area/reebe) +"ac" = ( +/obj/structure/lattice/clockwork, +/obj/structure/grille/ratvar, +/turf/open/indestructible/reebe_void, +/area/reebe) +"ad" = ( +/obj/structure/lattice/clockwork, +/obj/item/clockwork/component/belligerent_eye/blind_eye, +/turf/open/indestructible/reebe_void, +/area/reebe) +"ae" = ( +/obj/structure/lattice/clockwork, +/turf/open/indestructible/reebe_void, +/area/reebe) +"af" = ( +/obj/structure/lattice/clockwork, +/obj/item/clockwork/component/geis_capacitor/antennae, +/turf/open/indestructible/reebe_void, +/area/reebe) +"ag" = ( +/obj/structure/lattice/catwalk/clockwork, +/turf/open/indestructible/reebe_void, +/area/reebe) +"ah" = ( +/turf/closed/wall/clockwork, +/area/reebe/city_of_cogs) +"ai" = ( +/obj/structure/window/reinforced/clockwork/fulltile, +/obj/structure/grille/ratvar, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aj" = ( +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"ak" = ( +/obj/structure/destructible/clockwork/massive/celestial_gateway, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"al" = ( +/obj/machinery/sleeper/clockwork, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"am" = ( +/obj/structure/table/reinforced/brass, +/obj/item/storage/firstaid, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"an" = ( +/obj/structure/noticeboard, +/obj/item/paper/fluff/ruins/djstation{ + name = "paper - 'Station Radio Frequencies'" + }, +/turf/closed/wall/clockwork, +/area/reebe/city_of_cogs) +"ao" = ( +/obj/machinery/telecomms/relay/preset/reebe, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"ap" = ( +/obj/machinery/door/airlock/clockwork/brass{ + name = "Ark Chamber" + }, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aq" = ( +/obj/machinery/computer/camera_advanced/ratvar, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"ar" = ( +/obj/structure/closet/wardrobe/mixed, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"as" = ( +/obj/structure/dresser, +/obj/structure/mirror{ + pixel_y = 26 + }, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"at" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/slab, +/obj/item/clockwork/slab, +/obj/item/clockwork/slab, +/obj/item/clockwork/slab, +/obj/item/clockwork/slab, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"au" = ( +/obj/structure/table/reinforced/brass, +/obj/item/device/radio/intercom/ratvar, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"av" = ( +/obj/structure/chair/brass{ + dir = 8 + }, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aw" = ( +/obj/structure/chair/brass{ + dir = 4 + }, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"ax" = ( +/obj/structure/chair/brass{ + dir = 1 + }, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"ay" = ( +/obj/machinery/door/airlock/clockwork/brass{ + name = "Dressing Room" + }, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"az" = ( +/obj/structure/destructible/clockwork/heralds_beacon, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aA" = ( +/obj/machinery/door/airlock/clockwork/brass{ + name = "Infirmary" + }, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aB" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/construct_chassis/cogscarab, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aC" = ( +/obj/machinery/sleeper/clockwork{ + dir = 1 + }, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aD" = ( +/obj/machinery/door/airlock/clockwork/brass{ + name = "Listening Station" + }, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aE" = ( +/obj/machinery/door/airlock/clockwork/brass{ + name = "Observation Room" + }, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aF" = ( +/turf/open/indestructible/reebe_void/spawning, +/area/reebe) +"aG" = ( +/turf/closed/wall/clockwork{ + opacity = 0 + }, +/area/reebe/city_of_cogs) +"aH" = ( +/obj/effect/landmark/servant_of_ratvar, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aI" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/slab, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aJ" = ( +/obj/structure/table/reinforced/brass, +/obj/item/screwdriver/brass, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aK" = ( +/obj/structure/table/reinforced/brass, +/obj/item/crowbar/brass, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aL" = ( +/obj/structure/table/reinforced/brass, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aM" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/replicant_alloy, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aN" = ( +/obj/structure/table/reinforced/brass, +/obj/item/weldingtool/experimental/brass, +/turf/open/floor/clockwork/reebe, +/area/reebe/city_of_cogs) +"aO" = ( +/obj/structure/lattice/catwalk/clockwork, +/obj/item/clockwork/component/belligerent_eye/lens_gem, +/turf/open/indestructible/reebe_void, +/area/reebe) +"aP" = ( +/obj/structure/lattice/catwalk/clockwork, +/obj/item/clockwork/component/hierophant_ansible/obelisk, +/turf/open/indestructible/reebe_void, +/area/reebe) +"aQ" = ( +/obj/structure/lattice/clockwork, +/obj/item/clockwork/alloy_shards/clockgolem_remains, +/turf/open/indestructible/reebe_void, +/area/reebe) +"aR" = ( +/obj/effect/clockwork/servant_blocker{ + dir = 1 + }, +/obj/structure/lattice/clockwork, +/turf/open/indestructible/reebe_void, +/area/reebe/city_of_cogs) +"aS" = ( +/obj/effect/clockwork/servant_blocker{ + dir = 1 + }, +/obj/structure/lattice/catwalk/clockwork, +/turf/open/indestructible/reebe_void, +/area/reebe/city_of_cogs) +"aT" = ( +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"aU" = ( +/obj/structure/grille/ratvar, +/obj/structure/window/reinforced/clockwork/fulltile, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"aV" = ( +/obj/machinery/door/airlock/clockwork/brass, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"aW" = ( +/obj/item/clockwork/component/replicant_alloy/replication_plate, +/turf/open/indestructible/reebe_void/spawning/lattices, +/area/reebe) +"aX" = ( +/obj/effect/landmark/city_of_cogs, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"aY" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/belligerent_eye/blind_eye, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"aZ" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/belligerent_eye, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"ba" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/belligerent_eye/lens_gem, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bb" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/replicant_alloy, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bc" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/replicant_alloy/smashed_anima_fragment, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bd" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/replicant_alloy/replication_plate, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"be" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/geis_capacitor/antennae, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bf" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/geis_capacitor/fallen_armor, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bg" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clockwork/component/geis_capacitor, +/turf/open/indestructible/clock_spawn_room, +/area/reebe/city_of_cogs) +"bh" = ( +/obj/structure/lattice/catwalk/clockwork, +/obj/item/clockwork/integration_cog, +/turf/open/indestructible/reebe_void, +/area/reebe) +"bi" = ( +/obj/structure/lattice/catwalk/clockwork, +/obj/item/clockwork/component/vanguard_cogwheel/onyx_prism, +/turf/open/indestructible/reebe_void, +/area/reebe) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(7,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(8,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(9,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(10,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(11,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(12,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(13,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(14,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(15,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(16,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(17,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(18,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(19,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(20,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(22,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(23,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(24,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(25,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(26,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(27,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(28,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(29,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(30,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(31,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(32,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(33,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(34,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(35,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(36,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(37,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(38,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(39,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(40,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(41,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(42,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(43,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(44,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(45,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(46,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(47,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(48,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(49,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(50,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(51,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(52,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(53,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(54,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(55,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(56,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(57,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(58,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(59,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(60,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(61,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(62,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(63,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(64,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(65,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(66,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(67,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(68,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(69,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(70,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(71,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(72,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(73,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(74,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(75,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(76,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(77,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(78,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(79,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(80,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(81,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(82,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(83,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(84,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(85,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(86,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(87,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(88,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(89,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(90,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(91,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(92,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(93,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(94,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(95,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(96,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(97,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(98,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(99,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(100,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(101,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(102,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(103,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(104,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +aW +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(105,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ae +af +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ab +aP +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(106,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(107,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(108,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(109,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(110,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(111,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ae +ah +ah +ai +ah +ah +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aR +ah +ah +ah +ah +ah +ae +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(112,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ag +ag +ah +ar +aj +aj +ah +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +ah +ah +ai +ai +ai +ai +ai +ah +ah +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(113,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ag +ag +ah +as +aj +aj +ay +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +ah +aT +aT +aT +aT +aT +aT +aT +ah +ag +ae +ab +ab +ab +ab +ab +ae +bi +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(114,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ag +ag +ah +at +aj +aj +ah +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aT +aT +aT +aT +aT +ah +ah +ah +ab +ab +ab +ab +ab +ab +ab +ae +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(115,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ae +ah +ah +ay +ah +ah +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aX +aX +aX +aT +aT +ai +aY +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(116,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +an +au +aj +au +ah +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aV +aT +aT +aX +aX +aX +aT +aT +ai +aZ +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(117,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ah +ah +av +aj +av +ah +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aX +aX +aX +aT +aT +ai +ba +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(118,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ai +ao +aj +aj +aj +aD +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aT +aT +aT +aT +aT +ah +ah +ah +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(119,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ah +ah +aw +aj +aw +ai +aH +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +ah +aT +aT +aT +aT +aT +aT +aT +ah +ag +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(120,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ae +ag +ag +an +au +aj +au +ai +aI +aK +aH +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +ah +ah +aU +aU +aV +aU +aU +ah +ah +ag +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(121,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ah +ah +ah +ai +ah +ah +ah +ai +ap +ai +ah +aJ +aH +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +ah +aT +aT +aT +aT +aT +aT +aT +ah +ag +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(122,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +ah +aj +aj +aj +aj +aj +ai +aj +aj +aj +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aT +aT +aT +aT +aT +ah +ah +ah +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(123,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ah +aj +aj +aj +aj +aj +ai +aj +aj +aj +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aX +aX +aX +aT +aT +ai +bb +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(124,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ag +ai +aj +aj +ak +aj +aj +ap +aj +az +aj +ap +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aV +aT +aT +aX +aX +aX +aT +aT +ai +bc +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(125,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ah +aj +aj +aj +aj +aj +ai +aj +aj +aj +ai +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aX +aX +aX +aT +aT +ai +bd +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(126,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ah +aj +aj +aj +aj +aj +ai +aj +aj +aj +ai +aj +aj +aH +aH +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aT +aT +aT +aT +aT +ah +ah +ah +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(127,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ah +ah +ah +ai +ah +ah +ah +ai +ap +ai +ah +aj +aH +aL +aN +aH +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +ah +aT +aT +aT +aT +aT +aT +aT +ah +ag +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(128,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ae +ag +ah +aq +ax +aj +aj +ai +aj +aH +aM +aL +aH +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +ah +ah +aU +aU +aV +aU +aU +ah +ah +ag +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(129,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ai +aq +ax +aj +aj +ai +aj +aj +aH +aH +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +ah +aT +aT +aT +aT +aT +aT +aT +ah +ag +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(130,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ai +aq +ax +aj +aj +aE +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aT +aT +aT +aT +aT +ah +ah +ah +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(131,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ac +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +aq +ax +aj +aB +ah +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aX +aX +aX +aT +aT +ai +be +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(132,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ah +aq +ax +aj +aB +ah +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aV +aT +aT +aX +aX +aX +aT +aT +ai +bf +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(133,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ah +ah +ah +ah +aA +ah +ah +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aX +aX +aX +aT +aT +ai +bg +ai +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(134,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ah +al +aj +aj +aj +aC +ah +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +aU +aT +aT +aT +aT +aT +aT +aT +ah +ah +ah +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(135,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ai +am +aj +aj +aj +aj +aA +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +ah +aT +aT +aT +aT +aT +aT +aT +ah +ag +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(136,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ah +al +aj +aj +aj +aC +ah +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aS +aT +aT +aT +aT +ah +ah +ai +ai +ai +ai +ai +ah +ah +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(137,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ah +ah +ah +ai +ah +ah +ah +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aR +ah +ah +ah +ah +ah +ae +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(138,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(139,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(140,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(141,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +ac +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(142,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +bh +ae +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(143,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aO +ac +ab +ab +ab +ab +ab +ab +ab +aQ +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(144,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(145,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(146,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(147,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(148,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(149,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(150,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(151,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(152,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(153,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(154,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(155,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(156,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(157,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(158,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(159,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(160,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(161,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(162,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(163,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(164,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(165,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(166,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(167,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(168,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(169,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(170,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(171,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(172,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(173,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(174,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(175,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(176,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(177,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(178,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(179,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(180,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(181,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(182,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(183,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(184,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(185,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(186,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(187,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(188,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(189,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(190,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(191,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(192,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(193,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(194,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(195,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(196,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(197,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(198,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(199,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(200,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(201,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(202,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(203,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(204,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(205,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(206,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(207,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(208,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(209,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(210,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(211,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(212,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(213,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(214,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(215,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(216,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(217,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(218,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(219,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(220,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(221,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(222,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(223,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(224,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(225,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(226,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(227,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(228,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(229,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(230,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(231,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(232,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(233,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(234,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(235,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(236,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(237,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(238,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(239,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(240,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(241,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(242,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(243,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(244,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(245,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(246,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(247,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(248,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(249,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(250,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(251,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(252,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(253,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(254,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(255,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/_maps/shuttles/cargo_birdboat.dmm b/_maps/shuttles/cargo_birdboat.dmm index f05af797d1..0644e9dd70 100644 --- a/_maps/shuttles/cargo_birdboat.dmm +++ b/_maps/shuttles/cargo_birdboat.dmm @@ -1,273 +1,591 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/supply) -"b" = ( +"aa" = ( +/turf/open/space, +/area/space) +"ab" = ( /turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"c" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"d" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"e" = ( -/obj/machinery/conveyor{ - dir = 2; - id = "cargoshuttle"; - name = "cargo shuttle conveyor belt" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"f" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "cargoshuttle"; - name = "cargo shuttle conveyor belt" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"g" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "cargoshuttle"; - name = "cargo shuttle conveyor belt" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"h" = ( -/obj/machinery/conveyor{ - dir = 9; - id = "cargoshuttle"; - name = "cargo shuttle conveyor belt" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"i" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "cargoshuttle"; - name = "cargo shuttle conveyor belt" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"j" = ( -/obj/machinery/conveyor{ - dir = 10; - id = "cargoshuttle"; - name = "cargo shuttle conveyor belt" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"k" = ( -/obj/machinery/conveyor{ - dir = 6; - id = "cargoshuttle"; - name = "cargo shuttle conveyor belt" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"l" = ( -/obj/machinery/door/poddoor{ - id = "QMLoaddoor2"; - name = "supply dock loading door" - }, -/obj/machinery/conveyor{ - dir = 8; - id = "cargoshuttle"; - name = "cargo shuttle conveyor belt" - }, +/area/shuttle/escape) +"ac" = ( +/obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, -/area/shuttle/supply) -"m" = ( +/area/shuttle/escape) +"ad" = ( +/obj/structure/table, +/obj/item/scalpel, +/obj/item/retractor{ + pixel_y = 5 + }, +/obj/item/hemostat, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"ae" = ( +/obj/structure/table, +/obj/item/cautery, +/obj/item/surgicaldrill, +/obj/item/circular_saw{ + pixel_y = 9 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"af" = ( +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"ag" = ( +/obj/structure/shuttle/engine/propulsion/right{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"ah" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/escape) +"ai" = ( +/obj/machinery/computer/emergency_shuttle, /turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"n" = ( -/turf/open/floor/mineral/titanium, -/area/shuttle/supply) -"o" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" +/area/shuttle/escape) +"aj" = ( +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"ak" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22" }, -/turf/open/floor/plating, -/area/shuttle/supply) -"p" = ( -/obj/machinery/button/door{ - dir = 2; - id = "QMLoaddoor2"; - name = "Loading Doors"; - pixel_x = 24; - pixel_y = 8 - }, -/obj/machinery/button/door{ - id = "QMLoaddoor"; - name = "Loading Doors"; - pixel_x = 24; - pixel_y = -8 - }, -/obj/machinery/conveyor_switch/oneway{ - id = "cargoshuttle" +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"al" = ( +/obj/structure/chair, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"am" = ( +/obj/structure/chair, +/obj/machinery/light{ + dir = 1 }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"an" = ( +/obj/structure/table/optable, +/obj/item/surgical_drapes, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"ao" = ( /obj/machinery/light{ dir = 4 }, -/turf/open/floor/mineral/titanium, -/area/shuttle/supply) -"q" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"ap" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4 }, -/obj/docking_port/mobile/supply{ - dwidth = 3; - width = 10; - timid = 1 - }, -/turf/open/floor/plating, -/area/shuttle/supply) -"r" = ( -/obj/machinery/door/poddoor{ - id = "QMLoaddoor"; - name = "supply dock loading door" - }, -/obj/machinery/conveyor{ - dir = 4; - id = "cargoshuttle"; - name = "cargo shuttle conveyor belt" - }, -/turf/open/floor/plating, -/area/shuttle/supply) -"s" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/supply) -"t" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"u" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/shuttle/engine/heater, /turf/open/floor/plating/airless, -/area/shuttle/supply) -"v" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"w" = ( -/turf/open/space, -/area/space) -"x" = ( -/obj/structure/shuttle/engine/propulsion/burst/left, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"y" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"z" = ( -/obj/structure/shuttle/engine/propulsion/burst/right, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"A" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "cargoshuttle"; - name = "cargo shuttle conveyor belt" - }, -/obj/machinery/light{ - dir = 1 - }, +/area/shuttle/escape) +"aq" = ( +/obj/machinery/computer/communications, /turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"B" = ( -/obj/machinery/light{ +/area/shuttle/escape) +"ar" = ( +/obj/structure/chair{ dir = 8 }, /turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) +/area/shuttle/escape) +"as" = ( +/obj/machinery/door/airlock/glass_command{ + name = "bridge door"; + req_access_txt = "19" + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"at" = ( +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"au" = ( +/obj/structure/shuttle/engine/propulsion/left{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"av" = ( +/obj/machinery/light, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"aw" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -32 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/escape) +"ax" = ( +/obj/structure/table, +/obj/machinery/recharger{ + active_power_usage = 0; + idle_power_usage = 0; + pixel_y = 4; + use_power = 0 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"ay" = ( +/obj/structure/table, +/obj/item/storage/box/handcuffs, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"az" = ( +/obj/machinery/door/airlock/glass_security{ + name = "security airlock"; + req_access_txt = "63" + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"aA" = ( +/obj/machinery/door/airlock/glass, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"aB" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + layer = 4.1 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"aC" = ( +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"aD" = ( +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aE" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aF" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aG" = ( +/obj/machinery/door/airlock/titanium, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"aH" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aI" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/boiledspaghetti{ + name = "pasghetti"; + pixel_x = 4; + pixel_y = 7 + }, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aJ" = ( +/obj/machinery/light/small, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"aK" = ( +/obj/machinery/door/airlock/titanium, +/obj/docking_port/mobile/emergency{ + dheight = 0; + dir = 8; + dwidth = 6; + height = 18; + port_direction = 4; + width = 14; + timid = 1; + name = "Birdboat emergency escape shuttle" + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"aL" = ( +/obj/structure/table, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aM" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/chocolatebar, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aN" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aO" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aP" = ( +/obj/structure/chair, +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 2 + }, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aQ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"aR" = ( +/obj/structure/table/glass, +/obj/item/storage/firstaid/fire{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/storage/firstaid/toxin, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"aS" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aT" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aU" = ( +/obj/structure/table/glass, +/obj/item/storage/firstaid/brute{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/storage/firstaid/brute, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"aV" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -32 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) +"aW" = ( +/obj/structure/chair, +/turf/open/floor/plasteel/black, +/area/shuttle/escape) +"aX" = ( +/obj/machinery/sleeper{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"aY" = ( +/obj/structure/table/glass, +/obj/item/defibrillator/loaded, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) (1,1,1) = {" -b -b -b -b -b -b -b -b -b -w +aa +aa +ab +ab +ac +ab +ac +ac +ac +ac +ac +ab +aa +aa "} (2,1,1) = {" -b -e -g -e -m -B -m -g -b -x +aa +ab +ah +aq +ak +ac +aB +aH +aH +aH +aB +ah +ab +aa "} (3,1,1) = {" -b -f -g -f -m -m -m -g -u -y +aa +ab +ai +ar +aj +as +aC +aC +aC +aC +aC +aS +ab +aa "} (4,1,1) = {" -b -A -g -f -m -m -m -g -u -y +aa +ac +aj +aj +av +ab +aD +aD +aL +aC +aC +aS +ab +aa "} (5,1,1) = {" -b -f -h -j -m -m -m -g -u -y +aa +ac +aj +aj +aw +ab +aE +aE +aM +aC +aC +aS +ab +aa "} (6,1,1) = {" -b -f -i -k -n -p -n -g -b -z +aa +ab +ak +aj +ak +ab +aF +aI +aL +aC +aC +aT +ah +ab "} (7,1,1) = {" -b -b -b -l -o -b -q -r -b -w +aa +ab +ab +as +ac +ab +aC +aC +aC +aC +aC +aC +aB +ab "} +(8,1,1) = {" +aa +ab +al +at +at +ac +aB +aC +aC +aC +aC +aC +aV +ab +"} +(9,1,1) = {" +aa +ab +al +at +at +az +aC +aC +aN +aP +aC +aC +aW +ac +"} +(10,1,1) = {" +aa +ab +am +at +at +ac +aC +aC +aN +aP +aC +aC +aW +ac +"} +(11,1,1) = {" +aa +ab +al +at +ax +ab +aC +aC +aN +aP +aC +aC +aW +ac +"} +(12,1,1) = {" +aa +ab +al +at +ay +ab +aC +aC +aO +aP +aC +aC +aB +ab +"} +(13,1,1) = {" +ab +ab +ab +ab +ab +ah +aC +aC +ah +ab +aA +ac +ab +ab +"} +(14,1,1) = {" +ab +ad +an +af +af +aA +aC +aC +aA +aQ +af +af +aX +ab +"} +(15,1,1) = {" +ab +ae +af +af +af +aA +aC +aC +aA +af +af +af +af +ab +"} +(16,1,1) = {" +ab +af +ao +af +ab +ab +aG +aG +ab +ab +aR +aU +aY +ab +"} +(17,1,1) = {" +ab +ab +ab +ab +ab +ab +aC +aJ +ab +ab +ab +ab +ab +ab +"} +(18,1,1) = {" +ab +ag +ap +au +ab +ab +aG +aK +ab +ab +ag +ap +au +ab +"} \ No newline at end of file diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index 19b6a85ea9..ed55f33322 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -148,7 +148,6 @@ }, /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -307,7 +306,6 @@ "bc" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -480,7 +478,6 @@ "bG" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, diff --git a/_maps/shuttles/emergency_birdboat.dmm b/_maps/shuttles/emergency_birdboat.dmm index dd4ffeac54..054254f4db 100644 --- a/_maps/shuttles/emergency_birdboat.dmm +++ b/_maps/shuttles/emergency_birdboat.dmm @@ -144,8 +144,7 @@ /area/shuttle/escape) "aB" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) @@ -198,7 +197,7 @@ dir = 8; dwidth = 6; height = 18; - port_angle = 90; + port_direction = 4; width = 14; timid = 1; name = "Birdboat emergency escape shuttle" @@ -588,4 +587,4 @@ ag ap au ab -"} +"} \ No newline at end of file diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm index 0aaccabb3e..cdf3fd8561 100644 --- a/_maps/shuttles/emergency_cere.dmm +++ b/_maps/shuttles/emergency_cere.dmm @@ -540,7 +540,7 @@ dwidth = 15; height = 20; name = "Cere emergency shuttle"; - port_angle = 90; + port_direction = 4; preferred_direction = 2; width = 42 }, @@ -680,8 +680,7 @@ /area/shuttle/escape) "ca" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel, /area/shuttle/escape) @@ -703,8 +702,7 @@ dir = 4 }, /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel, /area/shuttle/escape) @@ -2075,4 +2073,4 @@ aa aa aa aa -"} +"} \ No newline at end of file diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm index 48cd143c44..1e92952ae2 100644 --- a/_maps/shuttles/emergency_delta.dmm +++ b/_maps/shuttles/emergency_delta.dmm @@ -153,7 +153,6 @@ "an" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -168,7 +167,6 @@ "ap" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -444,7 +442,7 @@ name = "Delta emergency shuttle"; width = 30; preferred_direction = 2; - port_angle = 90 + port_direction = 4 }, /turf/open/floor/plating, /area/shuttle/escape) @@ -689,8 +687,7 @@ /area/shuttle/escape) "bz" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /obj/machinery/button/flasher{ id = "shuttleflash"; @@ -703,8 +700,7 @@ /area/shuttle/escape) "bA" = ( /obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 + icon_state = "plant-21" }, /turf/open/floor/plasteel/neutral/corner{ dir = 4 @@ -883,7 +879,6 @@ "cb" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -1050,7 +1045,6 @@ "cA" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -1083,7 +1077,6 @@ "cE" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -1669,4 +1662,4 @@ aa aa aa aa -"} +"} \ No newline at end of file diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm index e6ab6ef49d..cffad6bf58 100644 --- a/_maps/shuttles/emergency_luxury.dmm +++ b/_maps/shuttles/emergency_luxury.dmm @@ -304,7 +304,6 @@ "bg" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -359,7 +358,6 @@ "bp" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, @@ -369,7 +367,6 @@ "bq" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; - layer = 4.1; pixel_x = -3; pixel_y = 3 }, diff --git a/_maps/shuttles/emergency_pubby.dmm b/_maps/shuttles/emergency_pubby.dmm index 5e14226d56..8a5f05cc01 100644 --- a/_maps/shuttles/emergency_pubby.dmm +++ b/_maps/shuttles/emergency_pubby.dmm @@ -279,7 +279,7 @@ dwidth = 4; height = 15; name = "Pubby emergency shuttle"; - port_angle = 90; + port_direction = 4; width = 18 }, /turf/open/floor/plating, @@ -638,4 +638,4 @@ ab ab ab aa -"} +"} \ No newline at end of file diff --git a/_maps/shuttles/emergency_wabbajack.dmm b/_maps/shuttles/emergency_wabbajack.dmm index 4b0b2a7f49..fe5618f48c 100644 --- a/_maps/shuttles/emergency_wabbajack.dmm +++ b/_maps/shuttles/emergency_wabbajack.dmm @@ -288,7 +288,7 @@ /area/shuttle/escape) "ba" = ( /obj/structure/destructible/cult/forge{ - desc = "A engine used in powering the shuttle."; + desc = "An engine used in powering the shuttle."; name = "magma engine" }, /turf/open/floor/plasteel/yellow, @@ -307,7 +307,7 @@ /area/shuttle/escape) "bd" = ( /obj/structure/destructible/cult/forge{ - desc = "A engine used in powering the shuttle."; + desc = "An engine used in powering the shuttle."; name = "magma engine" }, /turf/open/floor/plasteel/whitered, diff --git a/_maps/shuttles/ferry_base.dmm b/_maps/shuttles/ferry_base.dmm index f227228b85..8e33236727 100644 --- a/_maps/shuttles/ferry_base.dmm +++ b/_maps/shuttles/ferry_base.dmm @@ -57,7 +57,7 @@ id = "ferry"; name = "ferry shuttle"; roundstart_move = "ferry_away"; - port_angle = 180; + port_direction = 2; width = 5; timid = 1 }, @@ -170,4 +170,4 @@ d m d c -"} +"} \ No newline at end of file diff --git a/_maps/shuttles/ferry_lighthouse.dmm b/_maps/shuttles/ferry_lighthouse.dmm index d7880e1164..a170714543 100644 --- a/_maps/shuttles/ferry_lighthouse.dmm +++ b/_maps/shuttles/ferry_lighthouse.dmm @@ -46,10 +46,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) "am" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating/airless, /area/shuttle/transport) "an" = ( @@ -114,10 +111,7 @@ /turf/closed/wall/mineral/titanium, /area/shuttle/transport) "aB" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/structure/window/fulltile, /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) @@ -184,7 +178,7 @@ name = "The Lighthouse"; roundstart_move = "ferry_away"; timid = 1; - port_angle = 180; + port_direction = 2; width = 16 }, /turf/open/floor/mineral/titanium/blue, diff --git a/_maps/shuttles/ferry_meat.dmm b/_maps/shuttles/ferry_meat.dmm index 6384f0e057..bb21220f03 100644 --- a/_maps/shuttles/ferry_meat.dmm +++ b/_maps/shuttles/ferry_meat.dmm @@ -113,7 +113,7 @@ id = "ferry"; name = "ferry shuttle"; roundstart_move = "ferry_away"; - port_angle = 180; + port_direction = 2; width = 5; timid = 1 }, diff --git a/_maps/shuttles/whiteship_box.dmm b/_maps/shuttles/whiteship_box.dmm index a52eb6aa36..338212e727 100644 --- a/_maps/shuttles/whiteship_box.dmm +++ b/_maps/shuttles/whiteship_box.dmm @@ -18,7 +18,7 @@ id = "whiteship"; launch_status = 0; name = "NT Medical Ship"; - port_angle = -90; + port_direction = 8; preferred_direction = 4; roundstart_move = "whiteship_away"; timid = null; diff --git a/_maps/shuttles/whiteship_cere.dmm b/_maps/shuttles/whiteship_cere.dmm index ce705d1850..913a9e65b8 100644 --- a/_maps/shuttles/whiteship_cere.dmm +++ b/_maps/shuttles/whiteship_cere.dmm @@ -21,7 +21,7 @@ id = "whiteship"; launch_status = 0; name = "NT Recovery White-Ship"; - port_angle = -90; + port_direction = 8; preferred_direction = 1; roundstart_move = "whiteship_away"; width = 16 diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index 67847a4b9f..046f699911 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -27,7 +27,7 @@ id = "whiteship"; launch_status = 0; name = "NT Recovery White-Ship"; - port_angle = -90; + port_direction = 8; preferred_direction = 4; roundstart_move = "whiteship_away"; width = 27 @@ -1478,9 +1478,7 @@ req_access_txt = "0"; use_power = 0 }, -/obj/machinery/iv_drip{ - density = 0 - }, +/obj/machinery/iv_drip, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; name = "dust" diff --git a/_maps/shuttles/whiteship_pubby.dmm b/_maps/shuttles/whiteship_pubby.dmm index 49c4f1dde0..e67318005c 100644 --- a/_maps/shuttles/whiteship_pubby.dmm +++ b/_maps/shuttles/whiteship_pubby.dmm @@ -92,7 +92,7 @@ id = "whiteship"; launch_status = 0; name = "White Ship"; - port_angle = 90; + port_direction = 4; preferred_direction = 1; roundstart_move = "whiteship_away"; timid = 1; diff --git a/citadel/tools/merge-upstream-pull-request.sh b/citadel/tools/merge-upstream-pull-request.sh index 1e3408dea3..a034b5c450 100755 --- a/citadel/tools/merge-upstream-pull-request.sh +++ b/citadel/tools/merge-upstream-pull-request.sh @@ -49,7 +49,7 @@ curl -v \ -H "User-Agent: myBotThing (http://some.url, v0.1)" \ -H "Content-Type: application/json" \ -X POST \ --d "{\"content\":\"Mirroring [$1] from /tg/ to Hippie\"}" \ +-d "{\"content\":\"Mirroring [$1] from /tg/ to Citadel\"}" \ https://discordapp.com/api/channels/$CHANNELID/messages # We need to make sure we are always on a clean master when creating the new branch. diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index d305bfa69c..dd5a25d8ff 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -132,5 +132,6 @@ #define NOLIVER 29 #define NOSTOMACH 30 //citadel code -#define NOAROUSAL 29//Stops all arousal effects -#define NOGENITALS 30//Cannot create, use, or otherwise have genitals +#define NOAROUSAL 29 //Stops all arousal effects +#define NOGENITALS 30 //Cannot create, use, or otherwise have genitals +#define NO_DNA_COPY 31 diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 26a1535e33..c5c79b9610 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -1,74 +1,148 @@ -//A set of constants used to determine which type of mute an admin wishes to apply: -//Please read and understand the muting/automuting stuff before changing these. MUTE_IC_AUTO etc = (MUTE_IC << 1) -//Therefore there needs to be a gap between the flags_1 for the automute flags_1 -#define MUTE_IC 1 -#define MUTE_OOC 2 -#define MUTE_PRAY 4 -#define MUTE_ADMINHELP 8 -#define MUTE_DEADCHAT 16 -#define MUTE_ALL 31 - -//Some constants for DB_Ban -#define BANTYPE_PERMA 1 -#define BANTYPE_TEMP 2 -#define BANTYPE_JOB_PERMA 3 -#define BANTYPE_JOB_TEMP 4 -#define BANTYPE_ANY_FULLBAN 5 //used to locate stuff to unban. - -#define BANTYPE_ADMIN_PERMA 7 -#define BANTYPE_ADMIN_TEMP 8 -#define BANTYPE_ANY_JOB 9 //used to remove jobbans - -//Please don't edit these values without speaking to Errorage first ~Carn -//Admin Permissions -#define R_BUILDMODE 1 -#define R_ADMIN 2 -#define R_BAN 4 -#define R_FUN 8 -#define R_SERVER 16 -#define R_DEBUG 32 -#define R_POSSESS 64 -#define R_PERMISSIONS 128 -#define R_STEALTH 256 -#define R_POLL 512 -#define R_VAREDIT 1024 -#define R_SOUNDS 2048 -#define R_SPAWN 4096 - -#if DM_VERSION > 512 -#error Remove the flag below , its been long enough -#endif -//legacy , remove post 512, it was replaced by R_POLL -#define R_REJUVINATE 2 - -#define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. - -#define ADMIN_QUE(user) "(?)" -#define ADMIN_FLW(user) "(FLW)" -#define ADMIN_PP(user) "(PP)" -#define ADMIN_VV(atom) "(VV)" -#define ADMIN_SM(user) "(SM)" -#define ADMIN_TP(user) "(TP)" -#define ADMIN_KICK(user) "(KICK)" -#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" -#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" -#define ADMIN_SC(user) "(SC)" -#define ADMIN_SMITE(user) "(SMITE)" -#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]" -#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]" -#define ADMIN_SET_SD_CODE "(SETCODE)" -#define ADMIN_FULLMONTY_NONAME(user) "[ADMIN_QUE(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_FLW(user)] [ADMIN_TP(user)] [ADMIN_INDIVIDUALLOG(user)] [ADMIN_SMITE(user)]" -#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_FULLMONTY_NONAME(user)]" -#define ADMIN_JMP(src) "(JMP)" -#define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" -#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" -#define ADMIN_INDIVIDUALLOG(user) "(LOGS)" - -#define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt" -#define ADMIN_PUNISHMENT_BRAINDAMAGE "Brain damage" -#define ADMIN_PUNISHMENT_GIB "Gib" -#define ADMIN_PUNISHMENT_BSA "Bluespace Artillery Device" - -#define AHELP_ACTIVE 1 -#define AHELP_CLOSED 2 -#define AHELP_RESOLVED 3 +//A set of constants used to determine which type of mute an admin wishes to apply: +//Please read and understand the muting/automuting stuff before changing these. MUTE_IC_AUTO etc = (MUTE_IC << 1) +//Therefore there needs to be a gap between the flags_1 for the automute flags_1 +#define MUTE_IC 1 +#define MUTE_OOC 2 +#define MUTE_PRAY 4 +#define MUTE_ADMINHELP 8 +#define MUTE_DEADCHAT 16 +#define MUTE_ALL 31 + +//Some constants for DB_Ban +#define BANTYPE_PERMA 1 +#define BANTYPE_TEMP 2 +#define BANTYPE_JOB_PERMA 3 +#define BANTYPE_JOB_TEMP 4 +#define BANTYPE_ANY_FULLBAN 5 //used to locate stuff to unban. + +#define BANTYPE_ADMIN_PERMA 7 +#define BANTYPE_ADMIN_TEMP 8 +#define BANTYPE_ANY_JOB 9 //used to remove jobbans + +//Please don't edit these values without speaking to Errorage first ~Carn +//Admin Permissions +#define R_BUILDMODE 1 +#define R_ADMIN 2 +#define R_BAN 4 +#define R_FUN 8 +#define R_SERVER 16 +#define R_DEBUG 32 +#define R_POSSESS 64 +#define R_PERMISSIONS 128 +#define R_STEALTH 256 +#define R_POLL 512 +#define R_VAREDIT 1024 +#define R_SOUNDS 2048 +#define R_SPAWN 4096 + +#if DM_VERSION > 512 +#error Remove the flag below , its been long enough +#endif +//legacy , remove post 512, it was replaced by R_POLL +#define R_REJUVINATE 2 + +#define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. + +#define ADMIN_QUE(user) "(?)" +#define ADMIN_FLW(user) "(FLW)" +#define ADMIN_PP(user) "(PP)" +#define ADMIN_VV(atom) "(VV)" +#define ADMIN_SM(user) "(SM)" +#define ADMIN_TP(user) "(TP)" +#define ADMIN_KICK(user) "(KICK)" +#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" +#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" +#define ADMIN_SC(user) "(SC)" +#define ADMIN_SMITE(user) "(SMITE)" +#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]" +#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]" +#define ADMIN_SET_SD_CODE "(SETCODE)" +#define ADMIN_FULLMONTY_NONAME(user) "[ADMIN_QUE(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_FLW(user)] [ADMIN_TP(user)] [ADMIN_INDIVIDUALLOG(user)] [ADMIN_SMITE(user)]" +#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_FULLMONTY_NONAME(user)]" +#define ADMIN_JMP(src) "(JMP)" +#define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" +#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" +#define ADMIN_INDIVIDUALLOG(user) "(LOGS)" + +#define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt" +#define ADMIN_PUNISHMENT_BRAINDAMAGE "Brain damage" +#define ADMIN_PUNISHMENT_GIB "Gib" +#define ADMIN_PUNISHMENT_BSA "Bluespace Artillery Device" + +#define AHELP_ACTIVE 1 +#define AHELP_CLOSED 2 +#define AHELP_RESOLVED 3 +//A set of constants used to determine which type of mute an admin wishes to apply: +//Please read and understand the muting/automuting stuff before changing these. MUTE_IC_AUTO etc = (MUTE_IC << 1) +//Therefore there needs to be a gap between the flags for the automute flags +#define MUTE_IC 1 +#define MUTE_OOC 2 +#define MUTE_PRAY 4 +#define MUTE_ADMINHELP 8 +#define MUTE_DEADCHAT 16 +#define MUTE_ALL 31 + +//Some constants for DB_Ban +#define BANTYPE_PERMA 1 +#define BANTYPE_TEMP 2 +#define BANTYPE_JOB_PERMA 3 +#define BANTYPE_JOB_TEMP 4 +#define BANTYPE_ANY_FULLBAN 5 //used to locate stuff to unban. + +#define BANTYPE_ADMIN_PERMA 7 +#define BANTYPE_ADMIN_TEMP 8 +#define BANTYPE_ANY_JOB 9 //used to remove jobbans + +//Please don't edit these values without speaking to Errorage first ~Carn +//Admin Permissions +#define R_BUILDMODE 1 +#define R_ADMIN 2 +#define R_BAN 4 +#define R_FUN 8 +#define R_SERVER 16 +#define R_DEBUG 32 +#define R_POSSESS 64 +#define R_PERMISSIONS 128 +#define R_STEALTH 256 +#define R_POLL 512 +#define R_VAREDIT 1024 +#define R_SOUNDS 2048 +#define R_SPAWN 4096 + +#if DM_VERSION > 512 +#error Remove the flag below , its been long enough +#endif +//legacy , remove post 512, it was replaced by R_POLL +#define R_REJUVINATE 2 + +#define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. + +#define ADMIN_QUE(user) "(?)" +#define ADMIN_FLW(user) "(FLW)" +#define ADMIN_PP(user) "(PP)" +#define ADMIN_VV(atom) "(VV)" +#define ADMIN_SM(user) "(SM)" +#define ADMIN_TP(user) "(TP)" +#define ADMIN_KICK(user) "(KICK)" +#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" +#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" +#define ADMIN_SC(user) "(SC)" +#define ADMIN_SMITE(user) "(SMITE)" +#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]" +#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]" +#define ADMIN_SET_SD_CODE "(SETCODE)" +#define ADMIN_FULLMONTY_NONAME(user) "[ADMIN_QUE(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_FLW(user)] [ADMIN_TP(user)] [ADMIN_INDIVIDUALLOG(user)] [ADMIN_SMITE(user)]" +#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_FULLMONTY_NONAME(user)]" +#define ADMIN_JMP(src) "(JMP)" +#define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" +#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" +#define ADMIN_INDIVIDUALLOG(user) "(LOGS)" + +#define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt" +#define ADMIN_PUNISHMENT_BRAINDAMAGE "Brain damage" +#define ADMIN_PUNISHMENT_GIB "Gib" +#define ADMIN_PUNISHMENT_BSA "Bluespace Artillery Device" + +#define AHELP_ACTIVE 1 +#define AHELP_CLOSED 2 +#define AHELP_RESOLVED 3 diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 98420bc429..8ac155f20b 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -18,3 +18,7 @@ #define ANTAG_DATUM_IAA_HUMAN_CUSTOM /datum/antagonist/traitor/human/internal_affairs/custom #define ANTAG_DATUM_IAA_AI_CUSTOM /datum/antagonist/traitor/AI/internal_affairs/custom #define ANTAG_DATUM_IAA_AI /datum/antagonist/traitor/AI/internal_affairs +#define ANTAG_DATUM_BROTHER /datum/antagonist/brother +#define ANTAG_DATUM_ABDUCTOR /datum/antagonist/abductor +#define ANTAG_DATUM_ABDUCTOR_SCIENTIST /datum/antagonist/abductor/scientist +#define ANTAG_DATUM_ABDUCTOR_AGENT /datum/antagonist/abductor/agent diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 8a107c23ee..d4b2dfb2db 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -41,6 +41,7 @@ #define ANTAG_HUD_SOULLESS 17 #define ANTAG_HUD_CLOCKWORK 18 #define ANTAG_HUD_BORER 19 +#define ANTAG_HUD_BROTHER 20 // Notification action types #define NOTIFY_JUMP "jump" diff --git a/code/__DEFINES/cinematics.dm b/code/__DEFINES/cinematics.dm new file mode 100644 index 0000000000..4bfc8dd3c4 --- /dev/null +++ b/code/__DEFINES/cinematics.dm @@ -0,0 +1,11 @@ +#define CINEMATIC_DEFAULT 1 +#define CINEMATIC_SELFDESTRUCT 2 +#define CINEMATIC_SELFDESTRUCT_MISS 3 +#define CINEMATIC_NUKE_WIN 4 +#define CINEMATIC_NUKE_MISS 5 +#define CINEMATIC_ANNIHILATION 6 +#define CINEMATIC_MALF 7 +#define CINEMATIC_CULT 8 +#define CINEMATIC_NUKE_FAKE 9 +#define CINEMATIC_NUKE_NO_CORE 10 +#define CINEMATIC_NUKE_FAR 11 \ No newline at end of file diff --git a/code/__DEFINES/clockcult.dm b/code/__DEFINES/clockcult.dm index 0bedf57620..fc93ccbf1c 100644 --- a/code/__DEFINES/clockcult.dm +++ b/code/__DEFINES/clockcult.dm @@ -8,43 +8,31 @@ GLOBAL_VAR_INIT(clockwork_construction_value, 0) //The total value of all structures built by the clockwork cult GLOBAL_VAR_INIT(clockwork_caches, 0) //How many clockwork caches exist in the world (not each individual) GLOBAL_VAR_INIT(clockwork_vitality, 0) //How much Vitality is stored, total -GLOBAL_LIST_EMPTY(active_daemons) //A list of all active tinkerer's daemons +GLOBAL_VAR_INIT(clockwork_power, 0) //How many watts of power are globally available to the clockwork cult + GLOBAL_LIST_EMPTY(all_clockwork_objects) //All clockwork items, structures, and effects in existence GLOBAL_LIST_EMPTY(all_clockwork_mobs) //All clockwork SERVANTS (not creatures) in existence -GLOBAL_LIST_INIT(clockwork_component_cache, list(BELLIGERENT_EYE = 0, VANGUARD_COGWHEEL = 0, GEIS_CAPACITOR = 0, REPLICANT_ALLOY = 0, HIEROPHANT_ANSIBLE = 0)) //The pool of components that caches draw from + +GLOBAL_VAR_INIT(ratvar_approaches, 0) //The servants can choose to "herald" Ratvar, permanently buffing them but announcing their presence to the crew. GLOBAL_VAR_INIT(ratvar_awakens, 0) //If Ratvar has been summoned; not a boolean, for proper handling of multiple Ratvars +GLOBAL_VAR_INIT(ark_of_the_clockwork_justiciar, FALSE) //The Ark on the Reebe z-level + GLOBAL_VAR_INIT(clockwork_gateway_activated, FALSE) //if a gateway to the celestial derelict has ever been successfully activated +GLOBAL_VAR_INIT(script_scripture_unlocked, FALSE) //If script scripture is available, through converting at least one crewmember +GLOBAL_VAR_INIT(application_scripture_unlocked, FALSE) //If script scripture is available GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not used to track existing scripture //Scripture tiers and requirements; peripherals should never be used #define SCRIPTURE_PERIPHERAL "Peripheral" #define SCRIPTURE_DRIVER "Driver" #define SCRIPTURE_SCRIPT "Script" -#define SCRIPT_SERVANT_REQ 6 -#define SCRIPT_CACHE_REQ 1 #define SCRIPTURE_APPLICATION "Application" -#define APPLICATION_SERVANT_REQ 9 -#define APPLICATION_CACHE_REQ 3 -#define APPLICATION_CV_REQ 100 -#define SCRIPTURE_JUDGEMENT "Judgement" -#define JUDGEMENT_SERVANT_REQ 12 -#define JUDGEMENT_CACHE_REQ 5 -#define JUDGEMENT_CV_REQ 300 -//general component/cooldown things -#define SLAB_PRODUCTION_TIME 450 //how long(deciseconds) slabs require to produce a single component; defaults to 45 seconds +//Various costs related to power. +#define SCRIPT_UNLOCK_THRESHOLD 50000 //Scripts will unlock if the total power reaches this amount +#define APPLICATION_UNLOCK_THRESHOLD 100000 //Applications will unlock if the total powre reaches this amount -#define SLAB_SERVANT_SLOWDOWN 150 //how much each servant above 5 slows down slab-based generation; defaults to 15 seconds per sevant - -#define SLAB_SLOWDOWN_MAXIMUM 1350 //maximum slowdown from additional servants; defaults to 2 minutes 15 seconds - -#define CACHE_PRODUCTION_TIME 300 //how long(deciseconds) caches require to produce a component; defaults to 30 seconds - -#define ACTIVE_CACHE_SLOWDOWN 50 //how many additional deciseconds caches take to produce a component for each linked cache; defaults to 5 seconds - -#define LOWER_PROB_PER_COMPONENT 10 //how much each component in the cache reduces the weight of getting another of that component type - -#define MAX_COMPONENTS_BEFORE_RAND (10*LOWER_PROB_PER_COMPONENT) //the number of each component, times LOWER_PROB_PER_COMPONENT, you need to have before component generation will become random +#define ABSCOND_ABDUCTION_COST 95 //clockcult power defines #define MIN_CLOCKCULT_POWER 25 //the minimum amount of power clockcult machines will handle gracefully @@ -72,11 +60,11 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us //Ark defines #define GATEWAY_SUMMON_RATE 1 //the time amount the Gateway to the Celestial Derelict gets each process tick; defaults to 1 per tick -#define GATEWAY_REEBE_FOUND 119 //when progress is at or above this, the gateway finds reebe and begins drawing power +#define GATEWAY_REEBE_FOUND 240 //when progress is at or above this, the gateway finds reebe and begins drawing power -#define GATEWAY_RATVAR_COMING 239 //when progress is at or above this, ratvar has entered and is coming through the gateway +#define GATEWAY_RATVAR_COMING 480 //when progress is at or above this, ratvar has entered and is coming through the gateway -#define GATEWAY_RATVAR_ARRIVAL 300 //when progress is at or above this, game over ratvar's here everybody go home +#define GATEWAY_RATVAR_ARRIVAL 600 //when progress is at or above this, game over ratvar's here everybody go home #define ARK_SUMMON_COST 5 //how many of each component an Ark costs to summon @@ -94,6 +82,6 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us #define OCULAR_WARDEN_EXCLUSION_RANGE 3 //the range at which ocular wardens cannot be placed near other ocular wardens -#define RATVARIAN_SPEAR_DURATION 1800 //how long ratvarian spears last; defaults to 3 minutes +#define CLOCKWORK_ARMOR_COOLDOWN 1800 //The cooldown period between summoning suits of clockwork armor -#define PRISM_DELAY_DURATION 1200 //how long prolonging prisms delay the shuttle for; defaults to 2 minutes +#define RATVARIAN_SPEAR_COOLDOWN 300 //The cooldown period between summoning another Ratvarian spear diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index c088e81c4a..7fa8c2db77 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -49,6 +49,7 @@ //Health Defines #define HEALTH_THRESHOLD_CRIT 0 +#define HEALTH_THRESHOLD_FULLCRIT -30 #define HEALTH_THRESHOLD_DEAD -100 //Actual combat defines @@ -73,6 +74,9 @@ #define GRAB_NECK 2 #define GRAB_KILL 3 +//slowdown when in softcrit +#define SOFTCRIT_ADD_SLOWDOWN 6 + //Attack types for checking shields/hit reactions #define MELEE_ATTACK 1 #define UNARMED_ATTACK 2 diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 0225dad669..6f20117d36 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -5,14 +5,62 @@ // How multiple components of the exact same type are handled in the same datum #define COMPONENT_DUPE_HIGHLANDER 0 //old component is deleted (default) -#define COMPONENT_DUPE_ALLOWED 1 //duplicates allowed +#define COMPONENT_DUPE_ALLOWED 1 //duplicates allowed #define COMPONENT_DUPE_UNIQUE 2 //new component is deleted // All signals. Format: // When the signal is called: (signal arguments) -#define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (datum/component) -#define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (datum/component) +// /datum signals +#define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (/datum/component) +#define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (/datum/component) #define COMSIG_PARENT_QDELETED "parent_qdeleted" //before a datum's Destroy() is called: () -#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (atom/movable, atom) -#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (atom/movable) + +// /atom signals +#define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params) +#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" //from base of atom/attack_hulk(): (/mob/living/carbon/human) +#define COMSIG_PARENT_EXAMINE "atom_examine" //from base of atom/examine(): (/mob) +#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (/atom/movable, /atom) +#define COMSIG_ATOM_EX_ACT "atom_ex_act" //from base of atom/ex_act(): (severity, target) +#define COMSIG_ATOM_EMP_ACT "atom_emp_act" //from base of atom/emp_act(): (severity) +#define COMSIG_ATOM_FIRE_ACT "atom_fire_act" //from base of atom/fire_act(): (exposed_temperature, exposed_volume) +#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (/obj/item/projectile, def_zone) +#define COMSIG_ATOM_BLOB_ACT "atom_blob_act" //from base of atom/blob_act(): (/obj/structure/blob) +#define COMSIG_ATOM_ACID_ACT "atom_acid_act" //from base of atom/acid_act(): (acidpwr, acid_volume) +#define COMSIG_ATOM_EMAG_ACT "atom_emag_act" //from base of atom/emag_act(): () +#define COMSIG_ATOM_NARSIE_ACT "atom_narsie_act" //from base of atom/narsie_act(): () +#define COMSIG_ATOM_RATVAR_ACT "atom_ratvar_act" //from base of atom/ratvar_act(): () +#define COMSIG_ATOM_RCD_ACT "atom_rcd_act" //from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode) +#define COMSIG_ATOM_SING_PULL "atom_sing_pull" //from base of atom/singularity_pull(): (S, current_size) + +#define COMSIG_CLICK "atom_click" //from base of atom/Click(): (location, control, params) +#define COMSIG_CLICK_SHIFT "shift_click" //from base of atom/ShiftClick(): (/mob) +#define COMSIG_CLICK_CTRL "ctrl_click" //from base of atom/CtrlClickOn(): (/mob) +#define COMSIG_CLICK_ALT "alt_click" //from base of atom/AltClick(): (/mob) +#define COMSIG_CLICK_CTRL_SHIFT "ctrl_shift_click" //from base of atom/CtrlShiftClick(/mob) + +// /atom/movable signals +#define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir) +#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable) +#define COMSIG_MOVABLE_COLLIDE "movable_collide" //from base of atom/movable/Collide(): (/atom) +#define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom, throwingdatum) + +// /obj/item signals +#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (/mob/living/target, /mob/living/user) +#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (/mob) +#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (/obj, /mob) + +// /obj/item/clothing signals +#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () + +// /obj/item signals +#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (mob/living/target, mob/living/user) +#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (mob) +#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (obj, mob) + +// /obj/item/clothing signals +#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () + +// /obj/machinery signals +#define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): () +#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () diff --git a/code/__DEFINES/configuration.dm b/code/__DEFINES/configuration.dm new file mode 100644 index 0000000000..c78dfb28ab --- /dev/null +++ b/code/__DEFINES/configuration.dm @@ -0,0 +1,10 @@ +//config files +#define CONFIG_DEF(X) /datum/config_entry/##X { resident_file = CURRENT_RESIDENT_FILE }; /datum/config_entry/##X +#define CONFIG_GET(X) global.config.Get(/datum/config_entry/##X) +#define CONFIG_SET(X, Y) global.config.Set(/datum/config_entry/##X, ##Y) + +#define CONFIG_MAPS_FILE "maps.txt" + +//flags +#define CONFIG_ENTRY_LOCKED 1 //can't edit +#define CONFIG_ENTRY_HIDDEN 2 //can't see value diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index 46589408a2..ae3f9f6fe9 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -101,6 +101,7 @@ #define CAT_ROBOT "Robots" #define CAT_MISC "Misc" #define CAT_PRIMAL "Tribal" +#define CAT_CLOTHING "Clothing" #define CAT_FOOD "Foods" #define CAT_BREAD "Breads" #define CAT_BURGER "Burgers" diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index b464ea130c..97bf61779f 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -53,6 +53,9 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 // TESLA_IGNORE grants immunity from being targeted by tesla-style electricity #define TESLA_IGNORE_2 512 +// Stops you from putting things like an RCD or other items into an ORM or protolathe for materials. +#define NO_MAT_REDEMPTION_2 1024 + //turf-only flags #define NOJAUNT_1 1 #define UNUSED_TRANSIT_TURF_1 2 diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 16b2a8f4fb..4376ba9c03 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -1,5 +1,7 @@ // simple is_type and similar inline helpers +#define isdatum(D) (istype(D, /datum)) + #define islist(L) (istype(L, /list)) #define in_range(source, user) (get_dist(source, user) <= 1) @@ -7,6 +9,8 @@ #define ismovableatom(A) (istype(A, /atom/movable)) //Turfs +//#define isturf(A) (istype(A, /turf)) This is actually a byond built-in. Added here for completeness sake. + #define isopenturf(A) (istype(A, /turf/open)) #define isindestructiblefloor(A) (istype(A, /turf/open/indestructible)) @@ -25,6 +29,8 @@ #define islava(A) (istype(A, /turf/open/lava)) +#define isplatingturf(A) (istype(A, /turf/open/floor/plating)) + //Mobs #define isliving(A) (istype(A, /mob/living)) @@ -132,6 +138,10 @@ #define isitem(A) (istype(A, /obj/item)) +#define isstructure(A) (istype(A, /obj/structure)) + +#define ismecha(A) (istype(A, /obj/mecha)) + #define is_cleanable(A) (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/rune)) //if something is cleanable #define isorgan(A) (istype(A, /obj/item/organ)) @@ -158,3 +168,11 @@ GLOBAL_LIST_INIT(pointed_types, typecacheof(list( #define issignaler(O) (istype(O, /obj/item/device/assembly/signaler)) #define istimer(O) (istype(O, /obj/item/device/assembly/timer)) + +GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( + /obj/item/stack/sheet/glass, + /obj/item/stack/sheet/rglass, + /obj/item/stack/sheet/plasmaglass, + /obj/item/stack/sheet/plasmarglass))) + +#define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types)) diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 830a25fb0a..35b70bdb84 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -7,11 +7,14 @@ #define PLANE_SPACE_PARALLAX -90 #define GAME_PLANE 0 +#define SPACE_LAYER 1.8 +#define ABOVE_SPACE_LAYER 1.9 //#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define #define MID_TURF_LAYER 2.02 #define HIGH_TURF_LAYER 2.03 #define ABOVE_OPEN_TURF_LAYER 2.04 #define CLOSED_TURF_LAYER 2.05 +#define BULLET_HOLE_LAYER 2.06 #define ABOVE_NORMAL_TURF_LAYER 2.08 #define LATTICE_LAYER 2.2 #define DISPOSAL_PIPE_LAYER 2.3 diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index 6d7c9568a9..819abd032f 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -70,6 +70,8 @@ #define LIGHT_COLOR_TUNGSTEN "#FAE1AF" //Extremely diluted yellow, close to skin color (for some reason). rgb(250, 225, 175) #define LIGHT_COLOR_HALOGEN "#F0FAFA" //Barely visible cyan-ish hue, as the doctor prescribed. rgb(240, 250, 250) +#define LIGHT_RANGE_FIRE 3 //How many tiles standard fires glow. + #define LIGHTING_PLANE_ALPHA_VISIBLE 255 #define LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE 192 #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. diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 084cc7d1ab..a69dcafa75 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -3,10 +3,11 @@ The /tg/ codebase currently requires you to have 11 z-levels of the same size di z-level order is important, the order you put them in inside the map config.dm will determine what z level number they are assigned ingame. Names of z-level do not matter, but order does greatly, for instances such as checking alive status of revheads on z1 -current as of 2016/6/2 +current as of september 17, 2017 z1 = station z2 = centcom z5 = mining +z6 = city of cogs Everything else = randomized space Last space-z level = empty */ @@ -17,6 +18,7 @@ Last space-z level = empty #define MAIN_STATION "Main Station" #define CENTCOM "CentCom" +#define CITY_OF_COGS "City of Cogs" #define EMPTY_AREA_1 "Empty Area 1" #define EMPTY_AREA_2 "Empty Area 2" #define MINING "Mining Asteroid" @@ -35,9 +37,10 @@ Last space-z level = empty //zlevel defines, can be overridden for different maps in the appropriate _maps file. #define ZLEVEL_CENTCOM 1 -#define ZLEVEL_STATION 2 +#define ZLEVEL_STATION_PRIMARY 2 #define ZLEVEL_MINING 5 #define ZLEVEL_LAVALAND 5 +#define ZLEVEL_CITYOFCOGS 6 #define ZLEVEL_EMPTY_SPACE 12 #define ZLEVEL_TRANSIT 11 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 6ccebf83b0..c5d917ece4 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -361,7 +361,6 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define debug_admins(msg) if (GLOB.Debug2) to_chat(GLOB.admins, "DEBUG: [msg]") #define debug_world_log(msg) if (GLOB.Debug2) log_world("DEBUG: [msg]") -#define COORD(A) "([A.x],[A.y],[A.z])" #define INCREMENT_TALLY(L, stat) if(L[stat]){L[stat]++}else{L[stat] = 1} // Medal names @@ -399,8 +398,6 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define NUKE_SYNDICATE_BASE 3 #define STATION_DESTROYED_NUKE 4 #define STATION_EVACUATED 5 -#define GANG_LOSS 6 -#define GANG_TAKEOVER 7 #define BLOB_WIN 8 #define BLOB_NUKE 9 #define BLOB_DESTROYED 10 @@ -437,10 +434,6 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define GIBTONITE_DETONATE 3 //for obj explosion block calculation #define EXPLOSION_BLOCK_PROC -1 -//Gangster starting influences - -#define GANGSTER_SOLDIER_STARTING_INFLUENCE 5 -#define GANGSTER_BOSS_STARTING_INFLUENCE 20 //for determining which type of heartbeat sound is playing #define BEAT_FAST 1 @@ -453,3 +446,17 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define MOUSE_OPACITY_TRANSPARENT 0 #define MOUSE_OPACITY_ICON 1 #define MOUSE_OPACITY_OPAQUE 2 + +//world/proc/shelleo +#define SHELLEO_ERRORLEVEL 1 +#define SHELLEO_STDOUT 2 +#define SHELLEO_STDERR 3 + +//server security mode +#define SECURITY_SAFE 1 +#define SECURITY_ULTRASAFE 2 +#define SECURITY_TRUSTED 3 + +//Dummy mob reserve slots +#define DUMMY_HUMAN_SLOT_PREFERENCES "dummy_preference_preview" +#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 52e324bd76..c2d3256e59 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -154,3 +154,5 @@ #define JUDGE_IGNOREMONKEYS 16 #define MEGAFAUNA_DEFAULT_RECOVERY_TIME 5 + +#define SHADOW_SPECIES_LIGHT_THRESHOLD 0.2 \ No newline at end of file diff --git a/code/__DEFINES/pinpointers.dm b/code/__DEFINES/pinpointers.dm index 80403e54de..75f0452ea9 100644 --- a/code/__DEFINES/pinpointers.dm +++ b/code/__DEFINES/pinpointers.dm @@ -2,6 +2,3 @@ #define TRACK_NUKE_DISK 1 //We track the nuclear authentication disk, either to protect it or steal it #define TRACK_MALF_AI 2 //We track the malfunctioning AI, so we can prevent it from blowing us all up #define TRACK_INFILTRATOR 3 //We track the Syndicate infiltrator, so we can get back to ship when the nuke's armed -#define TRACK_OPERATIVES 4 //We track the closest operative, so we can regroup when we need to -#define TRACK_ATOM 5 //We track a specified atom, so admins can make us function for events -#define TRACK_COORDINATES 6 //We point towards the specified coordinates on our z-level, so we can navigate diff --git a/code/__DEFINES/pipe_construction.dm b/code/__DEFINES/pipe_construction.dm index b8a83ee3fa..2d15b8aed3 100644 --- a/code/__DEFINES/pipe_construction.dm +++ b/code/__DEFINES/pipe_construction.dm @@ -12,6 +12,7 @@ Construction breaks otherwise #define PIPE_HE_MANIFOLD /obj/machinery/atmospherics/pipe/heat_exchanging/manifold #define PIPE_HE_4WAYMANIFOLD /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w #define PIPE_JUNCTION /obj/machinery/atmospherics/pipe/heat_exchanging/junction +#define PIPE_BLUESPACE /obj/machinery/atmospherics/pipe/bluespace //Unary #define PIPE_CONNECTOR /obj/machinery/atmospherics/components/unary/portables_connector #define PIPE_UVENT /obj/machinery/atmospherics/components/unary/vent_pump @@ -56,4 +57,4 @@ Construction breaks otherwise #define STATION_TUBE_OPEN 0 #define STATION_TUBE_OPENING 1 #define STATION_TUBE_CLOSED 2 -#define STATION_TUBE_CLOSING 3 \ No newline at end of file +#define STATION_TUBE_CLOSING 3 diff --git a/code/__DEFINES/qdel.dm b/code/__DEFINES/qdel.dm index 041a6283e7..8749218847 100644 --- a/code/__DEFINES/qdel.dm +++ b/code/__DEFINES/qdel.dm @@ -10,6 +10,11 @@ //if TESTING is enabled, qdel will call this object's find_references() verb. //defines for the gc_destroyed var +#define GC_QUEUE_PREQUEUE 1 +#define GC_QUEUE_CHECK 2 +#define GC_QUEUE_HARDDELETE 3 +#define GC_QUEUE_COUNT 3 //increase this when adding more steps. + #define GC_QUEUED_FOR_QUEUING -1 #define GC_QUEUED_FOR_HARD_DEL -2 #define GC_CURRENTLY_BEING_QDELETED -3 diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index cb4d552e5d..cea6bc5e36 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -18,18 +18,19 @@ #define ROLE_BLOB "blob" #define ROLE_NINJA "space ninja" #define ROLE_MONKEY "monkey" -#define ROLE_GANG "gangster" #define ROLE_ABDUCTOR "abductor" #define ROLE_REVENANT "revenant" #define ROLE_DEVIL "devil" #define ROLE_SERVANT_OF_RATVAR "servant of Ratvar" #define ROLE_BORER "borer" +#define ROLE_BROTHER "blood brother" //Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR. //The gamemode specific ones are just so the gamemodes can query whether a player is old enough //(in game days played) to play that role GLOBAL_LIST_INIT(special_roles, list( ROLE_TRAITOR = /datum/game_mode/traitor, + ROLE_BROTHER = /datum/game_mode/traitor/bros, ROLE_OPERATIVE = /datum/game_mode/nuclear, ROLE_CHANGELING = /datum/game_mode/changeling, ROLE_WIZARD = /datum/game_mode/wizard, @@ -41,7 +42,6 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_BLOB = /datum/game_mode/blob, ROLE_NINJA, ROLE_MONKEY = /datum/game_mode/monkey, - ROLE_GANG = /datum/game_mode/gang, ROLE_REVENANT, ROLE_ABDUCTOR = /datum/game_mode/abduction, ROLE_DEVIL = /datum/game_mode/devil, @@ -52,4 +52,4 @@ GLOBAL_LIST_INIT(special_roles, list( //Job defines for what happens when you fail to qualify for any job during job selection #define BEASSISTANT 1 #define BERANDOMJOB 2 -#define RETURNTOLOBBY 3 \ No newline at end of file +#define RETURNTOLOBBY 3 diff --git a/code/__DEFINES/server_tools.dm b/code/__DEFINES/server_tools.dm index a4afa58a87..2773965d9c 100644 --- a/code/__DEFINES/server_tools.dm +++ b/code/__DEFINES/server_tools.dm @@ -1,32 +1,126 @@ +// /tg/station 13 server tools API v3.1.0.1 + +//CONFIGURATION +//use this define if you want to do configuration outside of this file +#ifndef SERVER_TOOLS_EXTERNAL_CONFIGURATION +//Comment this out once you've filled in the below +//#error /tg/station server tools interface unconfigured + +//Required interfaces (fill in with your codebase equivalent): + +//create a global variable named `Name` and set it to `Value` +//These globals must not be modifiable from anywhere outside of the server tools +#define SERVER_TOOLS_DEFINE_AND_SET_GLOBAL(Name, Value) GLOBAL_VAR_INIT(##Name, ##Value); GLOBAL_PROTECT(##Name) +//Read the value in the global variable `Name` +#define SERVER_TOOLS_READ_GLOBAL(Name) GLOB.##Name +//Set the value in the global variable `Name` to `Value` +#define SERVER_TOOLS_WRITE_GLOBAL(Name, Value) GLOB.##Name = ##Value +//display an announcement `message` from the server to all players +#define SERVER_TOOLS_WORLD_ANNOUNCE(message) to_chat(world, "[html_encode(##message)]") +//Write a string `message` to a server log +#define SERVER_TOOLS_LOG(message) log_world("SERVICE: [##message]") +//Notify current in-game administrators of a string `event` +#define SERVER_TOOLS_NOTIFY_ADMINS(event) message_admins(##event) +//The current amount of connected clients +#define SERVER_TOOLS_CLIENT_COUNT GLOB.clients.len +#endif + +//Required hooks: + +//Put this somewhere in /world/New() that is always run +#define SERVER_TOOLS_ON_NEW ServiceInit() +//Put this somewhere in /world/Topic(T, Addr, Master, Keys) that is always run before T is modified +#define SERVER_TOOLS_ON_TOPIC var/service_topic_return = ServiceCommand(params2list(T)); if(service_topic_return) return service_topic_return +//Put at the beginning of world/Reboot(reason) +#define SERVER_TOOLS_ON_REBOOT ServiceReboot() + +//Optional callable functions: + +//Returns the string version of the API +#define SERVER_TOOLS_API_VERSION ServiceAPIVersion() +//Returns TRUE if the world was launched under the server tools and the API matches, FALSE otherwise +//No function below this succeed if this is FALSE +#define SERVER_TOOLS_PRESENT RunningService() +//Gets the current version of the service running the server +#define SERVER_TOOLS_VERSION ServiceVersion() +//Forces a hard reboot of BYOND by ending the process +//unlike del(world) clients will try to reconnect +//If the service has not requested a shutdown, the world will reboot shortly after +#define SERVER_TOOLS_REBOOT_BYOND world.ServiceEndProcess() +/* + Gets the list of any testmerged github pull requests + + "[PR Number]" => list( + "title" -> PR title + "commit" -> Full hash of commit merged + "author" -> Github username of the author of the PR + ) +*/ +#define SERVER_TOOLS_PR_LIST GetTestMerges() +//Sends a message to connected game chats +#define SERVER_TOOLS_CHAT_BROADCAST(message) world.ChatBroadcast(message) +//Sends a message to connected admin chats +#define SERVER_TOOLS_RELAY_BROADCAST(message) world.AdminBroadcast(message) + +//IMPLEMENTATION + +#define SERVICE_API_VERSION_STRING "3.1.0.1" + #define REBOOT_MODE_NORMAL 0 #define REBOOT_MODE_HARD 1 #define REBOOT_MODE_SHUTDOWN 2 -#define IRC_STATUS_THROTTLE 5 - -#define PR_ANNOUNCEMENTS_PER_ROUND 5 //The number of unique PR announcements allowed per round - //This makes sure that a single person can only spam 3 reopens and 3 closes before being ignored - -//keep these in sync with TGS3 #define SERVICE_WORLD_PARAM "server_service" -#define SERVICE_PR_TEST_JSON "..\\..\\prtestjob.json" +#define SERVICE_VERSION_PARAM "server_service_version" +#define SERVICE_PR_TEST_JSON "prtestjob.json" +#define SERVICE_INTERFACE_DLL "TGServiceInterface.dll" +#define SERVICE_INTERFACE_FUNCTION "DDEntryPoint" #define SERVICE_CMD_HARD_REBOOT "hard_reboot" #define SERVICE_CMD_GRACEFUL_SHUTDOWN "graceful_shutdown" #define SERVICE_CMD_WORLD_ANNOUNCE "world_announce" -#define SERVICE_CMD_IRC_CHECK "irc_check" -#define SERVICE_CMD_IRC_STATUS "irc_status" -#define SERVICE_CMD_ADMIN_MSG "adminmsg" -#define SERVICE_CMD_NAME_CHECK "namecheck" -#define SERVICE_CMD_ADMIN_WHO "adminwho" +#define SERVICE_CMD_LIST_CUSTOM "list_custom_commands" +#define SERVICE_CMD_API_COMPATIBLE "api_compat" +#define SERVICE_CMD_PLAYER_COUNT "client_count" #define SERVICE_CMD_PARAM_KEY "serviceCommsKey" #define SERVICE_CMD_PARAM_COMMAND "command" -#define SERVICE_CMD_PARAM_MESSAGE "message" -#define SERVICE_CMD_PARAM_TARGET "target" #define SERVICE_CMD_PARAM_SENDER "sender" +#define SERVICE_CMD_PARAM_CUSTOM "custom" + +#define SERVICE_JSON_PARAM_HELPTEXT "help_text" +#define SERVICE_JSON_PARAM_ADMINONLY "admin_only" +#define SERVICE_JSON_PARAM_REQUIREDPARAMETERS "required_parameters" #define SERVICE_REQUEST_KILL_PROCESS "killme" #define SERVICE_REQUEST_IRC_BROADCAST "irc" #define SERVICE_REQUEST_IRC_ADMIN_CHANNEL_MESSAGE "send2irc" #define SERVICE_REQUEST_WORLD_REBOOT "worldreboot" +#define SERVICE_REQUEST_API_VERSION "api_ver" + +/* +The MIT License + +Copyright (c) 2011 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +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. +*/ diff --git a/code/__DEFINES/stat.dm b/code/__DEFINES/stat.dm index e2cf5d5dd7..5dbe99a9c5 100644 --- a/code/__DEFINES/stat.dm +++ b/code/__DEFINES/stat.dm @@ -4,8 +4,9 @@ //mob/var/stat things #define CONSCIOUS 0 -#define UNCONSCIOUS 1 -#define DEAD 2 +#define SOFT_CRIT 1 +#define UNCONSCIOUS 2 +#define DEAD 3 //mob disabilities stat @@ -21,9 +22,8 @@ // bitflags for machine stat variable #define BROKEN 1 #define NOPOWER 2 -#define POWEROFF 4 // tbd -#define MAINT 8 // under maintaince -#define EMPED 16 // temporary broken by EMP pulse +#define MAINT 4 // under maintaince +#define EMPED 8 // temporary broken by EMP pulse //ai power requirement defines #define POWER_REQ_NONE 0 diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index d505f69ac9..4f36ddbb1e 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -62,6 +62,8 @@ #define CURSE_WASTING 4 //causes gradual damage #define CURSE_GRASPING 8 //hands reach out from the sides of the screen, doing damage and stunning if they hit the target +#define STATUS_EFFECT_KINDLE /datum/status_effect/kindle //A knockdown reduced by 1 second for every 3 points of damage the target takes. + ///////////// // NEUTRAL // ///////////// diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index f7322abe6c..9ec26b7506 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -56,7 +56,6 @@ #define INIT_ORDER_TIMER 1 #define INIT_ORDER_DEFAULT 0 #define INIT_ORDER_AIR -1 -#define INIT_ORDER_SHUTTLE -2 #define INIT_ORDER_MINIMAP -3 #define INIT_ORDER_ASSETS -4 #define INIT_ORDER_ICON_SMOOTHING -5 @@ -64,6 +63,7 @@ #define INIT_ORDER_XKEYSCORE -10 #define INIT_ORDER_STICKY_BAN -10 #define INIT_ORDER_LIGHTING -20 +#define INIT_ORDER_SHUTTLE -21 #define INIT_ORDER_SQUEAK -40 #define INIT_ORDER_PERSISTENCE -100 diff --git a/code/__DEFINES/time.dm b/code/__DEFINES/time.dm index 956935258b..28017de85c 100644 --- a/code/__DEFINES/time.dm +++ b/code/__DEFINES/time.dm @@ -13,3 +13,11 @@ When using time2text(), please use "DDD" to find the weekday. Refrain from using #define FRIDAY "Fri" #define SATURDAY "Sat" #define SUNDAY "Sun" + +#define SECONDS *10 + +#define MINUTES SECONDS*60 + +#define HOURS MINUTES*60 + +#define TICKS *world.tick_lag \ No newline at end of file diff --git a/code/__DEFINES/voreconstants.dm b/code/__DEFINES/voreconstants.dm index ea4c26d79e..edcf4f7fd2 100644 --- a/code/__DEFINES/voreconstants.dm +++ b/code/__DEFINES/voreconstants.dm @@ -3,6 +3,7 @@ #define DM_DIGEST "Digest" #define DM_HEAL "Heal" #define DM_NOISY "Noisy" +#define DM_DRAGON "Dragon" #define VORE_STRUGGLE_EMOTE_CHANCE 40 diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index 9646f03252..e5478adff4 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -205,6 +205,22 @@ return null +/proc/pickweightAllowZero(list/L) //The original pickweight proc will sometimes pick entries with zero weight. I'm not sure if changing the original will break anything, so I left it be. + var/total = 0 + var/item + for (item in L) + if (!L[item]) + L[item] = 0 + total += L[item] + + total = rand(0, total) + for (item in L) + total -=L [item] + if (total <= 0 && L[item]) + return item + + return null + //Pick a random element from the list and remove it from the list. /proc/pick_n_take(list/L) if(L.len) @@ -458,7 +474,7 @@ #error Remie said that lummox was adding a way to get a lists #error contents via list.values, if that is true remove this #error otherwise, update the version and bug lummox -#elseif +#endif //Flattens a keyed list into a list of it's contents /proc/flatten_list(list/key_list) if(!islist(key_list)) diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index cde5e0b4e7..91508ded32 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -26,79 +26,86 @@ /proc/log_admin(text) GLOB.admin_log.Add(text) - if (config.log_admin) + if (CONFIG_GET(flag/log_admin)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]ADMIN: [text]") //Items using this proc are stripped from public logs - use with caution /proc/log_admin_private(text) GLOB.admin_log.Add(text) - if (config.log_admin) + if (CONFIG_GET(flag/log_admin)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]ADMINPRIVATE: [text]") /proc/log_adminsay(text) - if (config.log_adminchat) + if (CONFIG_GET(flag/log_adminchat)) log_admin_private("ASAY: [text]") /proc/log_dsay(text) - if (config.log_adminchat) + if (CONFIG_GET(flag/log_adminchat)) log_admin("DSAY: [text]") /proc/log_game(text) - if (config.log_game) + if (CONFIG_GET(flag/log_game)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]GAME: [text]") /proc/log_vote(text) - if (config.log_vote) + if (CONFIG_GET(flag/log_vote)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]VOTE: [text]") /proc/log_access(text) - if (config.log_access) + if (CONFIG_GET(flag/log_access)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]ACCESS: [text]") /proc/log_say(text) - if (config.log_say) + if (CONFIG_GET(flag/log_say)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]SAY: [text]") /proc/log_prayer(text) - if (config.log_prayer) + if (CONFIG_GET(flag/log_prayer)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]PRAY: [text]") /proc/log_law(text) - if (config.log_law) + if (CONFIG_GET(flag/log_law)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]LAW: [text]") /proc/log_ooc(text) - if (config.log_ooc) + if (CONFIG_GET(flag/log_ooc)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]OOC: [text]") /proc/log_whisper(text) - if (config.log_whisper) + if (CONFIG_GET(flag/log_whisper)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]WHISPER: [text]") /proc/log_emote(text) - if (config.log_emote) + if (CONFIG_GET(flag/log_emote)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]EMOTE: [text]") /proc/log_attack(text) - if (config.log_attack) + if (CONFIG_GET(flag/log_attack)) WRITE_FILE(GLOB.world_attack_log, "\[[time_stamp()]]ATTACK: [text]") /proc/log_pda(text) - if (config.log_pda) - WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]PDA: [text]") + if (CONFIG_GET(flag/log_pda)) + WRITE_FILE(GLOB.world_pda_log, "\[[time_stamp()]]PDA: [text]") /proc/log_comment(text) - if (config.log_pda) + if (CONFIG_GET(flag/log_pda)) //reusing the PDA option because I really don't think news comments are worth a config option WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]COMMENT: [text]") /proc/log_chat(text) - if (config.log_pda) + if (CONFIG_GET(flag/log_pda)) WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]CHAT: [text]") +/proc/log_qdel(text) + WRITE_FILE(GLOB.world_qdel_log, "\[[time_stamp()]]QDEL: [text]") + /proc/log_sql(text) WRITE_FILE(GLOB.sql_error_log, "\[[time_stamp()]]SQL: [text]") +/proc/log_config(text) + WRITE_FILE(GLOB.config_error_log, text) + SEND_TEXT(world.log, text) + //This replaces world.log so it displays both in DD and the file /proc/log_world(text) WRITE_FILE(GLOB.world_runtime_log, text) diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index 171d776d0d..1c9c33f21a 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -49,3 +49,12 @@ GLOBAL_VAR_INIT(cmp_field, "name") /proc/cmp_ruincost_priority(datum/map_template/ruin/A, datum/map_template/ruin/B) return initial(A.cost) - initial(B.cost) + +/proc/cmp_qdel_item_time(datum/qdel_item/A, datum/qdel_item/B) + . = B.hard_delete_time - A.hard_delete_time + if (!.) + . = B.destroy_time - A.destroy_time + if (!.) + . = B.failures - A.failures + if (!.) + . = B.qdels - A.qdels diff --git a/code/__HELPERS/files.dm b/code/__HELPERS/files.dm index 5001a3541e..f515668dfb 100644 --- a/code/__HELPERS/files.dm +++ b/code/__HELPERS/files.dm @@ -43,7 +43,7 @@ /client/proc/file_spam_check() var/time_to_wait = GLOB.fileaccess_timer - world.time if(time_to_wait > 0) - to_chat(src, "Error: file_spam_check(): Spam. Please wait [round(time_to_wait/10)] seconds.") + to_chat(src, "Error: file_spam_check(): Spam. Please wait [DisplayTimeText(time_to_wait)].") return 1 GLOB.fileaccess_timer = world.time + FTPDELAY return 0 diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index d1d330fb01..a16f91b317 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -9,10 +9,10 @@ #define CULT_POLL_WAIT 2400 /proc/get_area(atom/A) - if (!istype(A)) - return - for(A, A && !isarea(A), A=A.loc); //semicolon is for the empty statement - return A + if(isarea(A)) + return A + var/turf/T = get_turf(A) + return T ? T.loc : null /proc/get_area_name(atom/X) var/area/Y = get_area(X) @@ -314,10 +314,11 @@ // Will return a list of active candidates. It increases the buffer 5 times until it finds a candidate which is active within the buffer. -/proc/get_candidates(be_special_type, afk_bracket = config.inactivity_period, jobbanType) +/proc/get_candidates(be_special_type, afk_bracket = CONFIG_GET(number/inactivity_period), jobbanType) var/list/candidates = list() // Keep looping until we find a non-afk candidate within the time bracket (we limit the bracket to 10 minutes (6000)) - while(!candidates.len && afk_bracket < config.afk_period) + var/afk_period = CONFIG_GET(number/afk_period) + while(!candidates.len && afk_bracket < afk_period) for(var/mob/dead/observer/G in GLOB.player_list) if(G.client != null) if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) @@ -330,6 +331,20 @@ afk_bracket += 600 // Add a minute to the bracket, for every attempt return candidates +/proc/considered_alive(datum/mind/M, enforce_human = TRUE) + if(M && M.current) + if(enforce_human) + var/mob/living/carbon/human/H + if(ishuman(M.current)) + H = M.current + return M.current.stat != DEAD && !issilicon(M.current) && !isbrain(M.current) && (!H || H.dna.species.id != "memezombies") + else if(isliving(M.current)) + return M.current.stat != DEAD + return FALSE + +/proc/considered_afk(datum/mind/M) + return !M || !M.current || !M.current.client || M.current.client.is_afk() + /proc/ScreenText(obj/O, maptext="", screen_loc="CENTER-7,CENTER-7", maptext_height=480, maptext_width=480) if(!isobj(O)) O = new /obj/screen/text() @@ -421,7 +436,7 @@ SEND_SOUND(M, 'sound/misc/notice2.ogg') //Alerting them to their consideration if(flashwindow) window_flash(M.client) - switch(ignore_category ? askuser(M,Question,"Please answer in [poll_time/10] seconds!","Yes","No","Never for this round", StealFocus=0, Timeout=poll_time) : askuser(M,Question,"Please answer in [poll_time/10] seconds!","Yes","No", StealFocus=0, Timeout=poll_time)) + switch(ignore_category ? askuser(M,Question,"Please answer in [DisplayTimeText(poll_time)]!","Yes","No","Never for this round", StealFocus=0, Timeout=poll_time) : askuser(M,Question,"Please answer in [DisplayTimeText(poll_time)]!","Yes","No", StealFocus=0, Timeout=poll_time)) if(1) to_chat(M, "Choice registered: Yes.") if(time_passed + poll_time <= world.time) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 1af231f893..0b79afb941 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -1,116 +1,115 @@ -////////////////////////// -/////Initial Building///// -////////////////////////// - -/proc/make_datum_references_lists() - //hair - init_sprite_accessory_subtypes(/datum/sprite_accessory/hair, GLOB.hair_styles_list, GLOB.hair_styles_male_list, GLOB.hair_styles_female_list) - //facial hair - init_sprite_accessory_subtypes(/datum/sprite_accessory/facial_hair, GLOB.facial_hair_styles_list, GLOB.facial_hair_styles_male_list, GLOB.facial_hair_styles_female_list) - //underwear - init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, GLOB.underwear_list, GLOB.underwear_m, GLOB.underwear_f) - //undershirt - init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, GLOB.undershirt_list, GLOB.undershirt_m, GLOB.undershirt_f) - //socks - init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, GLOB.socks_list) - //lizard bodyparts (blizzard intensifies) - init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.body_markings_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, GLOB.tails_list_lizard) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/lizard, GLOB.animated_tails_list_lizard) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, GLOB.tails_list_human) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/human, GLOB.animated_tails_list_human) - init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts, GLOB.snouts_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/horns,GLOB.horns_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, GLOB.ears_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/wings_open, GLOB.wings_open_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/frills, GLOB.frills_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/spines, GLOB.spines_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/spines_animated, GLOB.animated_spines_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.r_wings_list,roundstart = TRUE) - - //citadel code - //mammal bodyparts (fucking furries) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, GLOB.mam_body_markings_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, GLOB.mam_tails_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_ears, GLOB.mam_ears_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails_animated, GLOB.mam_tails_animated_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/taur, GLOB.taur_list) - //avian bodyparts (i swear this isn't starbound) -// init_sprite_accessory_subtypes(/datum/sprite_accessory/beaks/avian, GLOB.avian_beaks_list) -// init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/avian, GLOB.avian_tails_list) -// init_sprite_accessory_subtypes(/datum/sprite_accessory/avian_wings, GLOB.avian_wings_list) -// init_sprite_accessory_subtypes(/datum/sprite_accessory/avian_open_wings, GLOB.avian_open_wings_list) - //xeno parts (hiss?) - init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_head, GLOB.xeno_head_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_tail, GLOB.xeno_tail_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_dorsal, GLOB.xeno_dorsal_list) - //genitals - init_sprite_accessory_subtypes(/datum/sprite_accessory/penis, GLOB.cock_shapes_list) - - for(var/K in GLOB.cock_shapes_list) - var/datum/sprite_accessory/penis/value = GLOB.cock_shapes_list[K] - GLOB.cock_shapes_icons[K] = value.icon_state - - init_sprite_accessory_subtypes(/datum/sprite_accessory/vagina, GLOB.vagina_shapes_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, GLOB.breasts_shapes_list) - GLOB.breasts_size_list = list("a","b","c","d","e") //We need the list to choose from initialized, but it's no longer a sprite_accessory thing. - - //Species - for(var/spath in subtypesof(/datum/species)) - var/datum/species/S = new spath() - if(S.roundstart) - GLOB.roundstart_species[S.id] = S.type - GLOB.species_list[S.id] = S.type - - //Surgeries - for(var/path in subtypesof(/datum/surgery)) - GLOB.surgeries_list += new path() - - //Materials - for(var/path in subtypesof(/datum/material)) - var/datum/material/D = new path() - GLOB.materials_list[D.id] = D - - //Techs - for(var/path in subtypesof(/datum/tech)) - var/datum/tech/D = new path() - GLOB.tech_list[D.id] = D - - //Emotes - for(var/path in subtypesof(/datum/emote)) - var/datum/emote/E = new path() - E.emote_list[E.key] = E - - init_subtypes(/datum/crafting_recipe, GLOB.crafting_recipes) - -/* // Uncomment to debug chemical reaction list. -/client/verb/debug_chemical_list() - - for (var/reaction in chemical_reactions_list) - . += "chemical_reactions_list\[\"[reaction]\"\] = \"[chemical_reactions_list[reaction]]\"\n" - if(islist(chemical_reactions_list[reaction])) - var/list/L = chemical_reactions_list[reaction] - for(var/t in L) - . += " has: [t]\n" - to_chat(world, .) -*/ - -//creates every subtype of prototype (excluding prototype) and adds it to list L. -//if no list/L is provided, one is created. -/proc/init_subtypes(prototype, list/L) - if(!istype(L)) - L = list() - for(var/path in subtypesof(prototype)) - L += new path() - return L - -//returns a list of paths to every subtype of prototype (excluding prototype) -//if no list/L is provided, one is created. -/proc/init_paths(prototype, list/L) - if(!istype(L)) - L = list() - for(var/path in subtypesof(prototype)) - L+= path - return L +////////////////////////// +/////Initial Building///// +////////////////////////// + +/proc/make_datum_references_lists() + //hair + init_sprite_accessory_subtypes(/datum/sprite_accessory/hair, GLOB.hair_styles_list, GLOB.hair_styles_male_list, GLOB.hair_styles_female_list) + //facial hair + init_sprite_accessory_subtypes(/datum/sprite_accessory/facial_hair, GLOB.facial_hair_styles_list, GLOB.facial_hair_styles_male_list, GLOB.facial_hair_styles_female_list) + //underwear + init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, GLOB.underwear_list, GLOB.underwear_m, GLOB.underwear_f) + //undershirt + init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, GLOB.undershirt_list, GLOB.undershirt_m, GLOB.undershirt_f) + //socks + init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, GLOB.socks_list) + //lizard bodyparts (blizzard intensifies) + init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.body_markings_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, GLOB.tails_list_lizard) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/lizard, GLOB.animated_tails_list_lizard) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, GLOB.tails_list_human) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/human, GLOB.animated_tails_list_human) + init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts, GLOB.snouts_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/horns,GLOB.horns_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, GLOB.ears_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/wings_open, GLOB.wings_open_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/frills, GLOB.frills_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/spines, GLOB.spines_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/spines_animated, GLOB.animated_spines_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.r_wings_list,roundstart = TRUE) + + //citadel code + //mammal bodyparts (fucking furries) + init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, GLOB.mam_body_markings_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, GLOB.mam_tails_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_ears, GLOB.mam_ears_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails_animated, GLOB.mam_tails_animated_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/taur, GLOB.taur_list) + //avian bodyparts (i swear this isn't starbound) +// init_sprite_accessory_subtypes(/datum/sprite_accessory/beaks/avian, GLOB.avian_beaks_list) +// init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/avian, GLOB.avian_tails_list) +// init_sprite_accessory_subtypes(/datum/sprite_accessory/avian_wings, GLOB.avian_wings_list) +// init_sprite_accessory_subtypes(/datum/sprite_accessory/avian_open_wings, GLOB.avian_open_wings_list) + //xeno parts (hiss?) + init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_head, GLOB.xeno_head_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_tail, GLOB.xeno_tail_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_dorsal, GLOB.xeno_dorsal_list) + //genitals + init_sprite_accessory_subtypes(/datum/sprite_accessory/penis, GLOB.cock_shapes_list) + + for(var/K in GLOB.cock_shapes_list) + var/datum/sprite_accessory/penis/value = GLOB.cock_shapes_list[K] + GLOB.cock_shapes_icons[K] = value.icon_state + + init_sprite_accessory_subtypes(/datum/sprite_accessory/vagina, GLOB.vagina_shapes_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, GLOB.breasts_shapes_list) + GLOB.breasts_size_list = list("a","b","c","d","e") //We need the list to choose from initialized, but it's no longer a sprite_accessory thing. + + + //Species + for(var/spath in subtypesof(/datum/species)) + var/datum/species/S = new spath() + GLOB.species_list[S.id] = spath + + //Surgeries + for(var/path in subtypesof(/datum/surgery)) + GLOB.surgeries_list += new path() + + //Materials + for(var/path in subtypesof(/datum/material)) + var/datum/material/D = new path() + GLOB.materials_list[D.id] = D + + //Techs + for(var/path in subtypesof(/datum/tech)) + var/datum/tech/D = new path() + GLOB.tech_list[D.id] = D + + //Emotes + for(var/path in subtypesof(/datum/emote)) + var/datum/emote/E = new path() + E.emote_list[E.key] = E + + init_subtypes(/datum/crafting_recipe, GLOB.crafting_recipes) + +/* // Uncomment to debug chemical reaction list. +/client/verb/debug_chemical_list() + + for (var/reaction in chemical_reactions_list) + . += "chemical_reactions_list\[\"[reaction]\"\] = \"[chemical_reactions_list[reaction]]\"\n" + if(islist(chemical_reactions_list[reaction])) + var/list/L = chemical_reactions_list[reaction] + for(var/t in L) + . += " has: [t]\n" + to_chat(world, .) +*/ + +//creates every subtype of prototype (excluding prototype) and adds it to list L. +//if no list/L is provided, one is created. +/proc/init_subtypes(prototype, list/L) + if(!istype(L)) + L = list() + for(var/path in subtypesof(prototype)) + L += new path() + return L + +//returns a list of paths to every subtype of prototype (excluding prototype) +//if no list/L is provided, one is created. +/proc/init_paths(prototype, list/L) + if(!istype(L)) + L = list() + for(var/path in subtypesof(prototype)) + L+= path + return L diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 9b16644b4c..91bf127ab8 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -926,10 +926,10 @@ GLOBAL_LIST_EMPTY(friendly_animal_types) return 0 //For creating consistent icons for human looking simple animals -/proc/get_flat_human_icon(icon_id, datum/job/J, datum/preferences/prefs) +/proc/get_flat_human_icon(icon_id, datum/job/J, datum/preferences/prefs, dummy_key) var/static/list/humanoid_icon_cache = list() if(!icon_id || !humanoid_icon_cache[icon_id]) - var/mob/living/carbon/human/dummy/body = new() + var/mob/living/carbon/human/dummy/body = generate_or_wait_for_human_dummy(dummy_key) if(prefs) prefs.copy_to(body) @@ -956,14 +956,12 @@ GLOBAL_LIST_EMPTY(friendly_animal_types) partial = getFlatIcon(body) out_icon.Insert(partial,dir=EAST) - qdel(body) - humanoid_icon_cache[icon_id] = out_icon + dummy_key? unset_busy_human_dummy(dummy_key) : qdel(body) return out_icon else return humanoid_icon_cache[icon_id] - //Hook, override to run code on- wait this is images //Images have dir without being an atom, so they get their own definition. //Lame. diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index 41d2f721f5..61a6866fe2 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -155,7 +155,6 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, var/size_factor = ((-cos(inputToDegrees) +1) /2) //returns a value from 0 to 1 return size_factor + scaling_modifier //scale mod of 0 results in a number from 0 to 1. A scale modifier of +0.5 returns 0.5 to 1.5 - //to_chat(world, "Transform multiplier of [src] is [size_factor + scaling_modifer]") //converts a uniform distributed random number into a normal distributed one //since this method produces two random numbers, one is saved for subsequent calls @@ -220,3 +219,8 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, new_x = Clamp(new_x, 0, world.maxx) new_y = Clamp(new_y, 0, world.maxy) return locate(new_x, new_y, starting.z) + +/proc/round_down(num) + if(round(num) != num) + return round(num--) + else return num diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index cb64f3fb22..de606b137e 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -220,7 +220,6 @@ GLOBAL_LIST_INIT(skin_tones, list( )) GLOBAL_LIST_EMPTY(species_list) -GLOBAL_LIST_EMPTY(roundstart_species) /proc/age2agedescription(age) switch(age) @@ -465,13 +464,17 @@ Proc for attack log creation, because really why not if(H.dna && istype(H.dna.species, species_datum)) . = TRUE -/proc/spawn_atom_to_turf(spawn_type, target, amount, admin_spawn=FALSE) +/proc/spawn_atom_to_turf(spawn_type, target, amount, admin_spawn=FALSE, list/extra_args) var/turf/T = get_turf(target) if(!T) CRASH("attempt to spawn atom type: [spawn_type] in nullspace") - for(var/j in 1 to amount) - var/atom/X = new spawn_type(T) + var/list/new_args = list(T) + if(extra_args) + new_args += extra_args + + for(var/j in 1 to amount) + var/atom/X = new spawn_type(arglist(new_args)) X.admin_spawned = admin_spawn /proc/spawn_and_random_walk(spawn_type, target, amount, walk_chance=100, max_walk=3, always_max_walk=FALSE, admin_spawn=FALSE) diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index 67179e8c8f..bfcfd23f50 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -1,246 +1,248 @@ -#define ION_FILE "ion_laws.json" - -/proc/lizard_name(gender) - if(gender == MALE) - return "[pick(GLOB.lizard_names_male)]-[pick(GLOB.lizard_names_male)]" - else - return "[pick(GLOB.lizard_names_female)]-[pick(GLOB.lizard_names_female)]" - -/proc/plasmaman_name() - return "[pick(GLOB.plasmaman_names)] \Roman[rand(1,99)]" - -/proc/church_name() - var/static/church_name - if (church_name) - return church_name - - var/name = "" - - name += pick("Holy", "United", "First", "Second", "Last") - - if (prob(20)) - name += " Space" - - name += " " + pick("Church", "Cathedral", "Body", "Worshippers", "Movement", "Witnesses") - name += " of [religion_name()]" - - return name - -GLOBAL_VAR(command_name) -/proc/command_name() - if (GLOB.command_name) - return GLOB.command_name - - var/name = "Central Command" - - GLOB.command_name = name - return name - -/proc/change_command_name(name) - - GLOB.command_name = name - - return name - -/proc/religion_name() - var/static/religion_name - if (religion_name) - return religion_name - - var/name = "" - - name += pick("bee", "science", "edu", "captain", "assistant", "monkey", "alien", "space", "unit", "sprocket", "gadget", "bomb", "revolution", "beyond", "station", "goon", "robot", "ivor", "hobnob") - name += pick("ism", "ia", "ology", "istism", "ites", "ick", "ian", "ity") - - return capitalize(name) - -/proc/station_name() - if(!GLOB.station_name) - var/newname - if(config && config.station_name) - newname = config.station_name - else - newname = new_station_name() - - set_station_name(newname) - - return GLOB.station_name - -/proc/set_station_name(newname) - GLOB.station_name = newname - - if(config && config.server_name) - world.name = "[config.server_name][config.server_name==GLOB.station_name ? "" : ": [GLOB.station_name]"]" - else - world.name = GLOB.station_name - - -/proc/new_station_name() - var/random = rand(1,5) - var/name = "" - var/new_station_name = "" - - //Rare: Pre-Prefix - if (prob(10)) - name = pick(GLOB.station_prefixes) - new_station_name = name + " " - name = "" - - // Prefix - for(var/holiday_name in SSevents.holidays) - if(holiday_name == "Friday the 13th") - random = 13 - var/datum/holiday/holiday = SSevents.holidays[holiday_name] - name = holiday.getStationPrefix() - //get normal name - if(!name) - name = pick(GLOB.station_names) - if(name) - new_station_name += name + " " - - // Suffix - name = pick(GLOB.station_suffixes) - new_station_name += name + " " - - // ID Number - switch(random) - if(1) - new_station_name += "[rand(1, 99)]" - if(2) - new_station_name += pick(GLOB.greek_letters) - if(3) - new_station_name += "\Roman[rand(1,99)]" - if(4) - new_station_name += pick(GLOB.phonetic_alphabet) - if(5) - new_station_name += pick(GLOB.numbers_as_words) - if(13) - new_station_name += pick("13","XIII","Thirteen") - return new_station_name - -/proc/syndicate_name() - var/static/syndicate_name - if (syndicate_name) - return syndicate_name - - var/name = "" - - // Prefix - name += pick("Clandestine", "Prima", "Blue", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Bonk", "Gene", "Gib") - - // Suffix - if (prob(80)) - name += " " - - // Full - if (prob(60)) - name += pick("Syndicate", "Consortium", "Collective", "Corporation", "Group", "Holdings", "Biotech", "Industries", "Systems", "Products", "Chemicals", "Enterprises", "Family", "Creations", "International", "Intergalactic", "Interplanetary", "Foundation", "Positronics", "Hive") - // Broken - else - name += pick("Syndi", "Corp", "Bio", "System", "Prod", "Chem", "Inter", "Hive") - name += pick("", "-") - name += pick("Tech", "Sun", "Co", "Tek", "X", "Inc", "Code") - // Small - else - name += pick("-", "*", "") - name += pick("Tech", "Sun", "Co", "Tek", "X", "Inc", "Gen", "Star", "Dyne", "Code", "Hive") - - syndicate_name = name - return name - - -//Traitors and traitor silicons will get these. Revs will not. -GLOBAL_VAR(syndicate_code_phrase) //Code phrase for traitors. -GLOBAL_VAR(syndicate_code_response) //Code response for traitors. - - /* - Should be expanded. - How this works: - Instead of "I'm looking for James Smith," the traitor would say "James Smith" as part of a conversation. - Another traitor may then respond with: "They enjoy running through the void-filled vacuum of the derelict." - The phrase should then have the words: James Smith. - The response should then have the words: run, void, and derelict. - This way assures that the code is suited to the conversation and is unpredicatable. - Obviously, some people will be better at this than others but in theory, everyone should be able to do it and it only enhances roleplay. - Can probably be done through "{ }" but I don't really see the practical benefit. - One example of an earlier system is commented below. - /N - */ - -/proc/generate_code_phrase(return_list=FALSE)//Proc is used for phrase and response in master_controller.dm - - if(!return_list) - . = "" - else - . = list() - - var/words = pick(//How many words there will be. Minimum of two. 2, 4 and 5 have a lesser chance of being selected. 3 is the most likely. - 50; 2, - 200; 3, - 50; 4, - 25; 5 - ) - - var/list/safety = list(1,2,3)//Tells the proc which options to remove later on. - var/nouns = strings(ION_FILE, "ionabstract") - var/objects = strings(ION_FILE, "ionobjects") - var/adjectives = strings(ION_FILE, "ionadjectives") - var/threats = strings(ION_FILE, "ionthreats") - var/foods = strings(ION_FILE, "ionfood") - var/drinks = strings(ION_FILE, "iondrinks") - var/list/locations = GLOB.teleportlocs.len ? GLOB.teleportlocs : drinks //if null, defaults to drinks instead. - - var/list/names = list() - for(var/datum/data/record/t in GLOB.data_core.general)//Picks from crew manifest. - names += t.fields["name"] - - var/maxwords = words//Extra var to check for duplicates. - - for(words,words>0,words--)//Randomly picks from one of the choices below. - - if(words==1&&(1 in safety)&&(2 in safety))//If there is only one word remaining and choice 1 or 2 have not been selected. - safety = list(pick(1,2))//Select choice 1 or 2. - else if(words==1&&maxwords==2)//Else if there is only one word remaining (and there were two originally), and 1 or 2 were chosen, - safety = list(3)//Default to list 3 - - switch(pick(safety))//Chance based on the safety list. - if(1)//1 and 2 can only be selected once each to prevent more than two specific names/places/etc. - switch(rand(1,2))//Mainly to add more options later. - if(1) - if(names.len&&prob(70)) - . += pick(names) - else - if(prob(10)) - . += pick(lizard_name(MALE),lizard_name(FEMALE)) - else - var/new_name = pick(pick(GLOB.first_names_male,GLOB.first_names_female)) - new_name += " " - new_name += pick(GLOB.last_names) - . += new_name - if(2) - . += pick(get_all_jobs())//Returns a job. - safety -= 1 - if(2) - switch(rand(1,3))//Food, drinks, or things. Only selectable once. - if(1) - . += lowertext(pick(drinks)) - if(2) - . += lowertext(pick(foods)) - if(3) - . += lowertext(pick(locations)) - safety -= 2 - if(3) - switch(rand(1,4))//Abstract nouns, objects, adjectives, threats. Can be selected more than once. - if(1) - . += lowertext(pick(nouns)) - if(2) - . += lowertext(pick(objects)) - if(3) - . += lowertext(pick(adjectives)) - if(4) - . += lowertext(pick(threats)) - if(!return_list) - if(words==1) - . += "." - else - . += ", " +#define ION_FILE "ion_laws.json" + +/proc/lizard_name(gender) + if(gender == MALE) + return "[pick(GLOB.lizard_names_male)]-[pick(GLOB.lizard_names_male)]" + else + return "[pick(GLOB.lizard_names_female)]-[pick(GLOB.lizard_names_female)]" + +/proc/plasmaman_name() + return "[pick(GLOB.plasmaman_names)] \Roman[rand(1,99)]" + +/proc/church_name() + var/static/church_name + if (church_name) + return church_name + + var/name = "" + + name += pick("Holy", "United", "First", "Second", "Last") + + if (prob(20)) + name += " Space" + + name += " " + pick("Church", "Cathedral", "Body", "Worshippers", "Movement", "Witnesses") + name += " of [religion_name()]" + + return name + +GLOBAL_VAR(command_name) +/proc/command_name() + if (GLOB.command_name) + return GLOB.command_name + + var/name = "Central Command" + + GLOB.command_name = name + return name + +/proc/change_command_name(name) + + GLOB.command_name = name + + return name + +/proc/religion_name() + var/static/religion_name + if (religion_name) + return religion_name + + var/name = "" + + name += pick("bee", "science", "edu", "captain", "assistant", "monkey", "alien", "space", "unit", "sprocket", "gadget", "bomb", "revolution", "beyond", "station", "goon", "robot", "ivor", "hobnob") + name += pick("ism", "ia", "ology", "istism", "ites", "ick", "ian", "ity") + + return capitalize(name) + +/proc/station_name() + if(!GLOB.station_name) + var/newname + var/config_station_name = CONFIG_GET(string/stationname) + if(config_station_name) + newname = config_station_name + else + newname = new_station_name() + + set_station_name(newname) + + return GLOB.station_name + +/proc/set_station_name(newname) + GLOB.station_name = newname + + var/config_server_name = CONFIG_GET(string/servername) + if(config_server_name) + world.name = "[config_server_name][config_server_name == GLOB.station_name ? "" : ": [GLOB.station_name]"]" + else + world.name = GLOB.station_name + + +/proc/new_station_name() + var/random = rand(1,5) + var/name = "" + var/new_station_name = "" + + //Rare: Pre-Prefix + if (prob(10)) + name = pick(GLOB.station_prefixes) + new_station_name = name + " " + name = "" + + // Prefix + for(var/holiday_name in SSevents.holidays) + if(holiday_name == "Friday the 13th") + random = 13 + var/datum/holiday/holiday = SSevents.holidays[holiday_name] + name = holiday.getStationPrefix() + //get normal name + if(!name) + name = pick(GLOB.station_names) + if(name) + new_station_name += name + " " + + // Suffix + name = pick(GLOB.station_suffixes) + new_station_name += name + " " + + // ID Number + switch(random) + if(1) + new_station_name += "[rand(1, 99)]" + if(2) + new_station_name += pick(GLOB.greek_letters) + if(3) + new_station_name += "\Roman[rand(1,99)]" + if(4) + new_station_name += pick(GLOB.phonetic_alphabet) + if(5) + new_station_name += pick(GLOB.numbers_as_words) + if(13) + new_station_name += pick("13","XIII","Thirteen") + return new_station_name + +/proc/syndicate_name() + var/static/syndicate_name + if (syndicate_name) + return syndicate_name + + var/name = "" + + // Prefix + name += pick("Clandestine", "Prima", "Blue", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Bonk", "Gene", "Gib") + + // Suffix + if (prob(80)) + name += " " + + // Full + if (prob(60)) + name += pick("Syndicate", "Consortium", "Collective", "Corporation", "Group", "Holdings", "Biotech", "Industries", "Systems", "Products", "Chemicals", "Enterprises", "Family", "Creations", "International", "Intergalactic", "Interplanetary", "Foundation", "Positronics", "Hive") + // Broken + else + name += pick("Syndi", "Corp", "Bio", "System", "Prod", "Chem", "Inter", "Hive") + name += pick("", "-") + name += pick("Tech", "Sun", "Co", "Tek", "X", "Inc", "Code") + // Small + else + name += pick("-", "*", "") + name += pick("Tech", "Sun", "Co", "Tek", "X", "Inc", "Gen", "Star", "Dyne", "Code", "Hive") + + syndicate_name = name + return name + + +//Traitors and traitor silicons will get these. Revs will not. +GLOBAL_VAR(syndicate_code_phrase) //Code phrase for traitors. +GLOBAL_VAR(syndicate_code_response) //Code response for traitors. + + /* + Should be expanded. + How this works: + Instead of "I'm looking for James Smith," the traitor would say "James Smith" as part of a conversation. + Another traitor may then respond with: "They enjoy running through the void-filled vacuum of the derelict." + The phrase should then have the words: James Smith. + The response should then have the words: run, void, and derelict. + This way assures that the code is suited to the conversation and is unpredicatable. + Obviously, some people will be better at this than others but in theory, everyone should be able to do it and it only enhances roleplay. + Can probably be done through "{ }" but I don't really see the practical benefit. + One example of an earlier system is commented below. + /N + */ + +/proc/generate_code_phrase(return_list=FALSE)//Proc is used for phrase and response in master_controller.dm + + if(!return_list) + . = "" + else + . = list() + + var/words = pick(//How many words there will be. Minimum of two. 2, 4 and 5 have a lesser chance of being selected. 3 is the most likely. + 50; 2, + 200; 3, + 50; 4, + 25; 5 + ) + + var/list/safety = list(1,2,3)//Tells the proc which options to remove later on. + var/nouns = strings(ION_FILE, "ionabstract") + var/objects = strings(ION_FILE, "ionobjects") + var/adjectives = strings(ION_FILE, "ionadjectives") + var/threats = strings(ION_FILE, "ionthreats") + var/foods = strings(ION_FILE, "ionfood") + var/drinks = strings(ION_FILE, "iondrinks") + var/list/locations = GLOB.teleportlocs.len ? GLOB.teleportlocs : drinks //if null, defaults to drinks instead. + + var/list/names = list() + for(var/datum/data/record/t in GLOB.data_core.general)//Picks from crew manifest. + names += t.fields["name"] + + var/maxwords = words//Extra var to check for duplicates. + + for(words,words>0,words--)//Randomly picks from one of the choices below. + + if(words==1&&(1 in safety)&&(2 in safety))//If there is only one word remaining and choice 1 or 2 have not been selected. + safety = list(pick(1,2))//Select choice 1 or 2. + else if(words==1&&maxwords==2)//Else if there is only one word remaining (and there were two originally), and 1 or 2 were chosen, + safety = list(3)//Default to list 3 + + switch(pick(safety))//Chance based on the safety list. + if(1)//1 and 2 can only be selected once each to prevent more than two specific names/places/etc. + switch(rand(1,2))//Mainly to add more options later. + if(1) + if(names.len&&prob(70)) + . += pick(names) + else + if(prob(10)) + . += pick(lizard_name(MALE),lizard_name(FEMALE)) + else + var/new_name = pick(pick(GLOB.first_names_male,GLOB.first_names_female)) + new_name += " " + new_name += pick(GLOB.last_names) + . += new_name + if(2) + . += pick(get_all_jobs())//Returns a job. + safety -= 1 + if(2) + switch(rand(1,3))//Food, drinks, or things. Only selectable once. + if(1) + . += lowertext(pick(drinks)) + if(2) + . += lowertext(pick(foods)) + if(3) + . += lowertext(pick(locations)) + safety -= 2 + if(3) + switch(rand(1,4))//Abstract nouns, objects, adjectives, threats. Can be selected more than once. + if(1) + . += lowertext(pick(nouns)) + if(2) + . += lowertext(pick(objects)) + if(3) + . += lowertext(pick(adjectives)) + if(4) + . += lowertext(pick(threats)) + if(!return_list) + if(words==1) + . += "." + else + . += ", " diff --git a/code/__HELPERS/priority_announce.dm b/code/__HELPERS/priority_announce.dm index d3b9580f37..0ffd8d8580 100644 --- a/code/__HELPERS/priority_announce.dm +++ b/code/__HELPERS/priority_announce.dm @@ -39,7 +39,7 @@ priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') for(var/obj/machinery/computer/communications/C in GLOB.machines) - if(!(C.stat & (BROKEN|NOPOWER)) && C.z == ZLEVEL_STATION) + if(!(C.stat & (BROKEN|NOPOWER)) && (C.z in GLOB.station_z_levels)) var/obj/item/paper/P = new /obj/item/paper(C.loc) P.name = "paper - '[title]'" P.info = text diff --git a/code/__HELPERS/shell.dm b/code/__HELPERS/shell.dm new file mode 100644 index 0000000000..8b615eac0a --- /dev/null +++ b/code/__HELPERS/shell.dm @@ -0,0 +1,57 @@ +//Runs the command in the system's shell, returns a list of (error code, stdout, stderr) + +#define SHELLEO_NAME "data/shelleo." +#define SHELLEO_ERR ".err" +#define SHELLEO_OUT ".out" +/world/proc/shelleo(command) + var/static/list/shelleo_ids = list() + var/stdout = "" + var/stderr = "" + var/errorcode = 1 + var/shelleo_id + var/out_file = "" + var/err_file = "" + var/static/list/interpreters = list("[MS_WINDOWS]" = "cmd /c", "[UNIX]" = "sh -c") + var/interpreter = interpreters["[world.system_type]"] + if(interpreter) + for(var/seo_id in shelleo_ids) + if(!shelleo_ids[seo_id]) + shelleo_ids[seo_id] = TRUE + shelleo_id = "[seo_id]" + break + if(!shelleo_id) + shelleo_id = "[shelleo_ids.len + 1]" + shelleo_ids += shelleo_id + shelleo_ids[shelleo_id] = TRUE + out_file = "[SHELLEO_NAME][shelleo_id][SHELLEO_OUT]" + err_file = "[SHELLEO_NAME][shelleo_id][SHELLEO_ERR]" + errorcode = shell("[interpreter] \"[command]\" > [out_file] 2> [err_file]") + if(fexists(out_file)) + stdout = file2text(out_file) + fdel(out_file) + if(fexists(err_file)) + stderr = file2text(err_file) + fdel(err_file) + shelleo_ids[shelleo_id] = FALSE + else + CRASH("Operating System: [world.system_type] not supported") // If you encounter this error, you are encouraged to update this proc with support for the new operating system + . = list(errorcode, stdout, stderr) +#undef SHELLEO_NAME +#undef SHELLEO_ERR +#undef SHELLEO_OUT + +/proc/shell_url_scrub(url) + var/static/regex/bad_chars_regex = regex("\[^#%&./:=?\\w]*", "g") + var/scrubbed_url = "" + var/bad_match = "" + var/last_good = 1 + var/bad_chars = 1 + do + bad_chars = bad_chars_regex.Find(url) + scrubbed_url += copytext(url, last_good, bad_chars) + if(bad_chars) + bad_match = url_encode(bad_chars_regex.match) + scrubbed_url += bad_match + last_good = bad_chars + length(bad_match) + while(bad_chars) + . = scrubbed_url diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 53691d122e..3491e831e6 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -19,7 +19,7 @@ return copytext(sqltext, 2, lentext(sqltext));//Quote() adds quotes around input, we already do that /proc/format_table_name(table as text) - return global.sqlfdbktableprefix + table + return CONFIG_GET(string/feedback_tableprefix) + table /* * Text sanitization @@ -414,34 +414,159 @@ GLOBAL_LIST_INIT(binary, list("0","1")) end = temp return end - -/proc/parsepencode(t, mob/user=null, signfont=SIGNFONT) - if(length(t) < 1) //No input means nothing needs to be parsed +/proc/parsemarkdown_basic_step1(t, limited=FALSE) + if(length(t) <= 0) return - t = replacetext(t, "\[center\]", "
") - t = replacetext(t, "\[/center\]", "
") - t = replacetext(t, "\[br\]", "
") - t = replacetext(t, "\[b\]", "") - t = replacetext(t, "\[/b\]", "") - t = replacetext(t, "\[i\]", "") - t = replacetext(t, "\[/i\]", "") - t = replacetext(t, "\[u\]", "") - t = replacetext(t, "\[/u\]", "") - t = replacetext(t, "\[large\]", "") - t = replacetext(t, "\[/large\]", "") - if(user) - t = replacetext(t, "\[sign\]", "[user.real_name]") - else - t = replacetext(t, "\[sign\]", "") - t = replacetext(t, "\[field\]", "") + // This parses markdown with no custom rules - t = replacetext(t, "\[*\]", "
  • ") - t = replacetext(t, "\[hr\]", "
    ") - t = replacetext(t, "\[small\]", "") - t = replacetext(t, "\[/small\]", "") - t = replacetext(t, "\[list\]", "
      ") - t = replacetext(t, "\[/list\]", "
    ") + // Escape backslashed + + t = replacetext(t, "$", "$-") + t = replacetext(t, "\\\\", "$1") + t = replacetext(t, "\\**", "$2") + t = replacetext(t, "\\*", "$3") + t = replacetext(t, "\\__", "$4") + t = replacetext(t, "\\_", "$5") + t = replacetext(t, "\\^", "$6") + t = replacetext(t, "\\((", "$7") + t = replacetext(t, "\\))", "$8") + t = replacetext(t, "\\|", "$9") + t = replacetext(t, "\\%", "$0") + + // Escape single characters that will be used + + t = replacetext(t, "!", "$a") + + // Parse hr and small + + if(!limited) + t = replacetext(t, "((", "") + t = replacetext(t, "))", "") + t = replacetext(t, regex("(-){3,}", "gm"), "
    ") + t = replacetext(t, regex("^\\((-){3,}\\)$", "gm"), "$1") + + // Parse lists + + var/list/tlist = splittext(t, "\n") + var/tlistlen = tlist.len + var/listlevel = -1 + var/singlespace = -1 // if 0, double spaces are used before asterisks, if 1, single are + for(var/i = 1, i <= tlistlen, i++) + var/line = tlist[i] + var/count_asterisk = length(replacetext(line, regex("\[^\\*\]+", "g"), "")) + if(count_asterisk % 2 == 1 && findtext(line, regex("^\\s*\\*", "g"))) // there is an extra asterisk in the beggining + + var/count_w = length(replacetext(line, regex("^( *)\\*.*$", "g"), "$1")) // whitespace before asterisk + line = replacetext(line, regex("^ *(\\*.*)$", "g"), "$1") + + if(singlespace == -1 && count_w == 2) + if(listlevel == 0) + singlespace = 0 + else + singlespace = 1 + + if(singlespace == 0) + count_w = count_w % 2 ? round(count_w / 2 + 0.25) : count_w / 2 + + line = replacetext(line, regex("\\*", ""), "
  • ") + while(listlevel < count_w) + line = "
      " + line + listlevel++ + while(listlevel > count_w) + line = "
    " + line + listlevel-- + + else while(listlevel >= 0) + line = "" + line + listlevel-- + + tlist[i] = line + // end for + + t = tlist[1] + for(var/i = 2, i <= tlistlen, i++) + t += "\n" + tlist[i] + + while(listlevel >= 0) + t += "" + listlevel-- + + else + t = replacetext(t, "((", "") + t = replacetext(t, "))", "") + + // Parse headers + + t = replacetext(t, regex("^#(?!#) ?(.+)$", "gm"), "

    $1

    ") + t = replacetext(t, regex("^##(?!#) ?(.+)$", "gm"), "

    $1

    ") + t = replacetext(t, regex("^###(?!#) ?(.+)$", "gm"), "

    $1

    ") + t = replacetext(t, regex("^#### ?(.+)$", "gm"), "
    $1
    ") + + // Parse most rules + + t = replacetext(t, regex("\\*(\[^\\*\]*)\\*", "g"), "$1") + t = replacetext(t, regex("_(\[^_\]*)_", "g"), "$1") + t = replacetext(t, "", "!") + t = replacetext(t, "", "!") + t = replacetext(t, regex("\\!(\[^\\!\]+)\\!", "g"), "$1") + t = replacetext(t, regex("\\^(\[^\\^\]+)\\^", "g"), "$1") + t = replacetext(t, regex("\\|(\[^\\|\]+)\\|", "g"), "
    $1
    ") + t = replacetext(t, "!", "
    ") + + return t + +/proc/parsemarkdown_basic_step2(t) + if(length(t) <= 0) + return + + // Restore the single characters used + + t = replacetext(t, "$a", "!") + + // Redo the escaping + + t = replacetext(t, "$1", "\\") + t = replacetext(t, "$2", "**") + t = replacetext(t, "$3", "*") + t = replacetext(t, "$4", "__") + t = replacetext(t, "$5", "_") + t = replacetext(t, "$6", "^") + t = replacetext(t, "$7", "((") + t = replacetext(t, "$8", "))") + t = replacetext(t, "$9", "|") + t = replacetext(t, "$0", "%") + t = replacetext(t, "$-", "$") + + return t + +/proc/parsemarkdown_basic(t, limited=FALSE) + t = parsemarkdown_basic_step1(t, limited) + t = parsemarkdown_basic_step2(t) + return t + +/proc/parsemarkdown(t, mob/user=null, limited=FALSE) + if(length(t) <= 0) + return + + // Premanage whitespace + + t = replacetext(t, regex("\[^\\S\\r\\n \]", "g"), " ") + + t = parsemarkdown_basic_step1(t) + + t = replacetext(t, regex("%s(?:ign)?(?=\\s|$)", "igm"), user ? "[user.real_name]" : "") + t = replacetext(t, regex("%f(?:ield)?(?=\\s|$)", "igm"), "") + + t = parsemarkdown_basic_step2(t) + + // Manage whitespace + + t = replacetext(t, regex("(?:\\r\\n?|\\n)", "g"), "
    ") + + t = replacetext(t, " ", "  ") + + // Done return t @@ -469,7 +594,7 @@ GLOBAL_LIST_INIT(binary, list("0","1")) //in the json file and have it be reflected in the in game item/mob it came from. //(That's what things like savefiles are for) Note that this list is not shuffled. /proc/twitterize(list/proposed, filename, cullshort = 1, storemax = 1000) - if(!islist(proposed) || !filename || !config.log_twitter) + if(!islist(proposed) || !filename || !CONFIG_GET(flag/log_twitter)) return //Regular expressions are, as usual, absolute magic diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 546935e697..e3ce12397e 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -1,52 +1,148 @@ -//Returns the world time in english -/proc/worldtime2text() - return gameTimestamp("hh:mm:ss", world.time) - -/proc/time_stamp(format = "hh:mm:ss", show_ds) - var/time_string = time2text(world.timeofday, format) - return show_ds ? "[time_string]:[world.timeofday % 10]" : time_string - -/proc/gameTimestamp(format = "hh:mm:ss", wtime=null) - if(!wtime) - wtime = world.time - return time2text(wtime - GLOB.timezoneOffset + SSticker.gametime_offset - SSticker.round_start_time, format) - -/* Returns 1 if it is the selected month and day */ -/proc/isDay(month, day) - if(isnum(month) && isnum(day)) - var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month - var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day - if(month == MM && day == DD) - return 1 - - // Uncomment this out when debugging! - //else - //return 1 - -//returns timestamp in a sql and ISO 8601 friendly format -/proc/SQLtime(timevar) - if(!timevar) - timevar = world.realtime - return time2text(timevar, "YYYY-MM-DD hh:mm:ss") - - -GLOBAL_VAR_INIT(midnight_rollovers, 0) -GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0) -/proc/update_midnight_rollover() - if (world.timeofday < GLOB.rollovercheck_last_timeofday) //TIME IS GOING BACKWARDS! - return GLOB.midnight_rollovers++ - return GLOB.midnight_rollovers - -/proc/weekdayofthemonth() - var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day - switch(DD) - if(8 to 13) - return 2 - if(14 to 20) - return 3 - if(21 to 27) - return 4 - if(28 to INFINITY) - return 5 - else - return 1 +//Returns the world time in english +/proc/worldtime2text() + return gameTimestamp("hh:mm:ss", world.time) + +/proc/time_stamp(format = "hh:mm:ss", show_ds) + var/time_string = time2text(world.timeofday, format) + return show_ds ? "[time_string]:[world.timeofday % 10]" : time_string + +/proc/gameTimestamp(format = "hh:mm:ss", wtime=null) + if(!wtime) + wtime = world.time + return time2text(wtime - GLOB.timezoneOffset + SSticker.gametime_offset - SSticker.round_start_time, format) + +/* Returns 1 if it is the selected month and day */ +/proc/isDay(month, day) + if(isnum(month) && isnum(day)) + var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month + var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day + if(month == MM && day == DD) + return 1 + + // Uncomment this out when debugging! + //else + //return 1 + +//returns timestamp in a sql and ISO 8601 friendly format +/proc/SQLtime(timevar) + if(!timevar) + timevar = world.realtime + return time2text(timevar, "YYYY-MM-DD hh:mm:ss") + + +GLOBAL_VAR_INIT(midnight_rollovers, 0) +GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0) +/proc/update_midnight_rollover() + if (world.timeofday < GLOB.rollovercheck_last_timeofday) //TIME IS GOING BACKWARDS! + return GLOB.midnight_rollovers++ + return GLOB.midnight_rollovers + +/proc/weekdayofthemonth() + var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day + switch(DD) + if(8 to 13) + return 2 + if(14 to 20) + return 3 + if(21 to 27) + return 4 + if(28 to INFINITY) + return 5 + else + return 1 + +//Takes a value of time in deciseconds. +//Returns a text value of that number in hours, minutes, or seconds. +/proc/DisplayTimeText(time_value) + var/second = time_value*0.1 + var/second_adjusted = null + var/second_rounded = FALSE + var/minute = null + var/hour = null + var/day = null + + if(!second) + return "0 seconds" + if(second >= 60) + minute = round_down(second/60) + second = round(second - (minute*60), 0.1) + second_rounded = TRUE + if(second) //check if we still have seconds remaining to format, or if everything went into minute. + second_adjusted = round(second) //used to prevent '1 seconds' being shown + if(day || hour || minute) + if(second_adjusted == 1 && second >= 1) + second = " and 1 second" + else if(second > 1) + second = " and [second_adjusted] seconds" + else //shows a fraction if seconds is < 1 + if(second_rounded) //no sense rounding again if it's already done + second = " and [second] seconds" + else + second = " and [round(second, 0.1)] seconds" + else + if(second_adjusted == 1 && second >= 1) + second = "1 second" + else if(second > 1) + second = "[second_adjusted] seconds" + else + if(second_rounded) + second = "[second] seconds" + else + second = "[round(second, 0.1)] seconds" + else + second = null + + if(!minute) + return "[second]" + if(minute >= 60) + hour = round_down(minute/60,1) + minute = (minute - (hour*60)) + if(minute) //alot simpler from here since you don't have to worry about fractions + if(minute != 1) + if((day || hour) && second) + minute = ", [minute] minutes" + else if((day || hour) && !second) + minute = " and [minute] minutes" + else + minute = "[minute] minutes" + else + if((day || hour) && second) + minute = ", 1 minute" + else if((day || hour) && !second) + minute = " and 1 minute" + else + minute = "1 minute" + else + minute = null + + if(!hour) + return "[minute][second]" + if(hour >= 24) + day = round_down(hour/24,1) + hour = (hour - (day*24)) + if(hour) + if(hour != 1) + if(day && (minute || second)) + hour = ", [hour] hours" + else if(day && (!minute || !second)) + hour = " and [hour] hours" + else + hour = "[hour] hours" + else + if(day && (minute || second)) + hour = ", 1 hour" + else if(day && (!minute || !second)) + hour = " and 1 hour" + else + hour = "1 hour" + else + hour = null + + if(!day) + return "[hour][minute][second]" + if(day > 1) + day = "[day] days" + else + day = "1 day" + + return "[day][hour][minute][second]" diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 60b5d82940..46d6c2ce5c 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -554,3 +554,24 @@ else return /datum return text2path(copytext(string_type, 1, last_slash)) + +//returns a string the last bit of a type, without the preceeding '/' +/proc/type2top(the_type) + //handle the builtins manually + if(!ispath(the_type)) + return + switch(the_type) + if(/datum) + return "datum" + if(/atom) + return "atom" + if(/obj) + return "obj" + if(/mob) + return "mob" + if(/area) + return "area" + if(/turf) + return "turf" + else //regex everything else (works for /proc too) + return lowertext(replacetext("[the_type]", "[type2parent(the_type)]/", "")) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index a05d52087f..5e190ab709 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -502,28 +502,12 @@ Turf and target are separate in case you want to teleport some distance from a t var/y=arcsin(x/sqrt(1+x*x)) return y -/atom/proc/GetAllContents(list/ignore_typecache) - var/list/processing_list = list(src) - var/list/assembled = list() - if(ignore_typecache) //If there's a typecache, use it. - while(processing_list.len) - var/atom/A = processing_list[1] - processing_list -= A - if(ignore_typecache[A.type]) - continue - processing_list |= (A.contents - assembled) - assembled |= A - - else //If there's none, only make this check once for performance. - while(processing_list.len) - var/atom/A = processing_list[1] - processing_list -= A - - processing_list |= (A.contents - assembled) - - assembled |= A - - return assembled +/atom/proc/GetAllContents(list/output=list()) + . = output + output += src + for(var/i in 1 to contents.len) + var/atom/thing = contents[i] + thing.GetAllContents(output) //Step-towards method of determining whether one atom can see another. Similar to viewers() /proc/can_see(atom/source, atom/target, length=5) // I couldnt be arsed to do actual raycasting :I This is horribly inaccurate. @@ -812,7 +796,7 @@ GLOBAL_LIST_INIT(can_embed_types, typecacheof(list( /* -Checks if that loc and dir has a item on the wall +Checks if that loc and dir has an item on the wall */ GLOBAL_LIST_INIT(WALLITEMS, typecacheof(list( /obj/machinery/power/apc, /obj/machinery/airalarm, /obj/item/device/radio/intercom, @@ -1282,7 +1266,7 @@ proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types()) #define QDEL_LIST(L) if(L) { for(var/I in L) qdel(I); 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) qel(L[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) @@ -1380,63 +1364,6 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) return FALSE return TRUE -//WHATEVER YOU USE THIS FOR MUST BE SANITIZED TO SHIT, IT USES SHELL -//It also sleeps - -//Set this to TRUE before calling -//This prevents RCEs from badmins -//kevinz000 if you touch this I will hunt you down -GLOBAL_VAR_INIT(valid_HTTPSGet, FALSE) -GLOBAL_PROTECT(valid_HTTPSGet) -/proc/HTTPSGet(url) //tgs2 support - if(findtext(url, "\"")) - GLOB.valid_HTTPSGet = FALSE - - if(!GLOB.valid_HTTPSGet) - if(usr) - CRASH("[usr.ckey]([usr]) just attempted an invalid HTTPSGet on: [url]!") - else - CRASH("Invalid HTTPSGet call on: [url]") - GLOB.valid_HTTPSGet = FALSE - - //"This has got to be the ugliest hack I have ever done" - //warning, here be dragons - /* - | @___oo - /\ /\ / (__,,,,| - ) /^\) ^\/ _) - ) /^\/ _) - ) _ / / _) - /\ )/\/ || | )_) - < > |(,,) )__) - || / \)___)\ - | \____( )___) )___ - \______(_______;;; __;;; - */ - var/temp_file = "data/HTTPSGetOutput.txt" - var/command - if(world.system_type == MS_WINDOWS) - command = "powershell -Command \"wget [url] -OutFile [temp_file]\"" - else if(world.system_type == UNIX) - command = "wget -O [temp_file] [url]" - else - CRASH("Invalid world.system_type ([world.system_type])? Yell at Lummox.") - - log_world("HTTPSGet: [url]") - var/result = shell(command) - if(result != 0) - log_world("Download failed: shell exited with code: [result]") - return - - var/f = file(temp_file) - if(!f) - log_world("Download failed: Temp file not found") - return - - . = file2text(f) - f = null - fdel(temp_file) - #define UNTIL(X) while(!(X)) stoplag() /proc/pass() diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 54459da0b5..829a55150f 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -33,7 +33,7 @@ #define MAX_CHARTER_LEN 80 //MINOR TWEAKS/MISC -#define AGE_MIN 17 //youngest a character can be +#define AGE_MIN 18 //youngest a character can be #define AGE_MAX 85 //oldest a character can be #define WIZARD_AGE_MIN 30 //youngest a wizard can be #define SHOES_SLOWDOWN 0 //How much shoes slow you down by default. Negative values speed you up @@ -72,4 +72,4 @@ //Update this whenever the db schema changes //make sure you add an update to the schema_version stable in the db changelog #define DB_MAJOR_VERSION 3 -#define DB_MINOR_VERSION 1 +#define DB_MINOR_VERSION 3 diff --git a/code/_globalvars/configuration.dm b/code/_globalvars/configuration.dm index 83bf3cfb5a..391744e34c 100644 --- a/code/_globalvars/configuration.dm +++ b/code/_globalvars/configuration.dm @@ -1,4 +1,4 @@ -GLOBAL_REAL(config, /datum/configuration) +GLOBAL_REAL(config, /datum/controller/configuration) GLOBAL_DATUM_INIT(revdata, /datum/getrev, new) @@ -11,9 +11,7 @@ GLOBAL_VAR_INIT(hub_visibility, FALSE) GLOBAL_VAR_INIT(ooc_allowed, TRUE) // used with admin verbs to disable ooc - not a config option apparently GLOBAL_VAR_INIT(dooc_allowed, TRUE) -GLOBAL_VAR_INIT(abandon_allowed, TRUE) GLOBAL_VAR_INIT(enter_allowed, TRUE) -GLOBAL_VAR_INIT(guests_allowed, TRUE) GLOBAL_VAR_INIT(shuttle_frozen, FALSE) GLOBAL_VAR_INIT(shuttle_left, FALSE) GLOBAL_VAR_INIT(tinted_weldhelh, TRUE) @@ -25,10 +23,16 @@ GLOBAL_VAR_INIT(Debug, FALSE) // global debug switch GLOBAL_VAR_INIT(Debug2, FALSE) //This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage +//Protecting these because the proper way to edit them is with the config/secrets GLOBAL_VAR_INIT(MAX_EX_DEVESTATION_RANGE, 3) +GLOBAL_PROTECT(MAX_EX_DEVESTATION_RANGE) GLOBAL_VAR_INIT(MAX_EX_HEAVY_RANGE, 7) +GLOBAL_PROTECT(MAX_EX_HEAVY_RANGE) GLOBAL_VAR_INIT(MAX_EX_LIGHT_RANGE, 14) +GLOBAL_PROTECT(MAX_EX_LIGHT_RANGE) GLOBAL_VAR_INIT(MAX_EX_FLASH_RANGE, 14) +GLOBAL_PROTECT(MAX_EX_FLASH_RANGE) GLOBAL_VAR_INIT(MAX_EX_FLAME_RANGE, 14) +GLOBAL_PROTECT(MAX_EX_FLAME_RANGE) GLOBAL_VAR_INIT(DYN_EX_SCALE, 0.5) diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index 1581c904b9..03824c4c83 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -1,55 +1,61 @@ -#define Z_NORTH 1 -#define Z_EAST 2 -#define Z_SOUTH 3 -#define Z_WEST 4 - +#define Z_NORTH 1 +#define Z_EAST 2 +#define Z_SOUTH 3 +#define Z_WEST 4 + GLOBAL_LIST_INIT(cardinals, list(NORTH, SOUTH, EAST, WEST)) -GLOBAL_LIST_INIT(alldirs, list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) -GLOBAL_LIST_INIT(diagonals, list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) - -//This list contains the z-level numbers which can be accessed via space travel and the percentile chances to get there. -//(Exceptions: extended, sandbox and nuke) -Errorage -//Was list("3" = 30, "4" = 70). -//Spacing should be a reliable method of getting rid of a body -- Urist. -//Go away Urist, I'm restoring this to the longer list. ~Errorage -GLOBAL_LIST_INIT(accessable_z_levels, list(1,3,4,5,6,7)) //Keep this to six maps, repeating z-levels is ok if needed - -GLOBAL_LIST(global_map) - //list/global_map = list(list(1,5),list(4,3))//an array of map Z levels. - //Resulting sector map looks like - //|_1_|_4_| - //|_5_|_3_| - // - //1 - SS13 - //4 - Derelict - //3 - AI satellite - //5 - empty space - -GLOBAL_LIST_EMPTY(landmarks_list) //list of all landmarks created -GLOBAL_LIST_EMPTY(start_landmarks_list) //list of all spawn points created -GLOBAL_LIST_EMPTY(department_security_spawns) //list of all department security spawns -GLOBAL_LIST_EMPTY(generic_event_spawns) //list of all spawns for events - -GLOBAL_LIST_EMPTY(wizardstart) -GLOBAL_LIST_EMPTY(newplayer_start) -GLOBAL_LIST_EMPTY(prisonwarp) //prisoners go to these -GLOBAL_LIST_EMPTY(holdingfacility) //captured people go here -GLOBAL_LIST_EMPTY(xeno_spawn)//Aliens spawn at these. -GLOBAL_LIST_EMPTY(tdome1) -GLOBAL_LIST_EMPTY(tdome2) -GLOBAL_LIST_EMPTY(tdomeobserve) -GLOBAL_LIST_EMPTY(tdomeadmin) -GLOBAL_LIST_EMPTY(prisonwarped) //list of players already warped -GLOBAL_LIST_EMPTY(blobstart) -GLOBAL_LIST_EMPTY(secequipment) -GLOBAL_LIST_EMPTY(deathsquadspawn) -GLOBAL_LIST_EMPTY(emergencyresponseteamspawn) -GLOBAL_LIST_EMPTY(ruin_landmarks) - - //away missions -GLOBAL_LIST_EMPTY(awaydestinations) //a list of landmarks that the warpgate can take you to - - //used by jump-to-area etc. Updated by area/updateName() -GLOBAL_LIST_EMPTY(sortedAreas) - -GLOBAL_LIST_EMPTY(all_abstract_markers) \ No newline at end of file +GLOBAL_LIST_INIT(alldirs, list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) +GLOBAL_LIST_INIT(diagonals, list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) + +//This list contains the z-level numbers which can be accessed via space travel and the percentile chances to get there. +//(Exceptions: extended, sandbox and nuke) -Errorage +//Was list("3" = 30, "4" = 70). +//Spacing should be a reliable method of getting rid of a body -- Urist. +//Go away Urist, I'm restoring this to the longer list. ~Errorage +GLOBAL_LIST_INIT(accessable_z_levels, list(1,3,4,5,6,7)) //Keep this to six maps, repeating z-levels is ok if needed + +GLOBAL_LIST_INIT(station_z_levels, list(ZLEVEL_STATION_PRIMARY)) + +GLOBAL_LIST(global_map) + //list/global_map = list(list(1,5),list(4,3))//an array of map Z levels. + //Resulting sector map looks like + //|_1_|_4_| + //|_5_|_3_| + // + //1 - SS13 + //4 - Derelict + //3 - AI satellite + //5 - empty space + +GLOBAL_LIST_EMPTY(landmarks_list) //list of all landmarks created +GLOBAL_LIST_EMPTY(start_landmarks_list) //list of all spawn points created +GLOBAL_LIST_EMPTY(department_security_spawns) //list of all department security spawns +GLOBAL_LIST_EMPTY(generic_event_spawns) //list of all spawns for events + +GLOBAL_LIST_EMPTY(wizardstart) +GLOBAL_LIST_EMPTY(nukeop_start) +GLOBAL_LIST_EMPTY(nukeop_leader_start) +GLOBAL_LIST_EMPTY(newplayer_start) +GLOBAL_LIST_EMPTY(prisonwarp) //prisoners go to these +GLOBAL_LIST_EMPTY(holdingfacility) //captured people go here +GLOBAL_LIST_EMPTY(xeno_spawn)//Aliens spawn at these. +GLOBAL_LIST_EMPTY(tdome1) +GLOBAL_LIST_EMPTY(tdome2) +GLOBAL_LIST_EMPTY(tdomeobserve) +GLOBAL_LIST_EMPTY(tdomeadmin) +GLOBAL_LIST_EMPTY(prisonwarped) //list of players already warped +GLOBAL_LIST_EMPTY(blobstart) +GLOBAL_LIST_EMPTY(secequipment) +GLOBAL_LIST_EMPTY(deathsquadspawn) +GLOBAL_LIST_EMPTY(emergencyresponseteamspawn) +GLOBAL_LIST_EMPTY(servant_spawns) //Servants of Ratvar spawn here +GLOBAL_LIST_EMPTY(city_of_cogs_spawns) //Anyone entering the City of Cogs spawns here +GLOBAL_LIST_EMPTY(ruin_landmarks) + + //away missions +GLOBAL_LIST_EMPTY(awaydestinations) //a list of landmarks that the warpgate can take you to + + //used by jump-to-area etc. Updated by area/updateName() +GLOBAL_LIST_EMPTY(sortedAreas) + +GLOBAL_LIST_EMPTY(all_abstract_markers) diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 4c8a2654fa..62a5b8c80e 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -20,6 +20,7 @@ GLOBAL_LIST_EMPTY(ai_list) GLOBAL_LIST_EMPTY(pai_list) GLOBAL_LIST_EMPTY(available_ai_shells) GLOBAL_LIST_EMPTY(simple_animals) +GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs GLOBAL_LIST_EMPTY(language_datum_instances) GLOBAL_LIST_EMPTY(all_languages) diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index 522ff84ff0..d855c7f141 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -15,6 +15,7 @@ GLOBAL_LIST_INIT(carp_names, world.file2list("strings/names/carp.txt")) GLOBAL_LIST_INIT(golem_names, world.file2list("strings/names/golem.txt")) GLOBAL_LIST_INIT(plasmaman_names, world.file2list("strings/names/plasmaman.txt")) GLOBAL_LIST_INIT(posibrain_names, world.file2list("strings/names/posibrain.txt")) +GLOBAL_LIST_INIT(nightmare_names, world.file2list("strings/names/nightmare.txt")) GLOBAL_LIST_INIT(verbs, world.file2list("strings/names/verbs.txt")) diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index 5be6a8dbaa..3f96b33b34 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -4,6 +4,8 @@ GLOBAL_VAR(world_game_log) GLOBAL_PROTECT(world_game_log) GLOBAL_VAR(world_runtime_log) GLOBAL_PROTECT(world_runtime_log) +GLOBAL_VAR(world_qdel_log) +GLOBAL_PROTECT(world_qdel_log) GLOBAL_VAR(world_attack_log) GLOBAL_PROTECT(world_attack_log) GLOBAL_VAR(world_href_log) @@ -14,6 +16,8 @@ GLOBAL_VAR(config_error_log) GLOBAL_PROTECT(config_error_log) GLOBAL_VAR(sql_error_log) GLOBAL_PROTECT(sql_error_log) +GLOBAL_VAR(world_pda_log) +GLOBAL_PROTECT(world_pda_log) GLOBAL_LIST_EMPTY(bombers) GLOBAL_PROTECT(bombers) diff --git a/code/_globalvars/sensitive.dm b/code/_globalvars/sensitive.dm deleted file mode 100644 index e1a02621ac..0000000000 --- a/code/_globalvars/sensitive.dm +++ /dev/null @@ -1,16 +0,0 @@ -//Server API key -GLOBAL_REAL_VAR(comms_key) = "default_pwd" -GLOBAL_REAL_VAR(comms_allowed) = FALSE //By default, the server does not allow messages to be sent to it, unless the key is strong enough (this is to prevent misconfigured servers from becoming vulnerable) - -GLOBAL_REAL_VAR(medal_hub) -GLOBAL_REAL_VAR(medal_pass) = " " -GLOBAL_REAL_VAR(medals_enabled) = TRUE //will be auto set to false if the game fails contacting the medal hub to prevent unneeded calls. - -// MySQL configuration - -GLOBAL_REAL_VAR(sqladdress) = "localhost" -GLOBAL_REAL_VAR(sqlport) = "3306" -GLOBAL_REAL_VAR(sqlfdbkdb) = "test" -GLOBAL_REAL_VAR(sqlfdbklogin) = "root" -GLOBAL_REAL_VAR(sqlfdbkpass) = "" -GLOBAL_REAL_VAR(sqlfdbktableprefix) = "" diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 6b4d9aad1c..b65890f4c6 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -14,7 +14,8 @@ if(call(client.click_intercept, "InterceptClickOn")(src, params, A)) return - if(control_disabled || stat) return + if(control_disabled || incapacitated()) + return if(ismob(A)) ai_actual_track(A) @@ -31,7 +32,7 @@ if(call(client.click_intercept, "InterceptClickOn")(src, params, A)) return - if(control_disabled || stat) + if(control_disabled || incapacitated()) return var/turf/pixel_turf = get_turf_pixel(A) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 0eeca2eaf7..99d12568bc 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -32,6 +32,7 @@ */ /atom/Click(location,control,params) if(initialized) + SendSignal(COMSIG_CLICK, location, control, params) usr.ClickOn(src, params) /atom/DblClick(location,control,params) @@ -95,7 +96,7 @@ if(!modifiers["catcher"] && A.IsObscured()) return - if(istype(loc, /obj/mecha)) + if(ismecha(loc)) var/obj/mecha/M = loc return M.click_action(A,src,params) @@ -305,6 +306,7 @@ A.ShiftClick(src) return /atom/proc/ShiftClick(mob/user) + SendSignal(COMSIG_CLICK_SHIFT, user) if(user.client && user.client.eye == user || user.client.eye == user.loc) user.examinate(src) return @@ -319,12 +321,13 @@ return /atom/proc/CtrlClick(mob/user) + SendSignal(COMSIG_CLICK_CTRL, user) var/mob/living/ML = user if(istype(ML)) ML.pulled(src) /mob/living/carbon/human/CtrlClick(mob/user) - if(ishuman(user) && Adjacent(user)) + if(ishuman(user) && Adjacent(user) && !user.incapacitated()) if(world.time < user.next_move) return FALSE var/mob/living/carbon/human/H = user @@ -348,6 +351,7 @@ ..() /atom/proc/AltClick(mob/user) + SendSignal(COMSIG_CLICK_ALT, user) var/turf/T = get_turf(src) if(T && user.TurfAdjacent(T)) if(user.listed_turf == T) @@ -355,7 +359,6 @@ else user.listed_turf = T user.client.statpanel = T.name - user.Stat() //responsive ui pls /mob/proc/TurfAdjacent(turf/T) return T.Adjacent(src) @@ -373,6 +376,7 @@ return /atom/proc/CtrlShiftClick(mob/user) + SendSignal(COMSIG_CLICK_CTRL_SHIFT) return /* diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index 85ecd036de..d4d2c2d8a5 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -78,7 +78,7 @@ /obj/screen/movable/action_button/hide_toggle/proc/InitialiseIcon(datum/hud/owner_hud) - var settings = owner_hud.get_action_buttons_icons() + var/settings = owner_hud.get_action_buttons_icons() icon = settings["bg_icon"] icon_state = settings["bg_state"] hide_icon = settings["toggle_icon"] diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index a5bc86dabe..87a33afc13 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -2,8 +2,8 @@ icon = 'icons/mob/screen_ai.dmi' /obj/screen/ai/Click() - if(isobserver(usr)) - return 1 + if(isobserver(usr) || usr.incapacitated()) + return TRUE /obj/screen/ai/aicore name = "AI core" @@ -20,6 +20,8 @@ icon_state = "camera" /obj/screen/ai/camera_list/Click() + if(..()) + return var/mob/living/silicon/ai/AI = usr var/camera = input(AI, "Choose which camera you want to view", "Cameras") as null|anything in AI.get_camera_list() AI.ai_camera_list(camera) @@ -130,6 +132,8 @@ icon_state = "take_picture" /obj/screen/ai/image_take/Click() + if(..()) + return if(isAI(usr)) var/mob/living/silicon/ai/AI = usr AI.aicamera.toggle_camera_mode() @@ -142,6 +146,8 @@ icon_state = "view_images" /obj/screen/ai/image_view/Click() + if(..()) + return if(isAI(usr)) var/mob/living/silicon/ai/AI = usr AI.aicamera.viewpictures() diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 69deb2cb58..3cc6734482 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -242,9 +242,12 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." icon_state = "fire" /obj/screen/alert/fire/Click() - if(isliving(usr)) - var/mob/living/L = usr - return L.resist() + var/mob/living/L = usr + if(!L.can_resist()) + return + L.changeNext_move(CLICK_CD_RESIST) + if(L.canmove) + return L.resist_fire() //I just want to start a flame in your hearrrrrrtttttt. //ALIENS @@ -375,90 +378,6 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." /obj/screen/alert/clockwork alerttooltipstyle = "clockcult" -/obj/screen/alert/clockwork/scripture_reqs - name = "Next Tier Requirements" - desc = "You shouldn't be seeing this description unless you're very fast. If you're very fast, good job!" - icon_state = "no-servants-caches" - -/obj/screen/alert/clockwork/scripture_reqs/Initialize() - . = ..() - START_PROCESSING(SSprocessing, src) - process() - -/obj/screen/alert/clockwork/scripture_reqs/Destroy() - STOP_PROCESSING(SSprocessing, src) - return ..() - -/obj/screen/alert/clockwork/scripture_reqs/process() - if(GLOB.clockwork_gateway_activated) - mob_viewer.clear_alert("scripturereq") - return - var/current_state - for(var/i in SSticker.scripture_states) - if(!SSticker.scripture_states[i]) - current_state = i - break - icon_state = "no" - if(!current_state) - name = "Current Objective" - for(var/obj/structure/destructible/clockwork/massive/celestial_gateway/G in GLOB.all_clockwork_objects) - var/area/gate_area = get_area(G) - desc = "Protect the Ark at [gate_area.map_name]!" - return - desc = "All tiers of Scripture are unlocked.
    \ - Acquire components and summon the Ark.
    " - else - name = "Next Tier Requirements" - var/validservants = 0 - var/unconverted_ais_exist = get_unconverted_ais() - for(var/mob/living/L in GLOB.living_mob_list) - if(is_servant_of_ratvar(L) && (ishuman(L) || issilicon(L))) - validservants++ - var/req_servants = 0 - var/req_caches = 0 - var/req_cv = 0 - var/req_ai = FALSE - var/list/textlist = list("Requirements for [current_state] Scripture:") - switch(current_state) //get our requirements based on the tier - if(SCRIPTURE_SCRIPT) - req_servants = SCRIPT_SERVANT_REQ - req_caches = SCRIPT_CACHE_REQ - if(SCRIPTURE_APPLICATION) - req_servants = APPLICATION_SERVANT_REQ - req_caches = APPLICATION_CACHE_REQ - req_cv = APPLICATION_CV_REQ - if(SCRIPTURE_JUDGEMENT) - req_servants = JUDGEMENT_SERVANT_REQ - req_caches = JUDGEMENT_CACHE_REQ - req_cv = JUDGEMENT_CV_REQ - req_ai = TRUE - textlist += "
    [validservants]/[req_servants] Servants" - if(validservants < req_servants) - icon_state += "-servants" //in this manner, generate an icon key based on what we're missing - else - textlist += ": \[CHECK\]" - textlist += "
    [GLOB.clockwork_caches]/[req_caches] Tinkerer's Caches" - if(GLOB.clockwork_caches < req_caches) - icon_state += "-caches" - else - textlist += ": \[CHECK\]" - if(req_cv) //cv only shows up if the tier requires it - textlist += "
    [GLOB.clockwork_construction_value]/[req_cv] Construction Value" - if(GLOB.clockwork_construction_value < req_cv) - icon_state += "-cv" - else - textlist += ": \[CHECK\]" - if(req_ai) //same for ai - if(unconverted_ais_exist) - if(unconverted_ais_exist > 1) - textlist += "
    [unconverted_ais_exist] unconverted AIs exist!
    " - else - textlist += "
    An unconverted AI exists!" - icon_state += "-ai" - else - textlist += "
    No unconverted AIs exist: \[CHECK\]" - desc = textlist.Join() - /obj/screen/alert/clockwork/infodump name = "Global Records" desc = "You shouldn't be seeing this description, because it should be dynamically generated." @@ -470,7 +389,6 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." else var/servants = 0 var/validservants = 0 - var/unconverted_ais_exist = get_unconverted_ais() var/list/textlist for(var/mob/living/L in GLOB.living_mob_list) if(is_servant_of_ratvar(L)) @@ -484,29 +402,25 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." textlist = list("[servants] Servants, [validservants ? "[validservants] of which counts":"none of which count"] towards scripture.
    ") else textlist = list("[servants] Servant, who [validservants ? "counts":"does not count"] towards scripture.
    ") - textlist += "[GLOB.clockwork_caches ? "[GLOB.clockwork_caches] Tinkerer's Caches.":"No Tinkerer's Caches, construct one!
    "]
    \ - [GLOB.clockwork_construction_value] Construction Value.
    " - textlist += "[Floor(servants * 0.2)] Tinkerer's Daemons can be active at once. [LAZYLEN(GLOB.active_daemons)] are active.
    " - for(var/obj/structure/destructible/clockwork/massive/celestial_gateway/G in GLOB.all_clockwork_objects) - var/area/gate_area = get_area(G) - textlist += "Ark Location: [uppertext(gate_area.map_name)]
    " - if(G.still_needs_components()) - textlist += "Ark Components required:
    " - for(var/i in G.required_components) - if(G.required_components[i]) - textlist += "[get_component_icon(i)] [G.required_components[i]] " - textlist += "
    " - else - textlist += "Seconds until Ratvar's arrival: [G.get_arrival_text(TRUE)]
    " - break - if(unconverted_ais_exist) - if(unconverted_ais_exist > 1) - textlist += "[unconverted_ais_exist] unconverted AIs exist!
    " - else - textlist += "An unconverted AI exists!
    " - for(var/i in SSticker.scripture_states) - if(i != SCRIPTURE_DRIVER) //ignore the always-unlocked stuff - textlist += "[i] Scripture: [SSticker.scripture_states[i] ? "UNLOCKED":"LOCKED"]
    " + for(var/i in SSticker.scripture_states) + if(i != SCRIPTURE_DRIVER) //ignore the always-unlocked stuff + textlist += "[i] Scripture: [SSticker.scripture_states[i] ? "UNLOCKED":"LOCKED"]
    " + var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar + if(G) + var/time_info + var/time_name + if(G.seconds_until_activation) + time_info = G.seconds_until_activation + time_name = "until the Ark activates" + else if(G.grace_period) + time_info = G.grace_period + time_name = "of grace period remaining" + else if(G.progress_in_seconds) + time_info = GATEWAY_RATVAR_ARRIVAL - G.progress_in_seconds + time_name = "until the Ark finishes summoning" + if(time_info) + textlist += "[time_info / 60] minutes [time_name].
    " + textlist += "[DisplayPower(get_clockwork_power())] power available for use." desc = textlist.Join() ..() @@ -624,7 +538,7 @@ so as to remain in compliance with the most up-to-date laws." if(NOTIFY_JUMP) var/turf/T = get_turf(target) if(T && isturf(T)) - G.loc = T + G.forceMove(T) if(NOTIFY_ORBIT) G.ManualFollow(target) @@ -633,6 +547,7 @@ so as to remain in compliance with the most up-to-date laws." /obj/screen/alert/restrained/buckled name = "Buckled" desc = "You've been buckled to something. Click the alert to unbuckle unless you're handcuffed." + icon_state = "buckled" /obj/screen/alert/restrained/handcuffed name = "Handcuffed" @@ -643,9 +558,20 @@ so as to remain in compliance with the most up-to-date laws." desc = "You're legcuffed, which slows you down considerably. Click the alert to free yourself." /obj/screen/alert/restrained/Click() - if(isliving(usr)) - var/mob/living/L = usr - return L.resist() + var/mob/living/L = usr + if(!L.can_resist()) + return + L.changeNext_move(CLICK_CD_RESIST) + if((L.canmove) && (L.last_special <= world.time)) + return L.resist_restraints() + +/obj/screen/alert/restrained/buckled/Click() + var/mob/living/L = usr + if(!L.can_resist()) + return + L.changeNext_move(CLICK_CD_RESIST) + if(L.last_special <= world.time) + return L.resist_buckle() // PRIVATE = only edit, use, or override these if you're editing the system as a whole @@ -698,4 +624,3 @@ so as to remain in compliance with the most up-to-date laws." severity = 0 master = null screen_loc = "" - diff --git a/code/_onclick/hud/clockwork_marauder.dm b/code/_onclick/hud/clockwork_marauder.dm deleted file mode 100644 index 7429d1deeb..0000000000 --- a/code/_onclick/hud/clockwork_marauder.dm +++ /dev/null @@ -1,45 +0,0 @@ -/datum/hud/marauder - var/obj/screen/hosthealth - var/obj/screen/blockchance - var/obj/screen/counterchance - -/datum/hud/marauder/New(mob/living/simple_animal/hostile/guardian/owner) - ..() - var/obj/screen/using - - healths = new /obj/screen/healths/clock() - infodisplay += healths - - hosthealth = new /obj/screen/healths/clock() - hosthealth.screen_loc = ui_internal - infodisplay += hosthealth - - using = new /obj/screen/marauder/emerge() - using.screen_loc = ui_zonesel - static_inventory += using - -/datum/hud/marauder/Destroy() - blockchance = null - counterchance = null - hosthealth = null - return ..() - -/mob/living/simple_animal/hostile/clockwork/marauder/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/marauder(src, ui_style2icon(client.prefs.UI_style)) - -/obj/screen/marauder - icon = 'icons/mob/clockwork_mobs.dmi' - -/obj/screen/marauder/emerge - icon_state = "marauder_emerge" - name = "Emerge/Return" - desc = "Emerge or Return." - -/obj/screen/marauder/emerge/Click() - if(istype(usr, /mob/living/simple_animal/hostile/clockwork/marauder)) - var/mob/living/simple_animal/hostile/clockwork/marauder/M = usr - if(M.is_in_host()) - M.try_emerge() - else - M.return_to_host() diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 6c18ad0e07..12253cc550 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -67,7 +67,7 @@ screen_loc = "CENTER-7,CENTER-7" layer = FULLSCREEN_LAYER plane = FULLSCREEN_PLANE - mouse_opacity = MOUSE_OPACITY_TRANSPARENT + mouse_opacity = MOUSE_OPACITY_TRANSPARENT var/severity = 0 var/show_when_dead = FALSE @@ -95,16 +95,20 @@ layer = CRIT_LAYER plane = FULLSCREEN_PLANE +/obj/screen/fullscreen/crit/vision + icon_state = "oxydamageoverlay" + layer = BLIND_LAYER + /obj/screen/fullscreen/blind icon_state = "blackimageoverlay" layer = BLIND_LAYER plane = FULLSCREEN_PLANE -/obj/screen/fullscreen/curse - icon_state = "curse" - layer = CURSE_LAYER - plane = FULLSCREEN_PLANE - +/obj/screen/fullscreen/curse + icon_state = "curse" + layer = CURSE_LAYER + plane = FULLSCREEN_PLANE + /obj/screen/fullscreen/impaired icon_state = "impairedoverlay" @@ -168,4 +172,4 @@ plane = LIGHTING_PLANE layer = LIGHTING_LAYER blend_mode = BLEND_ADD - show_when_dead = TRUE + show_when_dead = TRUE diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 07c17b891f..4d1ca2c778 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -28,7 +28,7 @@ icon_state = "act_equip" /obj/screen/human/equip/Click() - if(istype(usr.loc, /obj/mecha)) // stops inventory actions in a mech + if(ismecha(usr.loc)) // stops inventory actions in a mech return 1 var/mob/living/carbon/human/H = usr H.quick_equip() @@ -313,11 +313,15 @@ inv.hud = src inv_slots[inv.slot_id] = inv inv.update_icon() + + update_locked_slots() /datum/hud/human/update_locked_slots() if(!mymob) return var/mob/living/carbon/human/H = mymob + if(!istype(H) || !H.dna.species) + return var/datum/species/S = H.dna.species for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory)) if(inv.slot_id) diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm index f364bac76f..a9971895a7 100755 --- a/code/_onclick/hud/parallax.dm +++ b/code/_onclick/hud/parallax.dm @@ -247,7 +247,7 @@ /obj/screen/parallax_layer/Initialize(mapload, view) - ..() + . = ..() if (!view) view = world.view update_o(view) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 2d94f41ba9..0906a099a0 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -1,586 +1,586 @@ -/* - Screen objects - Todo: improve/re-implement - - Screen objects are only used for the hud and should not appear anywhere "in-game". - They are used with the client/screen list and the screen_loc var. - For more information, see the byond documentation on the screen_loc and screen vars. -*/ -/obj/screen - name = "" - icon = 'icons/mob/screen_gen.dmi' - layer = ABOVE_HUD_LAYER - plane = ABOVE_HUD_PLANE - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - appearance_flags = APPEARANCE_UI - var/obj/master = null //A reference to the object in the slot. Grabs or items, generally. - var/datum/hud/hud = null // A reference to the owner HUD, if any. - -/obj/screen/take_damage() - return - -/obj/screen/Destroy() - master = null - hud = null - return ..() - -/obj/screen/examine(mob/user) - return - -/obj/screen/orbit() - return - -/obj/screen/text - icon = null - icon_state = null +/* + Screen objects + Todo: improve/re-implement + + Screen objects are only used for the hud and should not appear anywhere "in-game". + They are used with the client/screen list and the screen_loc var. + For more information, see the byond documentation on the screen_loc and screen vars. +*/ +/obj/screen + name = "" + icon = 'icons/mob/screen_gen.dmi' + layer = ABOVE_HUD_LAYER + plane = ABOVE_HUD_PLANE + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + appearance_flags = APPEARANCE_UI + var/obj/master = null //A reference to the object in the slot. Grabs or items, generally. + var/datum/hud/hud = null // A reference to the owner HUD, if any. + +/obj/screen/take_damage() + return + +/obj/screen/Destroy() + master = null + hud = null + return ..() + +/obj/screen/examine(mob/user) + return + +/obj/screen/orbit() + return + +/obj/screen/text + icon = null + icon_state = null mouse_opacity = MOUSE_OPACITY_TRANSPARENT - screen_loc = "CENTER-7,CENTER-7" - maptext_height = 480 - maptext_width = 480 - -/obj/screen/swap_hand - layer = HUD_LAYER - plane = HUD_PLANE - name = "swap hand" - -/obj/screen/swap_hand/Click() - // At this point in client Click() code we have passed the 1/10 sec check and little else - // We don't even know if it's a middle click - if(world.time <= usr.next_move) - return 1 - - if(usr.incapacitated()) - return 1 - - if(ismob(usr)) - var/mob/M = usr - M.swap_hand() - return 1 - -/obj/screen/craft - name = "crafting menu" - icon = 'icons/mob/screen_midnight.dmi' - icon_state = "craft" - screen_loc = ui_crafting - -/obj/screen/craft/Click() - var/mob/living/M = usr - if(isobserver(usr)) - return - M.OpenCraftingMenu() - -/obj/screen/area_creator - name = "create new area" - icon = 'icons/mob/screen_midnight.dmi' - icon_state = "area_edit" - screen_loc = ui_building - -/obj/screen/area_creator/Click() - if(usr.incapacitated()) - return 1 - var/area/A = get_area(usr) - if(!A.outdoors) - to_chat(usr, "There is already a defined structure here.") - return 1 - create_area(usr) - -/obj/screen/language_menu - name = "language menu" - icon = 'icons/mob/screen_midnight.dmi' - icon_state = "talk_wheel" - screen_loc = ui_language_menu - -/obj/screen/language_menu/Click() - var/mob/M = usr - var/datum/language_holder/H = M.get_language_holder() - H.open_language_menu(usr) - -/obj/screen/inventory - var/slot_id // The indentifier for the slot. It has nothing to do with ID cards. - var/icon_empty // Icon when empty. For now used only by humans. - var/icon_full // Icon when contains an item. For now used only by humans. - layer = HUD_LAYER - plane = HUD_PLANE - -/obj/screen/inventory/Click(location, control, params) - // At this point in client Click() code we have passed the 1/10 sec check and little else - // We don't even know if it's a middle click - if(world.time <= usr.next_move) - return 1 - - if(usr.incapacitated()) - return 1 - if(istype(usr.loc, /obj/mecha)) // stops inventory actions in a mech - return 1 - - if(hud && hud.mymob && slot_id) - var/obj/item/inv_item = hud.mymob.get_item_by_slot(slot_id) - if(inv_item) - return inv_item.Click(location, control, params) - - if(usr.attack_ui(slot_id)) - usr.update_inv_hands() - return 1 - -/obj/screen/inventory/update_icon() - if(!icon_empty) - icon_empty = icon_state - - if(hud && hud.mymob && slot_id && icon_full) - if(hud.mymob.get_item_by_slot(slot_id)) - icon_state = icon_full - else - icon_state = icon_empty - -/obj/screen/inventory/hand - var/mutable_appearance/handcuff_overlay - var/static/mutable_appearance/blocked_overlay = mutable_appearance('icons/mob/screen_gen.dmi', "blocked") - var/held_index = 0 - -/obj/screen/inventory/hand/update_icon() - ..() - - if(!handcuff_overlay) - var/state = (!(held_index % 2)) ? "markus" : "gabrielle" - handcuff_overlay = mutable_appearance('icons/mob/screen_gen.dmi', state) - - cut_overlays() - - if(hud && hud.mymob) - if(iscarbon(hud.mymob)) - var/mob/living/carbon/C = hud.mymob - if(C.handcuffed) - add_overlay(handcuff_overlay) - - if(held_index) - if(!C.has_hand_for_held_index(held_index)) - add_overlay(blocked_overlay) - - if(held_index == hud.mymob.active_hand_index) - add_overlay("hand_active") - - -/obj/screen/inventory/hand/Click(location, control, params) - // At this point in client Click() code we have passed the 1/10 sec check and little else - // We don't even know if it's a middle click - if(world.time <= usr.next_move) - return 1 - if(usr.incapacitated() || isobserver(usr)) - return 1 - if (istype(usr.loc, /obj/mecha)) // stops inventory actions in a mech - return 1 - - if(hud.mymob.active_hand_index == held_index) - var/obj/item/I = hud.mymob.get_active_held_item() - if(I) - I.Click(location, control, params) - else - hud.mymob.swap_hand(held_index) - return 1 - -/obj/screen/close - name = "close" - -/obj/screen/close/Click() - if(istype(master, /obj/item/storage)) - var/obj/item/storage/S = master - S.close(usr) - return 1 - - -/obj/screen/drop - name = "drop" - icon = 'icons/mob/screen_midnight.dmi' - icon_state = "act_drop" - layer = HUD_LAYER - plane = HUD_PLANE - -/obj/screen/drop/Click() - usr.drop_item_v() - -/obj/screen/act_intent - name = "intent" - icon_state = "help" - screen_loc = ui_acti - -/obj/screen/act_intent/Click(location, control, params) - usr.a_intent_change(INTENT_HOTKEY_RIGHT) - -/obj/screen/act_intent/segmented/Click(location, control, params) - if(usr.client.prefs.toggles & INTENT_STYLE) - var/_x = text2num(params2list(params)["icon-x"]) - var/_y = text2num(params2list(params)["icon-y"]) - - if(_x<=16 && _y<=16) - usr.a_intent_change(INTENT_HARM) - - else if(_x<=16 && _y>=17) - usr.a_intent_change(INTENT_HELP) - - else if(_x>=17 && _y<=16) - usr.a_intent_change(INTENT_GRAB) - - else if(_x>=17 && _y>=17) - usr.a_intent_change(INTENT_DISARM) - else - return ..() - -/obj/screen/act_intent/alien - icon = 'icons/mob/screen_alien.dmi' - screen_loc = ui_movi - -/obj/screen/act_intent/robot - icon = 'icons/mob/screen_cyborg.dmi' - screen_loc = ui_borg_intents - -/obj/screen/internals - name = "toggle internals" - icon_state = "internal0" - screen_loc = ui_internal - -/obj/screen/internals/Click() - if(!iscarbon(usr)) - return - var/mob/living/carbon/C = usr - if(C.incapacitated()) - return - - if(C.internal) - C.internal = null - to_chat(C, "You are no longer running on internals.") - icon_state = "internal0" - else - if(!C.getorganslot("breathing_tube")) - if(!istype(C.wear_mask, /obj/item/clothing/mask)) - to_chat(C, "You are not wearing an internals mask!") - return 1 - else - var/obj/item/clothing/mask/M = C.wear_mask - if(M.mask_adjusted) // if mask on face but pushed down - M.adjustmask(C) // adjust it back + screen_loc = "CENTER-7,CENTER-7" + maptext_height = 480 + maptext_width = 480 + +/obj/screen/swap_hand + layer = HUD_LAYER + plane = HUD_PLANE + name = "swap hand" + +/obj/screen/swap_hand/Click() + // At this point in client Click() code we have passed the 1/10 sec check and little else + // We don't even know if it's a middle click + if(world.time <= usr.next_move) + return 1 + + if(usr.incapacitated()) + return 1 + + if(ismob(usr)) + var/mob/M = usr + M.swap_hand() + return 1 + +/obj/screen/craft + name = "crafting menu" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "craft" + screen_loc = ui_crafting + +/obj/screen/craft/Click() + var/mob/living/M = usr + if(isobserver(usr)) + return + M.OpenCraftingMenu() + +/obj/screen/area_creator + name = "create new area" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "area_edit" + screen_loc = ui_building + +/obj/screen/area_creator/Click() + if(usr.incapacitated()) + return 1 + var/area/A = get_area(usr) + if(!A.outdoors) + to_chat(usr, "There is already a defined structure here.") + return 1 + create_area(usr) + +/obj/screen/language_menu + name = "language menu" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "talk_wheel" + screen_loc = ui_language_menu + +/obj/screen/language_menu/Click() + var/mob/M = usr + var/datum/language_holder/H = M.get_language_holder() + H.open_language_menu(usr) + +/obj/screen/inventory + var/slot_id // The indentifier for the slot. It has nothing to do with ID cards. + var/icon_empty // Icon when empty. For now used only by humans. + var/icon_full // Icon when contains an item. For now used only by humans. + layer = HUD_LAYER + plane = HUD_PLANE + +/obj/screen/inventory/Click(location, control, params) + // At this point in client Click() code we have passed the 1/10 sec check and little else + // We don't even know if it's a middle click + if(world.time <= usr.next_move) + return 1 + + if(usr.incapacitated()) + return 1 + if(ismecha(usr.loc)) // stops inventory actions in a mech + return 1 + + if(hud && hud.mymob && slot_id) + var/obj/item/inv_item = hud.mymob.get_item_by_slot(slot_id) + if(inv_item) + return inv_item.Click(location, control, params) + + if(usr.attack_ui(slot_id)) + usr.update_inv_hands() + return 1 + +/obj/screen/inventory/update_icon() + if(!icon_empty) + icon_empty = icon_state + + if(hud && hud.mymob && slot_id && icon_full) + if(hud.mymob.get_item_by_slot(slot_id)) + icon_state = icon_full + else + icon_state = icon_empty + +/obj/screen/inventory/hand + var/mutable_appearance/handcuff_overlay + var/static/mutable_appearance/blocked_overlay = mutable_appearance('icons/mob/screen_gen.dmi', "blocked") + var/held_index = 0 + +/obj/screen/inventory/hand/update_icon() + ..() + + if(!handcuff_overlay) + var/state = (!(held_index % 2)) ? "markus" : "gabrielle" + handcuff_overlay = mutable_appearance('icons/mob/screen_gen.dmi', state) + + cut_overlays() + + if(hud && hud.mymob) + if(iscarbon(hud.mymob)) + var/mob/living/carbon/C = hud.mymob + if(C.handcuffed) + add_overlay(handcuff_overlay) + + if(held_index) + if(!C.has_hand_for_held_index(held_index)) + add_overlay(blocked_overlay) + + if(held_index == hud.mymob.active_hand_index) + add_overlay("hand_active") + + +/obj/screen/inventory/hand/Click(location, control, params) + // At this point in client Click() code we have passed the 1/10 sec check and little else + // We don't even know if it's a middle click + if(world.time <= usr.next_move) + return 1 + if(usr.incapacitated() || isobserver(usr)) + return 1 + if (ismecha(usr.loc)) // stops inventory actions in a mech + return 1 + + if(hud.mymob.active_hand_index == held_index) + var/obj/item/I = hud.mymob.get_active_held_item() + if(I) + I.Click(location, control, params) + else + hud.mymob.swap_hand(held_index) + return 1 + +/obj/screen/close + name = "close" + +/obj/screen/close/Click() + if(istype(master, /obj/item/storage)) + var/obj/item/storage/S = master + S.close(usr) + return 1 + + +/obj/screen/drop + name = "drop" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "act_drop" + layer = HUD_LAYER + plane = HUD_PLANE + +/obj/screen/drop/Click() + usr.drop_item_v() + +/obj/screen/act_intent + name = "intent" + icon_state = "help" + screen_loc = ui_acti + +/obj/screen/act_intent/Click(location, control, params) + usr.a_intent_change(INTENT_HOTKEY_RIGHT) + +/obj/screen/act_intent/segmented/Click(location, control, params) + if(usr.client.prefs.toggles & INTENT_STYLE) + var/_x = text2num(params2list(params)["icon-x"]) + var/_y = text2num(params2list(params)["icon-y"]) + + if(_x<=16 && _y<=16) + usr.a_intent_change(INTENT_HARM) + + else if(_x<=16 && _y>=17) + usr.a_intent_change(INTENT_HELP) + + else if(_x>=17 && _y<=16) + usr.a_intent_change(INTENT_GRAB) + + else if(_x>=17 && _y>=17) + usr.a_intent_change(INTENT_DISARM) + else + return ..() + +/obj/screen/act_intent/alien + icon = 'icons/mob/screen_alien.dmi' + screen_loc = ui_movi + +/obj/screen/act_intent/robot + icon = 'icons/mob/screen_cyborg.dmi' + screen_loc = ui_borg_intents + +/obj/screen/internals + name = "toggle internals" + icon_state = "internal0" + screen_loc = ui_internal + +/obj/screen/internals/Click() + if(!iscarbon(usr)) + return + var/mob/living/carbon/C = usr + if(C.incapacitated()) + return + + if(C.internal) + C.internal = null + to_chat(C, "You are no longer running on internals.") + icon_state = "internal0" + else + if(!C.getorganslot("breathing_tube")) + if(!istype(C.wear_mask, /obj/item/clothing/mask)) + to_chat(C, "You are not wearing an internals mask!") + return 1 + else + var/obj/item/clothing/mask/M = C.wear_mask + if(M.mask_adjusted) // if mask on face but pushed down + M.adjustmask(C) // adjust it back if( !(M.flags_1 & MASKINTERNALS_1) ) - to_chat(C, "You are not wearing an internals mask!") - return - - var/obj/item/I = C.is_holding_item_of_type(/obj/item/tank) - if(I) - to_chat(C, "You are now running on internals from the [I] on your [C.get_held_index_name(C.get_held_index_of_item(I))].") - C.internal = I - else if(ishuman(C)) - var/mob/living/carbon/human/H = C - if(istype(H.s_store, /obj/item/tank)) - to_chat(H, "You are now running on internals from the [H.s_store] on your [H.wear_suit].") - H.internal = H.s_store - else if(istype(H.belt, /obj/item/tank)) - to_chat(H, "You are now running on internals from the [H.belt] on your belt.") - H.internal = H.belt - else if(istype(H.l_store, /obj/item/tank)) - to_chat(H, "You are now running on internals from the [H.l_store] in your left pocket.") - H.internal = H.l_store - else if(istype(H.r_store, /obj/item/tank)) - to_chat(H, "You are now running on internals from the [H.r_store] in your right pocket.") - H.internal = H.r_store - + to_chat(C, "You are not wearing an internals mask!") + return + + var/obj/item/I = C.is_holding_item_of_type(/obj/item/tank) + if(I) + to_chat(C, "You are now running on internals from the [I] on your [C.get_held_index_name(C.get_held_index_of_item(I))].") + C.internal = I + else if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(istype(H.s_store, /obj/item/tank)) + to_chat(H, "You are now running on internals from the [H.s_store] on your [H.wear_suit].") + H.internal = H.s_store + else if(istype(H.belt, /obj/item/tank)) + to_chat(H, "You are now running on internals from the [H.belt] on your belt.") + H.internal = H.belt + else if(istype(H.l_store, /obj/item/tank)) + to_chat(H, "You are now running on internals from the [H.l_store] in your left pocket.") + H.internal = H.l_store + else if(istype(H.r_store, /obj/item/tank)) + to_chat(H, "You are now running on internals from the [H.r_store] in your right pocket.") + H.internal = H.r_store + //Separate so CO2 jetpacks are a little less cumbersome. - if(!C.internal && istype(C.back, /obj/item/tank)) - to_chat(C, "You are now running on internals from the [C.back] on your back.") - C.internal = C.back - - if(C.internal) - icon_state = "internal1" - else - to_chat(C, "You don't have an oxygen tank!") - return - C.update_action_buttons_icon() - -/obj/screen/mov_intent - name = "run/walk toggle" - icon = 'icons/mob/screen_midnight.dmi' - icon_state = "running" - -/obj/screen/mov_intent/Click() - toggle(usr) - -/obj/screen/mov_intent/proc/toggle(mob/user) - if(isobserver(user)) - return - switch(user.m_intent) - if("run") - user.m_intent = MOVE_INTENT_WALK - icon_state = "walking" - if("walk") - user.m_intent = MOVE_INTENT_RUN - icon_state = "running" - user.update_icons() - -/obj/screen/pull - name = "stop pulling" - icon = 'icons/mob/screen_midnight.dmi' - icon_state = "pull" - -/obj/screen/pull/Click() - if(isobserver(usr)) - return - usr.stop_pulling() - -/obj/screen/pull/update_icon(mob/mymob) - if(!mymob) return - if(mymob.pulling) - icon_state = "pull" - else - icon_state = "pull0" - -/obj/screen/resist - name = "resist" - icon = 'icons/mob/screen_midnight.dmi' - icon_state = "act_resist" - layer = HUD_LAYER - plane = HUD_PLANE - -/obj/screen/resist/Click() - if(isliving(usr)) - var/mob/living/L = usr - L.resist() - -/obj/screen/storage - name = "storage" - -/obj/screen/storage/Click(location, control, params) - if(world.time <= usr.next_move) - return 1 - if(usr.stat || usr.IsUnconscious() || usr.IsKnockdown() || usr.IsStun()) - return 1 - if (istype(usr.loc, /obj/mecha)) // stops inventory actions in a mech - return 1 - if(master) - var/obj/item/I = usr.get_active_held_item() - if(I) - master.attackby(I, usr, params) - return 1 - -/obj/screen/throw_catch - name = "throw/catch" - icon = 'icons/mob/screen_midnight.dmi' - icon_state = "act_throw_off" - -/obj/screen/throw_catch/Click() - if(iscarbon(usr)) - var/mob/living/carbon/C = usr - C.toggle_throw_mode() - -/obj/screen/zone_sel - name = "damage zone" - icon_state = "zone_sel" - screen_loc = ui_zonesel - var/selecting = "chest" - -/obj/screen/zone_sel/Click(location, control,params) - if(isobserver(usr)) - return - - var/list/PL = params2list(params) - var/icon_x = text2num(PL["icon-x"]) - var/icon_y = text2num(PL["icon-y"]) - var/choice - - switch(icon_y) - if(1 to 9) //Legs - switch(icon_x) - if(10 to 15) - choice = "r_leg" - if(17 to 22) - choice = "l_leg" - else - return 1 - if(10 to 13) //Hands and groin - switch(icon_x) - if(8 to 11) - choice = "r_arm" - if(12 to 20) - choice = "groin" - if(21 to 24) - choice = "l_arm" - else - return 1 - if(14 to 22) //Chest and arms to shoulders - switch(icon_x) - if(8 to 11) - choice = "r_arm" - if(12 to 20) - choice = "chest" - if(21 to 24) - choice = "l_arm" - else - return 1 - if(23 to 30) //Head, but we need to check for eye or mouth - if(icon_x in 12 to 20) - choice = "head" - switch(icon_y) - if(23 to 24) - if(icon_x in 15 to 17) - choice = "mouth" - if(26) //Eyeline, eyes are on 15 and 17 - if(icon_x in 14 to 18) - choice = "eyes" - if(25 to 27) - if(icon_x in 15 to 17) - choice = "eyes" - - return set_selected_zone(choice, usr) - -/obj/screen/zone_sel/proc/set_selected_zone(choice, mob/user) - if(isobserver(user)) - return - - if(choice != selecting) - selecting = choice - update_icon(usr) - return 1 - -/obj/screen/zone_sel/update_icon(mob/user) - cut_overlays() - add_overlay(mutable_appearance('icons/mob/screen_gen.dmi', "[selecting]")) - user.zone_selected = selecting - -/obj/screen/zone_sel/alien - icon = 'icons/mob/screen_alien.dmi' - -/obj/screen/zone_sel/alien/update_icon(mob/user) - cut_overlays() - add_overlay(mutable_appearance('icons/mob/screen_alien.dmi', "[selecting]")) - user.zone_selected = selecting - -/obj/screen/zone_sel/robot - icon = 'icons/mob/screen_cyborg.dmi' - - -/obj/screen/flash - name = "flash" - icon_state = "blank" - blend_mode = BLEND_ADD - screen_loc = "WEST,SOUTH to EAST,NORTH" - layer = FLASH_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/damageoverlay - icon = 'icons/mob/screen_full.dmi' - icon_state = "oxydamageoverlay0" - name = "dmg" - blend_mode = BLEND_MULTIPLY - screen_loc = "CENTER-7,CENTER-7" + if(!C.internal && istype(C.back, /obj/item/tank)) + to_chat(C, "You are now running on internals from the [C.back] on your back.") + C.internal = C.back + + if(C.internal) + icon_state = "internal1" + else + to_chat(C, "You don't have an oxygen tank!") + return + C.update_action_buttons_icon() + +/obj/screen/mov_intent + name = "run/walk toggle" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "running" + +/obj/screen/mov_intent/Click() + toggle(usr) + +/obj/screen/mov_intent/proc/toggle(mob/user) + if(isobserver(user)) + return + switch(user.m_intent) + if("run") + user.m_intent = MOVE_INTENT_WALK + icon_state = "walking" + if("walk") + user.m_intent = MOVE_INTENT_RUN + icon_state = "running" + user.update_icons() + +/obj/screen/pull + name = "stop pulling" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "pull" + +/obj/screen/pull/Click() + if(isobserver(usr)) + return + usr.stop_pulling() + +/obj/screen/pull/update_icon(mob/mymob) + if(!mymob) return + if(mymob.pulling) + icon_state = "pull" + else + icon_state = "pull0" + +/obj/screen/resist + name = "resist" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "act_resist" + layer = HUD_LAYER + plane = HUD_PLANE + +/obj/screen/resist/Click() + if(isliving(usr)) + var/mob/living/L = usr + L.resist() + +/obj/screen/storage + name = "storage" + +/obj/screen/storage/Click(location, control, params) + if(world.time <= usr.next_move) + return 1 + if(usr.stat || usr.IsUnconscious() || usr.IsKnockdown() || usr.IsStun()) + return 1 + if (ismecha(usr.loc)) // stops inventory actions in a mech + return 1 + if(master) + var/obj/item/I = usr.get_active_held_item() + if(I) + master.attackby(I, usr, params) + return 1 + +/obj/screen/throw_catch + name = "throw/catch" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "act_throw_off" + +/obj/screen/throw_catch/Click() + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + C.toggle_throw_mode() + +/obj/screen/zone_sel + name = "damage zone" + icon_state = "zone_sel" + screen_loc = ui_zonesel + var/selecting = "chest" + +/obj/screen/zone_sel/Click(location, control,params) + if(isobserver(usr)) + return + + var/list/PL = params2list(params) + var/icon_x = text2num(PL["icon-x"]) + var/icon_y = text2num(PL["icon-y"]) + var/choice + + switch(icon_y) + if(1 to 9) //Legs + switch(icon_x) + if(10 to 15) + choice = "r_leg" + if(17 to 22) + choice = "l_leg" + else + return 1 + if(10 to 13) //Hands and groin + switch(icon_x) + if(8 to 11) + choice = "r_arm" + if(12 to 20) + choice = "groin" + if(21 to 24) + choice = "l_arm" + else + return 1 + if(14 to 22) //Chest and arms to shoulders + switch(icon_x) + if(8 to 11) + choice = "r_arm" + if(12 to 20) + choice = "chest" + if(21 to 24) + choice = "l_arm" + else + return 1 + if(23 to 30) //Head, but we need to check for eye or mouth + if(icon_x in 12 to 20) + choice = "head" + switch(icon_y) + if(23 to 24) + if(icon_x in 15 to 17) + choice = "mouth" + if(26) //Eyeline, eyes are on 15 and 17 + if(icon_x in 14 to 18) + choice = "eyes" + if(25 to 27) + if(icon_x in 15 to 17) + choice = "eyes" + + return set_selected_zone(choice, usr) + +/obj/screen/zone_sel/proc/set_selected_zone(choice, mob/user) + if(isobserver(user)) + return + + if(choice != selecting) + selecting = choice + update_icon(usr) + return 1 + +/obj/screen/zone_sel/update_icon(mob/user) + cut_overlays() + add_overlay(mutable_appearance('icons/mob/screen_gen.dmi', "[selecting]")) + user.zone_selected = selecting + +/obj/screen/zone_sel/alien + icon = 'icons/mob/screen_alien.dmi' + +/obj/screen/zone_sel/alien/update_icon(mob/user) + cut_overlays() + add_overlay(mutable_appearance('icons/mob/screen_alien.dmi', "[selecting]")) + user.zone_selected = selecting + +/obj/screen/zone_sel/robot + icon = 'icons/mob/screen_cyborg.dmi' + + +/obj/screen/flash + name = "flash" + icon_state = "blank" + blend_mode = BLEND_ADD + screen_loc = "WEST,SOUTH to EAST,NORTH" + layer = FLASH_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/damageoverlay + icon = 'icons/mob/screen_full.dmi' + icon_state = "oxydamageoverlay0" + name = "dmg" + blend_mode = BLEND_MULTIPLY + screen_loc = "CENTER-7,CENTER-7" mouse_opacity = MOUSE_OPACITY_TRANSPARENT - layer = UI_DAMAGE_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/healths - name = "health" - icon_state = "health0" - screen_loc = ui_health - -/obj/screen/healths/alien - icon = 'icons/mob/screen_alien.dmi' - screen_loc = ui_alien_health - -/obj/screen/healths/robot - icon = 'icons/mob/screen_cyborg.dmi' - screen_loc = ui_borg_health - -/obj/screen/healths/deity - name = "Nexus Health" - icon_state = "deity_nexus" - screen_loc = ui_deityhealth - -/obj/screen/healths/blob - name = "blob health" - icon_state = "block" - screen_loc = ui_internal + layer = UI_DAMAGE_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/healths + name = "health" + icon_state = "health0" + screen_loc = ui_health + +/obj/screen/healths/alien + icon = 'icons/mob/screen_alien.dmi' + screen_loc = ui_alien_health + +/obj/screen/healths/robot + icon = 'icons/mob/screen_cyborg.dmi' + screen_loc = ui_borg_health + +/obj/screen/healths/deity + name = "Nexus Health" + icon_state = "deity_nexus" + screen_loc = ui_deityhealth + +/obj/screen/healths/blob + name = "blob health" + icon_state = "block" + screen_loc = ui_internal mouse_opacity = MOUSE_OPACITY_TRANSPARENT - -/obj/screen/healths/blob/naut - name = "health" - icon = 'icons/mob/blob.dmi' - icon_state = "nauthealth" - -/obj/screen/healths/blob/naut/core - name = "overmind health" - screen_loc = ui_health - icon_state = "corehealth" - -/obj/screen/healths/guardian - name = "summoner health" - icon = 'icons/mob/guardian.dmi' - icon_state = "base" - screen_loc = ui_health + +/obj/screen/healths/blob/naut + name = "health" + icon = 'icons/mob/blob.dmi' + icon_state = "nauthealth" + +/obj/screen/healths/blob/naut/core + name = "overmind health" + screen_loc = ui_health + icon_state = "corehealth" + +/obj/screen/healths/guardian + name = "summoner health" + icon = 'icons/mob/guardian.dmi' + icon_state = "base" + screen_loc = ui_health mouse_opacity = MOUSE_OPACITY_TRANSPARENT - -/obj/screen/healths/clock - icon = 'icons/mob/actions.dmi' - icon_state = "bg_clock" - screen_loc = ui_health + +/obj/screen/healths/clock + icon = 'icons/mob/actions.dmi' + icon_state = "bg_clock" + screen_loc = ui_health mouse_opacity = MOUSE_OPACITY_TRANSPARENT - -/obj/screen/healths/clock/gear - icon = 'icons/mob/clockwork_mobs.dmi' - icon_state = "bg_gear" - screen_loc = ui_internal - -/obj/screen/healths/revenant - name = "essence" - icon = 'icons/mob/actions.dmi' - icon_state = "bg_revenant" - screen_loc = ui_health + +/obj/screen/healths/clock/gear + icon = 'icons/mob/clockwork_mobs.dmi' + icon_state = "bg_gear" + screen_loc = ui_internal + +/obj/screen/healths/revenant + name = "essence" + icon = 'icons/mob/actions.dmi' + icon_state = "bg_revenant" + screen_loc = ui_health mouse_opacity = MOUSE_OPACITY_TRANSPARENT - -/obj/screen/healths/construct - icon = 'icons/mob/screen_construct.dmi' - icon_state = "artificer_health0" - screen_loc = ui_construct_health + +/obj/screen/healths/construct + icon = 'icons/mob/screen_construct.dmi' + icon_state = "artificer_health0" + screen_loc = ui_construct_health mouse_opacity = MOUSE_OPACITY_TRANSPARENT - -/obj/screen/healthdoll - name = "health doll" - screen_loc = ui_healthdoll - -/obj/screen/splash - icon = 'config/title_screens/images/title1.dmi' - icon_state = "" - screen_loc = "1,1" - layer = SPLASHSCREEN_LAYER - plane = SPLASHSCREEN_PLANE - var/client/holder - -/obj/screen/splash/New(client/C, visible, use_previous_title) //TODO: Make this use INITIALIZE_IMMEDIATE - holder = C - - if(!visible) - alpha = 0 - - if(!use_previous_title) - if(SStitle.icon) - icon = SStitle.icon - else - if(!SStitle.previous_icon) - qdel(src) - return - icon = SStitle.previous_icon - - holder.screen += src - - ..() - -/obj/screen/splash/proc/Fade(out, qdel_after = TRUE) - if(QDELETED(src)) - return - if(out) - animate(src, alpha = 0, time = 30) - else - alpha = 0 - animate(src, alpha = 255, time = 30) - if(qdel_after) - QDEL_IN(src, 30) - -/obj/screen/splash/Destroy() - if(holder) - holder.screen -= src - holder = null - return ..() + +/obj/screen/healthdoll + name = "health doll" + screen_loc = ui_healthdoll + +/obj/screen/splash + icon = 'config/title_screens/images/title1.dmi' + icon_state = "" + screen_loc = "1,1" + layer = SPLASHSCREEN_LAYER + plane = SPLASHSCREEN_PLANE + var/client/holder + +/obj/screen/splash/New(client/C, visible, use_previous_title) //TODO: Make this use INITIALIZE_IMMEDIATE + holder = C + + if(!visible) + alpha = 0 + + if(!use_previous_title) + if(SStitle.icon) + icon = SStitle.icon + else + if(!SStitle.previous_icon) + qdel(src) + return + icon = SStitle.previous_icon + + holder.screen += src + + ..() + +/obj/screen/splash/proc/Fade(out, qdel_after = TRUE) + if(QDELETED(src)) + return + if(out) + animate(src, alpha = 0, time = 30) + else + alpha = 0 + animate(src, alpha = 255, time = 30) + if(qdel_after) + QDEL_IN(src, 30) + +/obj/screen/splash/Destroy() + if(holder) + holder.screen -= src + holder = null + return ..() diff --git a/code/_onclick/hud/swarmer.dm b/code/_onclick/hud/swarmer.dm index 92a98e14c6..b3a2546335 100644 --- a/code/_onclick/hud/swarmer.dm +++ b/code/_onclick/hud/swarmer.dm @@ -26,7 +26,7 @@ /obj/screen/swarmer/Replicate icon_state = "ui_replicate" name = "Replicate (Costs 50 Resources)" - desc = "Creates a another of our kind." + desc = "Creates another of our kind." /obj/screen/swarmer/Replicate/Click() if(isswarmer(usr)) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index f1ac1af1af..987818924f 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -9,19 +9,20 @@ // Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. /obj/item/proc/attack_self(mob/user) - return + SendSignal(COMSIG_ITEM_ATTACK_SELF, user) + interact(user) /obj/item/proc/pre_attackby(atom/A, mob/living/user, params) //do stuff before attackby! return TRUE //return FALSE to avoid calling attackby after this proc does stuff // No comment /atom/proc/attackby(obj/item/W, mob/user, params) - return + return SendSignal(COMSIG_PARENT_ATTACKBY, W, user, params) /obj/attackby(obj/item/I, mob/living/user, params) - return I.attack_obj(src, user) + return ..() || I.attack_obj(src, user) -/mob/living/attackby(obj/item/I, mob/user, params) +/mob/living/attackby(obj/item/I, mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) if(user.a_intent == INTENT_HARM && stat == DEAD && butcher_results) //can we butcher it? var/sharpness = I.is_sharp() @@ -35,6 +36,7 @@ /obj/item/proc/attack(mob/living/M, mob/living/user) + SendSignal(COMSIG_ITEM_ATTACK, M, user) if(flags_1 & NOBLUDGEON_1) return if(!force) @@ -54,6 +56,7 @@ //the equivalent of the standard version of attack() but for object targets. /obj/item/proc/attack_obj(obj/O, mob/living/user) + SendSignal(COMSIG_ITEM_ATTACK_OBJ, O, user) if(flags_1 & NOBLUDGEON_1) return user.changeNext_move(CLICK_CD_MELEE) diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index 438b3b5142..55f3e83b61 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -1,104 +1,91 @@ -/mob/dead/observer/DblClickOn(var/atom/A, var/params) - if(client.click_intercept) - if(call(client.click_intercept,"InterceptClickOn")(src,params,A)) - return - - if(can_reenter_corpse && mind && mind.current) - if(A == mind.current || (mind.current in A)) // double click your corpse or whatever holds it - reenter_corpse() // (cloning scanner, body bag, closet, mech, etc) - return // seems legit. - - // Things you might plausibly want to follow - if(ismovableatom(A)) - ManualFollow(A) - - // Otherwise jump - else if(A.loc) - loc = get_turf(A) - update_parallax_contents() - -/mob/dead/observer/ClickOn(var/atom/A, var/params) - if(client.click_intercept) - if(call(client.click_intercept,"InterceptClickOn")(src,params,A)) - return - - var/list/modifiers = params2list(params) - if(modifiers["shift"] && modifiers["middle"]) - ShiftMiddleClickOn(A) - return - if(modifiers["shift"] && modifiers["ctrl"]) - CtrlShiftClickOn(A) - return - if(modifiers["middle"]) - MiddleClickOn(A) - return - if(modifiers["shift"]) - ShiftClickOn(A) - return - if(modifiers["alt"]) - AltClickOn(A) - return - if(modifiers["ctrl"]) - CtrlClickOn(A) - return - - if(world.time <= next_move) - return - // You are responsible for checking config.ghost_interaction when you override this function - // Not all of them require checking, see below - A.attack_ghost(src) - -// Oh by the way this didn't work with old click code which is why clicking shit didn't spam you -/atom/proc/attack_ghost(mob/dead/observer/user) - if(user.client) - if(IsAdminGhost(user)) - attack_ai(user) - if(user.client.prefs.inquisitive_ghost) - user.examinate(src) - -// --------------------------------------- -// And here are some good things for free: -// Now you can click through portals, wormholes, gateways, and teleporters while observing. -Sayu - -/obj/machinery/teleport/hub/attack_ghost(mob/user) - var/atom/l = loc - var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(l.x - 2, l.y, l.z)) - if(com && com.locked) - user.forceMove(get_turf(com.locked)) - -/obj/effect/portal/attack_ghost(mob/user) - if(linked) - user.forceMove(get_turf(linked)) - -/obj/machinery/gateway/centerstation/attack_ghost(mob/user) - if(awaygate) - user.forceMove(awaygate.loc) - else - to_chat(user, "[src] has no destination.") - -/obj/machinery/gateway/centeraway/attack_ghost(mob/user) - if(stationgate) - user.forceMove(stationgate.loc) - else - to_chat(user, "[src] has no destination.") - -/obj/item/storage/attack_ghost(mob/user) - orient2hud(user) - show_to(user) - -/obj/machinery/teleport/hub/attack_ghost(mob/user) - if(power_station && power_station.engaged && power_station.teleporter_console && power_station.teleporter_console.target) - user.forceMove(get_turf(power_station.teleporter_console.target)) - -// ------------------------------------------- -// This was supposed to be used by adminghosts -// I think it is a *terrible* idea -// but I'm leaving it here anyway -// commented out, of course. -/* -/atom/proc/attack_admin(mob/user as mob) - if(!user || !user.client || !user.client.holder) - return - attack_hand(user) - -*/ +/mob/dead/observer/DblClickOn(var/atom/A, var/params) + if(client.click_intercept) + if(call(client.click_intercept,"InterceptClickOn")(src,params,A)) + return + + if(can_reenter_corpse && mind && mind.current) + if(A == mind.current || (mind.current in A)) // double click your corpse or whatever holds it + reenter_corpse() // (cloning scanner, body bag, closet, mech, etc) + return // seems legit. + + // Things you might plausibly want to follow + if(ismovableatom(A)) + ManualFollow(A) + + // Otherwise jump + else if(A.loc) + loc = get_turf(A) + update_parallax_contents() + +/mob/dead/observer/ClickOn(var/atom/A, var/params) + if(client.click_intercept) + if(call(client.click_intercept,"InterceptClickOn")(src,params,A)) + return + + var/list/modifiers = params2list(params) + if(modifiers["shift"] && modifiers["middle"]) + ShiftMiddleClickOn(A) + return + if(modifiers["shift"] && modifiers["ctrl"]) + CtrlShiftClickOn(A) + return + if(modifiers["middle"]) + MiddleClickOn(A) + return + if(modifiers["shift"]) + ShiftClickOn(A) + return + if(modifiers["alt"]) + AltClickOn(A) + return + if(modifiers["ctrl"]) + CtrlClickOn(A) + return + + if(world.time <= next_move) + return + // You are responsible for checking config.ghost_interaction when you override this function + // Not all of them require checking, see below + A.attack_ghost(src) + +// Oh by the way this didn't work with old click code which is why clicking shit didn't spam you +/atom/proc/attack_ghost(mob/dead/observer/user) + if(user.client) + if(IsAdminGhost(user)) + attack_ai(user) + if(user.client.prefs.inquisitive_ghost) + user.examinate(src) + +// --------------------------------------- +// And here are some good things for free: +// Now you can click through portals, wormholes, gateways, and teleporters while observing. -Sayu + +/obj/machinery/teleport/hub/attack_ghost(mob/user) + var/atom/l = loc + var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(l.x - 2, l.y, l.z)) + if(com && com.locked) + user.forceMove(get_turf(com.locked)) + +/obj/effect/portal/attack_ghost(mob/user) + if(linked) + user.forceMove(get_turf(linked)) + +/obj/machinery/gateway/centerstation/attack_ghost(mob/user) + if(awaygate) + user.forceMove(awaygate.loc) + else + to_chat(user, "[src] has no destination.") + +/obj/machinery/gateway/centeraway/attack_ghost(mob/user) + if(stationgate) + user.forceMove(stationgate.loc) + else + to_chat(user, "[src] has no destination.") + +/obj/item/storage/attack_ghost(mob/user) + orient2hud(user) + show_to(user) + +/obj/machinery/teleport/hub/attack_ghost(mob/user) + if(power_station && power_station.engaged && power_station.teleporter_console && power_station.teleporter_console.target) + user.forceMove(get_turf(power_station.teleporter_console.target)) diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index b0ab260d63..903f3c0790 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -92,7 +92,7 @@ /obj/item/tk_grab/dropped(mob/user) if(focus && user && loc != user && loc != user.loc) // drop_item() gets called when you tk-attack a table/closet with an item if(focus.Adjacent(loc)) - focus.loc = loc + focus.forceMove(loc) . = ..() //stops TK grabs being equipped anywhere but into hands diff --git a/code/citadel/cit_guns.dm b/code/citadel/cit_guns.dm index ae78d1d172..73a98db4e3 100644 --- a/code/citadel/cit_guns.dm +++ b/code/citadel/cit_guns.dm @@ -26,4 +26,746 @@ build_type = PROTOLATHE materials = list(MAT_GOLD = 2500, MAT_METAL = 5000, MAT_GLASS = 5000) build_path = /obj/item/gun/energy/laser/carbine/nopin - category = list("Weapons") \ No newline at end of file + category = list("Weapons") + +////////////Anti Tank Pistol//////////// + +/obj/item/gun/ballistic/automatic/pistol/antitank + name = "Anti Tank Pistol" + desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate your wrist." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "atp" + item_state = "pistol" + recoil = 6 + mag_type = /obj/item/ammo_box/magazine/sniper_rounds + fire_delay = 50 + burst_size = 1 + origin_tech = "combat=7" + can_suppress = 0 + w_class = WEIGHT_CLASS_NORMAL + actions_types = list() + fire_sound = 'sound/weapons/blastcannon.ogg' + spread = 30 //damn thing has no rifling. + +/obj/item/gun/ballistic/automatic/pistol/antitank/update_icon() + ..() + if(magazine) + cut_overlays() + add_overlay("atp-mag") + else + cut_overlays() + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" + +/obj/item/gun/ballistic/automatic/pistol/antitank/syndicate + name = "Syndicate Anti Tank Pistol" + desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate a variety of joints without proper bracing." + pin = /obj/item/device/firing_pin/implant/pindicate + origin_tech = "combat=7;syndicate=6" + +/////////////spinfusor stuff//////////////// + +/obj/item/projectile/bullet/spinfusor + name ="spinfusor disk" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state= "spinner" + damage = 30 + dismemberment = 25 + +/obj/item/projectile/bullet/spinfusor/on_hit(atom/target, blocked = FALSE) //explosion to emulate the spinfusor's AOE + ..() + explosion(target, -1, -1, 2, 0, -1) + return 1 + +/obj/item/ammo_casing/caseless/spinfusor + name = "spinfusor disk" + desc = "A magnetic disk designed specifically for the Stormhammer magnetic cannon. Warning: extremely volatile!" + projectile_type = /obj/item/projectile/bullet/spinfusor + caliber = "spinfusor" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "disk" + throwforce = 15 //still deadly when thrown + throw_speed = 3 + +/obj/item/ammo_casing/caseless/spinfusor/throw_impact(atom/target) //disks detonate when thrown + if(!..()) // not caught in mid-air + visible_message("[src] detonates!") + playsound(src.loc, "sparks", 50, 1) + explosion(target, -1, -1, 1, 1, -1) + qdel(src) + return 1 + +/obj/item/ammo_box/magazine/internal/spinfusor + name = "spinfusor internal magazine" + ammo_type = /obj/item/ammo_casing/caseless/spinfusor + caliber = "spinfusor" + max_ammo = 1 + +/obj/item/gun/ballistic/automatic/spinfusor + name = "Stormhammer Magnetic Cannon" + desc = "An innovative weapon utilizing mag-lev technology to spin up a magnetic fusor and launch it at extreme velocities." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "spinfusor" + item_state = "spinfusor" + mag_type = /obj/item/ammo_box/magazine/internal/spinfusor + fire_sound = 'sound/weapons/rocketlaunch.ogg' + w_class = WEIGHT_CLASS_BULKY + can_suppress = 0 + burst_size = 1 + fire_delay = 20 + select = 0 + actions_types = list() + casing_ejector = 0 + origin_tech = "combat=6;magnets=6" + +/obj/item/gun/ballistic/automatic/spinfusor/attackby(obj/item/A, mob/user, params) + var/num_loaded = magazine.attackby(A, user, params, 1) + if(num_loaded) + to_chat(user, "You load [num_loaded] disk\s into \the [src].") + update_icon() + chamber_round() + +/obj/item/gun/ballistic/automatic/spinfusor/attack_self(mob/living/user) + return //caseless rounds are too glitchy to unload properly. Best to make it so that you cannot remove disks from the spinfusor + +/obj/item/gun/ballistic/automatic/spinfusor/update_icon() + ..() + icon_state = "spinfusor[magazine ? "-[get_ammo(1)]" : ""]" + +/obj/item/ammo_box/aspinfusor + name = "ammo box (spinfusor disks)" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "spinfusorbox" + ammo_type = /obj/item/ammo_casing/caseless/spinfusor + max_ammo = 8 + +/datum/supply_pack/security/armory/spinfusor + name = "Stormhammer Spinfusor Crate" + cost = 7000 + contains = list(/obj/item/gun/ballistic/automatic/spinfusor, + /obj/item/gun/ballistic/automatic/spinfusor) + crate_name = "spinfusor crate" + +/datum/supply_pack/security/armory/spinfusorammo + name = "Spinfusor Disk Crate" + cost = 4000 + contains = list(/obj/item/ammo_box/aspinfusor, + /obj/item/ammo_box/aspinfusor, + /obj/item/ammo_box/aspinfusor, + /obj/item/ammo_box/aspinfusor) + crate_name = "spinfusor disk crate" + +///////XCOM X9 AR/////// + +/obj/item/gun/ballistic/automatic/x9 //will be adminspawn only so ERT or something can use them + name = "\improper X9 Assault Rifle" + desc = "A rather old design of a cheap, reliable assault rifle made for combat against unknown enemies. Uses 5.56mm ammo." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "x9" + item_state = "arg" + slot_flags = 0 + origin_tech = "combat=7;engineering=7" + mag_type = /obj/item/ammo_box/magazine/m556 //Uses the m90gl's magazine, just like the NT-ARG + fire_sound = 'sound/weapons/gunshot_smg.ogg' + can_suppress = 0 + burst_size = 6 //in line with XCOMEU stats. This can fire 5 bursts from a full magazine. + fire_delay = 1 + spread = 30 //should be 40 for XCOM memes, but since its adminspawn only, might as well make it useable + recoil = 1 + +///toy memes/// + +/obj/item/ammo_box/magazine/toy/x9 + name = "foam force X9 magazine" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "toy9magazine" + max_ammo = 30 + multiple_sprites = 2 + +/obj/item/gun/ballistic/automatic/x9/toy + name = "donksoft X9" + desc = "An old but reliable assault rifle made for combat against unknown enemies. Appears to be hastily converted. Ages 8 and up." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "toy9" + can_suppress = 0 + needs_permit = 0 + mag_type = /obj/item/ammo_box/magazine/toy/x9 + casing_ejector = 0 + spread = 45 //MAXIMUM XCOM MEMES (actually that'd be 90 spread) + + +////////XCOM2 Magpistol///////// + +//////projectiles////// + +/obj/item/projectile/bullet/mags + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile" + damage = 25 + armour_penetration = 10 + light_range = 2 + light_color = LIGHT_COLOR_RED + +/obj/item/projectile/bullet/nlmags //non-lethal boolets + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-nl" + damage = 2 + knockdown = 15 + stamina = 50 + armour_penetration = -10 + light_range = 2 + light_color = LIGHT_COLOR_BLUE + + +/////actual ammo///// + +/obj/item/ammo_casing/caseless/amags + desc = "A ferromagnetic slug intended to be launched out of a compatible weapon." + caliber = "mags" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/mags + +/obj/item/ammo_casing/caseless/anlmags + desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload." + caliber = "mags" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/nlmags + +//////magazines///// + +/obj/item/ammo_box/magazine/mmag/small + name = "magpistol magazine (non-lethal disabler)" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "nlmagmag" + origin_tech = "magnets=5" + ammo_type = /obj/item/ammo_casing/caseless/anlmags + caliber = "mags" + max_ammo = 7 + multiple_sprites = 2 + +/obj/item/ammo_box/magazine/mmag/small/lethal + name = "magpistol magazine (lethal)" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "smallmagmag" + origin_tech = "combat=5" + ammo_type = /obj/item/ammo_casing/caseless/amags + +//////the gun itself////// + +/obj/item/gun/ballistic/automatic/pistol/mag + name = "magpistol" + desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magpistol" + force = 10 + fire_sound = 'sound/weapons/magpistol.ogg' + mag_type = /obj/item/ammo_box/magazine/mmag/small + can_suppress = 0 + casing_ejector = 0 + fire_delay = 5 + origin_tech = "combat=4;magnets=4" + +/obj/item/gun/ballistic/automatic/pistol/mag/update_icon() + ..() + if(magazine) + cut_overlays() + add_overlay("magpistol-magazine") + else + cut_overlays() + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" + +///research memes/// + +/obj/item/gun/ballistic/automatic/pistol/mag/nopin + pin = null + +/datum/design/magpistol + name = "Magpistol" + desc = "A weapon which fires ferromagnetic slugs." + id = "magpisol" + req_tech = list("combat" = 5, "magnets" = 6, "powerstorage" = 5) + build_type = PROTOLATHE + materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000) + build_path = /obj/item/gun/ballistic/automatic/pistol/mag/nopin + category = list("Weapons") + +/datum/design/mag_magpistol + name = "Magpistol Magazine" + desc = "A 7 round magazine for the Magpistol." + id = "mag_magpistol" + req_tech = list("combat" = 5, "magnets" = 6, "materials" = 5, "syndicate" = 3) + build_type = PROTOLATHE + materials = list(MAT_METAL = 4000, MAT_SILVER = 500) + build_path = /obj/item/ammo_box/magazine/mmag/small/lethal + category = list("Ammo") + +/datum/design/mag_magpistol/nl + name = "Magpistol Magazine (Non-Lethal)" + desc = "A 7 round non-lethal magazine for the Magpistol." + id = "mag_magpistol_nl" + req_tech = list("combat" = 5, "magnets" = 6, "materials" = 5) + materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250) + build_path = /obj/item/ammo_box/magazine/mmag/small + +//////toy memes///// + +/obj/item/projectile/bullet/reusable/foam_dart/mag + name = "magfoam dart" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-toy" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag + light_range = 2 + light_color = LIGHT_COLOR_YELLOW + +/obj/item/ammo_casing/caseless/foam_dart/mag + name = "magfoam dart" + desc = "A foam dart with fun light-up projectiles powered by magnets!" + projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/mag + +/obj/item/ammo_box/magazine/internal/shot/toy/mag + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag + max_ammo = 7 + +/obj/item/gun/ballistic/shotgun/toy/mag + name = "foam force magpistol" + desc = "A fancy toy sold alongside light-up foam force darts. Ages 8 and up." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "toymag" + item_state = "gun" + mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/mag + fire_sound = 'sound/weapons/magpistol.ogg' + slot_flags = SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + +/obj/item/ammo_box/foambox/mag + name = "ammo box (Magnetic Foam Darts)" + icon = 'icons/obj/guns/toy.dmi' + icon_state = "foambox" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag + max_ammo = 42 + +/datum/design/magfoam_dart + name = "Box of MagFoam Darts" + id = "magfoam_dart" + build_type = AUTOLATHE + materials = list(MAT_METAL = 300, MAT_GLASS = 200) + build_path = /obj/item/ammo_box/foambox/mag + category = list("initial", "Misc") + +/datum/design/foam_magpistol + name = "Foam Force Magpistol" + id = "magfoam_launcher" + build_type = AUTOLATHE + materials = list(MAT_METAL = 7500, MAT_GLASS = 1000) + build_path = /obj/item/gun/ballistic/shotgun/toy/mag + category = list("hacked", "Misc") + +//////Magrifle////// + +///projectiles/// + +/obj/item/projectile/bullet/magrifle + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-large" + damage = 30 + armour_penetration = 25 + light_range = 3 + light_color = LIGHT_COLOR_RED + +/obj/item/projectile/bullet/nlmagrifle //non-lethal boolets + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-large-nl" + damage = 5 + knockdown = 30 + stamina = 75 + armour_penetration = 0 + light_range = 3 + light_color = LIGHT_COLOR_BLUE + +///ammo casings/// + +/obj/item/ammo_casing/caseless/amagm + desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon." + caliber = "magm" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/magrifle + +/obj/item/ammo_casing/caseless/anlmagm + desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload." + caliber = "magm" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/nlmagrifle + +///magazines/// + +/obj/item/ammo_box/magazine/mmag/ + name = "magrifle magazine (non-lethal disabler)" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "mediummagmag" + origin_tech = "magnets=6" + ammo_type = /obj/item/ammo_casing/caseless/anlmagm + caliber = "magm" + max_ammo = 15 + multiple_sprites = 2 + +/obj/item/ammo_box/magazine/mmag/lethal + name = "magrifle magazine (lethal)" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "mediummagmag" + origin_tech = "combat=6" + ammo_type = /obj/item/ammo_casing/caseless/amagm + +///the gun itself/// + +/obj/item/gun/ballistic/automatic/magrifle + name = "\improper Magnetic Rifle" + desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magrifle" + item_state = "arg" + slot_flags = 0 + origin_tech = "combat=6;engineering=6;magnets=6" + mag_type = /obj/item/ammo_box/magazine/mmag + fire_sound = 'sound/weapons/magrifle.ogg' + can_suppress = 0 + burst_size = 3 + fire_delay = 2 + spread = 15 + recoil = 1 + casing_ejector = 0 + +///research/// + +/obj/item/gun/ballistic/automatic/magrifle/nopin + pin = null + +/datum/design/magrifle + name = "Magrifle" + desc = "An upscaled Magpistol in rifle form." + id = "magrifle" + req_tech = list("combat" = 7, "magnets" = 7, "powerstorage" = 7) + build_type = PROTOLATHE + materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000) + build_path = /obj/item/gun/ballistic/automatic/magrifle/nopin + category = list("Weapons") + +/datum/design/mag_magrifle + name = "Magrifle Magazine (Lethal)" + desc = "A 15 round magazine for the Magrifle." + id = "mag_magrifle" + req_tech = list("combat" = 7, "magnets" = 7, "materials" = 5, "syndicate" = 4) + build_type = PROTOLATHE + materials = list(MAT_METAL = 8000, MAT_SILVER = 1000) + build_path = /obj/item/ammo_box/magazine/mmag/lethal + category = list("Ammo") + +/datum/design/mag_magrifle/nl + name = "Magrifle Magazine (Non-Lethal)" + desc = "A 15 round non-lethal magazine for the Magrifle." + id = "mag_magrifle_nl" + req_tech = list("combat" = 7, "magnets" = 7, "materials" = 5) + materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) + build_path = /obj/item/ammo_box/magazine/mmag + +//////Hyper-Burst Rifle////// + +///projectiles/// + +/obj/item/projectile/bullet/mags/hyper + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile" + damage = 10 + armour_penetration = 10 + stamina = 10 + forcedodge = TRUE + range = 6 + light_range = 1 + light_color = LIGHT_COLOR_RED + +/obj/item/projectile/bullet/mags/hyper/inferno + icon_state = "magjectile-large" + stamina = 0 + forcedodge = FALSE + range = 25 + light_range = 4 + +/obj/item/projectile/bullet/mags/hyper/inferno/on_hit(atom/target, blocked = FALSE) + ..() + explosion(target, -1, 1, 2, 4, 5) + return 1 + +///ammo casings/// + +/obj/item/ammo_casing/caseless/ahyper + desc = "A large block of speciallized ferromagnetic material designed to be fired out of the experimental Hyper-Burst Rifle." + caliber = "hypermag" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "hyper-casing-live" + projectile_type = /obj/item/projectile/bullet/mags/hyper + pellets = 12 + variance = 40 + +/obj/item/ammo_casing/caseless/ahyper/inferno + projectile_type = /obj/item/projectile/bullet/mags/hyper/inferno + pellets = 1 + variance = 0 + +///magazines/// + +/obj/item/ammo_box/magazine/mhyper + name = "hyper-burst rifle magazine" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "hypermag-4" + ammo_type = /obj/item/ammo_casing/caseless/ahyper + caliber = "hypermag" + desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that fragments into 12 smaller shards which can absolutely puncture anything, but has rather short effective range." + max_ammo = 4 + +/obj/item/ammo_box/magazine/mhyper/update_icon() + ..() + icon_state = "hypermag-[ammo_count() ? "4" : "0"]" + +/obj/item/ammo_box/magazine/mhyper/inferno + name = "hyper-burst rifle magazine (inferno)" + ammo_type = /obj/item/ammo_casing/caseless/ahyper/inferno + desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that violently reacts with whatever surface it strikes, generating a massive amount of heat and light." + +///gun itself/// + +/obj/item/gun/ballistic/automatic/hyperburst + name = "\improper Hyper-Burst Rifle" + desc = "An extremely beefed up version of a stolen Nanotrasen weapon prototype, this 'rifle' is more like a cannon, with an extremely large bore barrel capable of generating several smaller magnetic 'barrels' to simultaneously launch multiple projectiles at once." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "hyperburst" + item_state = "arg" + slot_flags = 0 + origin_tech = "combat=6;engineering=6;magnets=6;syndicate=6" + mag_type = /obj/item/ammo_box/magazine/mhyper + fire_sound = 'sound/weapons/magburst.ogg' + can_suppress = 0 + burst_size = 1 + fire_delay = 40 + recoil = 2 + casing_ejector = 0 + weapon_weight = WEAPON_HEAVY + +/obj/item/gun/ballistic/automatic/hyperburst/update_icon() + ..() + icon_state = "hyperburst[magazine ? "-[get_ammo()]" : ""][chambered ? "" : "-e"]" + +/* made redundant by reskinnable stetchkins +//////Stealth Pistol////// + +/obj/item/gun/ballistic/automatic/pistol/stealth + name = "stealth pistol" + desc = "A unique bullpup pistol with a compact frame. Has an integrated surpressor." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "stealthpistol" + w_class = WEIGHT_CLASS_SMALL + origin_tech = "combat=3;materials=3;syndicate=4" + mag_type = /obj/item/ammo_box/magazine/m10mm + can_suppress = 0 + fire_sound = 'sound/weapons/gunshot_silenced.ogg' + suppressed = 1 + burst_size = 1 + +/obj/item/gun/ballistic/automatic/pistol/stealth/update_icon() + ..() + if(magazine) + cut_overlays() + add_overlay("stealthpistol-magazine") + else + cut_overlays() + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" + +*/ + +//////10mm soporific bullets////// + +obj/item/projectile/bullet/c10mm/soporific + name ="10mm soporific bullet" + armour_penetration = 0 + nodamage = TRUE + dismemberment = 0 + knockdown = 0 + +/obj/item/projectile/bullet/c10mm/soporific/on_hit(atom/target, blocked = FALSE) + if((blocked != 100) && isliving(target)) + var/mob/living/L = target + L.blur_eyes(6) + if(L.staminaloss >= 60) + L.Sleeping(250) + else + L.adjustStaminaLoss(25) + return 1 + +/obj/item/ammo_casing/c10mm/soporific + name = ".10mm soporific bullet casing" + desc = "A 10mm soporific bullet casing." + projectile_type = /obj/item/projectile/bullet/c10mm/soporific + +/obj/item/ammo_box/magazine/m10mm/soporific + name = "pistol magazine (10mm soporific)" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "9x19pS" + desc = "A gun magazine. Loaded with rounds which inject the target with a variety of illegal substances to induce sleep in the target." + ammo_type = /obj/item/ammo_casing/c10mm/soporific + +/obj/item/ammo_box/c10mm/soporific + name = "ammo box (10mm soporific)" + ammo_type = /obj/item/ammo_casing/c10mm/soporific + max_ammo = 24 + +//////Flechette Launcher////// + +///projectiles/// + +/obj/item/projectile/bullet/cflechetteap //shreds armor + name = "flechette (armor piercing)" + damage = 8 + armour_penetration = 80 + +/obj/item/projectile/bullet/cflechettes //shreds flesh and forces bleeding + name = "flechette (serrated)" + damage = 8 + dismemberment = 10 + armour_penetration = -80 + +/obj/item/projectile/bullet/cflechettes/on_hit(atom/target, blocked = FALSE) + if((blocked != 100) && iscarbon(target)) + var/mob/living/carbon/C = target + C.bleed(10) + return ..() + +///ammo casings (CASELESS AMMO CASINGS WOOOOOOOO)/// + +/obj/item/ammo_casing/caseless/flechetteap + name = "flechette (armor piercing)" + desc = "A flechette made with a tungsten alloy." + projectile_type = /obj/item/projectile/bullet/cflechetteap + caliber = "flechette" + throwforce = 1 + throw_speed = 3 + +/obj/item/ammo_casing/caseless/flechettes + name = "flechette (serrated)" + desc = "A serrated flechette made of a special alloy intended to deform drastically upon penetration of human flesh." + projectile_type = /obj/item/projectile/bullet/cflechettes + caliber = "flechette" + throwforce = 2 + throw_speed = 3 + embed_chance = 75 + +///magazine/// + +/obj/item/ammo_box/magazine/flechette + name = "flechette magazine (armor piercing)" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "flechettemag" + origin_tech = "combat=5;syndicate=1" + ammo_type = /obj/item/ammo_casing/caseless/flechetteap + caliber = "flechette" + max_ammo = 40 + multiple_sprites = 2 + +/obj/item/ammo_box/magazine/flechette/s + name = "flechette magazine (serrated)" + ammo_type = /obj/item/ammo_casing/caseless/flechettes + +///the gun itself/// + +/obj/item/gun/ballistic/automatic/flechette + name = "\improper CX Flechette Launcher" + desc = "A flechette launching machine pistol with an unconventional bullpup frame." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "flechettegun" + item_state = "gun" + w_class = WEIGHT_CLASS_NORMAL + slot_flags = 0 + /obj/item/device/firing_pin/implant/pindicate + origin_tech = "combat=6;materials=2;syndicate=5" + mag_type = /obj/item/ammo_box/magazine/flechette/ + fire_sound = 'sound/weapons/gunshot_smg.ogg' + can_suppress = 0 + burst_size = 5 + fire_delay = 1 + casing_ejector = 0 + spread = 20 + +/obj/item/gun/ballistic/automatic/flechette/update_icon() + ..() + if(magazine) + cut_overlays() + add_overlay("flechettegun-magazine") + else + cut_overlays() + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" + +///unique variant/// + +/obj/item/projectile/bullet/cflechetteshredder + name = "flechette (shredder)" + damage = 5 + dismemberment = 40 + +/obj/item/ammo_casing/caseless/flechetteshredder + name = "flechette (shredder)" + desc = "A serrated flechette made of a special alloy that forms a monofilament edge." + projectile_type = /obj/item/projectile/bullet/cflechettes + +/obj/item/ammo_box/magazine/flechette/shredder + name = "flechette magazine (shredder)" + icon_state = "shreddermag" + ammo_type = /obj/item/ammo_casing/caseless/flechetteshredder + +/obj/item/gun/ballistic/automatic/flechette/shredder + name = "\improper CX Shredder" + desc = "A flechette launching machine pistol made of ultra-light CFRP optimized for firing serrated monofillament flechettes." + w_class = WEIGHT_CLASS_SMALL + mag_type = /obj/item/ammo_box/magazine/flechette/shredder + spread = 30 + +/obj/item/gun/ballistic/automatic/flechette/shredder/update_icon() + ..() + if(magazine) + cut_overlays() + add_overlay("shreddergun-magazine") + else + cut_overlays() + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" + +//////modular pistol////// (reskinnable stetchkins) + +/obj/item/gun/ballistic/automatic/pistol/modular + name = "modular pistol" + desc = "A small, easily concealable 10mm handgun. Has a threaded barrel for suppressors." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "cde" + can_unsuppress = TRUE + unique_rename = TRUE + unique_reskin = list("Default" = "cde", + "NT-99" = "n99", + "Stealth" = "stealthpistol", + "HKVP-78" = "vp78", + "Luger" = "p08b", + "Mk.58" = "secguncomp", + "PX4 Storm" = "px4" + ) + +/obj/item/gun/ballistic/automatic/pistol/modular/update_icon() + ..() + if(current_skin) + icon_state = "[unique_reskin[current_skin]][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]" + else + icon_state = "[initial(icon_state)][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]" + if(magazine && suppressed) + cut_overlays() + add_overlay("[unique_reskin[current_skin]]-magazine-sup") //Yes, this means the default iconstate can't have a magazine overlay + else if (magazine) + cut_overlays() + add_overlay("[unique_reskin[current_skin]]-magazine") + else + cut_overlays() \ No newline at end of file diff --git a/code/citadel/cit_reagents.dm b/code/citadel/cit_reagents.dm index 4a0e91479b..30b4da7ccf 100644 --- a/code/citadel/cit_reagents.dm +++ b/code/citadel/cit_reagents.dm @@ -46,7 +46,7 @@ name = "Female Ejaculate" id = "femcum" description = "Vaginal lubricant found in most mammals and other animals of similar nature. Where you found this is your own business." - taste_description = "female arousal" + taste_description = "something with a tang" // wew coders who haven't eaten out a girl. taste_mult = 2 data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) reagent_state = LIQUID @@ -90,7 +90,7 @@ //aphrodisiac & anaphrodisiac -/datum/reagent/aphrodisiac +/datum/reagent/drug/aphrodisiac name = "Crocin" id = "aphro" description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac." @@ -98,7 +98,7 @@ taste_mult = 2 //Hide the roofies in stronger flavors color = "#FFADFF"//PINK, rgb(255, 173, 255) -/datum/reagent/aphrodisiac/on_mob_life(mob/living/M) +/datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M) if(prob(33)) M.adjustArousalLoss(2) if(prob(5)) @@ -108,7 +108,7 @@ to_chat(M, "[aroused_message]") ..() -/datum/reagent/aphrodisiacplus +/datum/reagent/drug/aphrodisiacplus name = "Hexacrocin" id = "aphro+" description = "Chemically condensed form of basic crocin. This aphrodisiac is extremely powerful and addictive in most animals.\ @@ -119,7 +119,7 @@ addiction_threshold = 20 overdose_threshold = 20 -/datum/reagent/aphrodisiacplus/on_mob_life(mob/living/M) +/datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M) if(prob(33)) M.adjustArousalLoss(6)//not quite six times as powerful, but still considerably more powerful. if(prob(5)) @@ -135,21 +135,21 @@ aroused_message = pick("You feel a bit hot.", "You feel strong sexual urges.", "You feel in the mood.", "You're ready to go down on someone.") to_chat(M, "[aroused_message]") -/datum/reagent/aphrodisiacplus/addiction_act_stage2(mob/living/M) +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage2(mob/living/M) if(prob(30)) M.adjustBrainLoss(2) ..() -/datum/reagent/aphrodisiacplus/addiction_act_stage3(mob/living/M) +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage3(mob/living/M) if(prob(30)) M.adjustBrainLoss(3) ..() -/datum/reagent/aphrodisiacplus/addiction_act_stage4(mob/living/M) +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage4(mob/living/M) if(prob(30)) M.adjustBrainLoss(4) ..() -/datum/reagent/aphrodisiacplus/overdose_process(mob/living/M) +/datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M) if(prob(33)) if(M.getArousalLoss() >= 100 && ishuman(M) && M.has_dna()) var/mob/living/carbon/human/H = M @@ -163,7 +163,7 @@ M.adjustArousalLoss(2) ..() -/datum/reagent/anaphrodisiac +/datum/reagent/drug/anaphrodisiac name = "Camphor" id = "anaphro" description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When injested by most animals, it acts as an anaphrodisiac\ @@ -173,12 +173,12 @@ color = "#D9D9D9"//rgb(217, 217, 217) reagent_state = SOLID -/datum/reagent/anaphrodisiac/on_mob_life(mob/living/M) +/datum/reagent/drug/anaphrodisiac/on_mob_life(mob/living/M) if(prob(33)) M.adjustArousalLoss(-2) ..() -/datum/reagent/anaphrodisiacplus +/datum/reagent/drug/anaphrodisiacplus name = "Hexacamphor" id = "anaphro+" description = "Chemically condensed camphor. Causes an extreme reduction in libido and a permanent one if overdosed. Non-addictive." @@ -187,12 +187,12 @@ reagent_state = SOLID overdose_threshold = 20 -/datum/reagent/anaphrodisiacplus/on_mob_life(mob/living/M) +/datum/reagent/drug/anaphrodisiacplus/on_mob_life(mob/living/M) if(prob(33)) M.adjustArousalLoss(-4) ..() -/datum/reagent/anaphrodisiacplus/overdose_process(mob/living/M) +/datum/reagent/drug/anaphrodisiacplus/overdose_process(mob/living/M) if(prob(33)) if(M.min_arousal > 0) M.min_arousal -= 1 diff --git a/code/citadel/cit_uniforms.dm b/code/citadel/cit_uniforms.dm index 1e2fc3a914..fc7e03a676 100644 --- a/code/citadel/cit_uniforms.dm +++ b/code/citadel/cit_uniforms.dm @@ -7,6 +7,7 @@ body_parts_covered = CHEST|ARMS can_adjust = 1 icon = 'icons/obj/clothing/turtlenecks.dmi' + icon_override = 'icons/mob/citadel/uniforms.dmi' /obj/item/clothing/under/bb_sweater/black name = "black sweater" diff --git a/code/citadel/cit_vendors.dm b/code/citadel/cit_vendors.dm index d35d11a5f8..18bdde040a 100644 --- a/code/citadel/cit_vendors.dm +++ b/code/citadel/cit_vendors.dm @@ -22,7 +22,7 @@ ) premium = list() refill_canister = /obj/item/vending_refill/kink - +/* /obj/machinery/vending/nazivend name = "Nazivend" desc = "A vending machine containing Nazi German supplies. A label reads: \"Remember the gorrilions lost.\"" @@ -34,20 +34,20 @@ /obj/item/clothing/head/stalhelm = 20, /obj/item/clothing/head/panzer = 20, /obj/item/clothing/suit/soldiercoat = 20, - /obj/item/clothing/under/soldieruniform = 20, + // /obj/item/clothing/under/soldieruniform = 20, /obj/item/clothing/shoes/jackboots = 20 ) contraband = list( /obj/item/clothing/head/naziofficer = 10, - /obj/item/clothing/suit/officercoat = 10, - /obj/item/clothing/under/officeruniform = 10, + // /obj/item/clothing/suit/officercoat = 10, + // /obj/item/clothing/under/officeruniform = 10, /obj/item/clothing/suit/space/hardsuit/nazi = 3, /obj/item/gun/energy/plasma/MP40k = 4 ) premium = list() refill_canister = /obj/item/vending_refill/nazi - +*/ /obj/machinery/vending/sovietvend name = "KomradeVendtink" desc = "Rodina-mat' zovyot!" diff --git a/code/citadel/custom_loadout/custom_items.dm b/code/citadel/custom_loadout/custom_items.dm index d620dd9017..397f4c6576 100644 --- a/code/citadel/custom_loadout/custom_items.dm +++ b/code/citadel/custom_loadout/custom_items.dm @@ -8,4 +8,137 @@ icon = 'icons/obj/custom.dmi' icon_state = "cebu" w_class = WEIGHT_CLASS_TINY - flags_1 = NOBLUDGEON_1 \ No newline at end of file + flags_1 = NOBLUDGEON_1 + + +/*Inferno707*/ + +/obj/item/clothing/neck/cloak/inferno + name = "Kiara's Cloak" + desc = "The design on this seems a little too familiar." + icon = 'icons/obj/clothing/cloaks.dmi' + icon_state = "infcloak" + item_state = "infcloak" + w_class = WEIGHT_CLASS_SMALL + body_parts_covered = CHEST|GROIN|LEGS|ARMS + +/obj/item/clothing/neck/petcollar/inferno + name = "Kiara's Collar" + desc = "A soft black collar that seems to stretch to fit whoever wears it." + icon_state = "infcollar" + item_state = "infcollar" + item_color = null + tagname = null + +/obj/item/clothing/accessory/medal/steele + name = "Insignia Of Steele" + desc = "An intricate pendant given to those who help a key member of the Steele Corporation." + icon = 'icons/obj/custom.dmi' + icon_state = "steele" + item_color = "steele" + medaltype = "medal-silver" + +/*DirtyOldHarry*/ + +/obj/item/lighter/gold + name = "\improper Engraved Zippo" + desc = "A shiny and relatively expensive zippo lighter. There's a small etched in verse on the bottom that reads, 'No Gods, No Masters, Only Man.'" + icon = 'icons/obj/cigarettes.dmi' + icon_state = "gold_zippo" + item_state = "gold_zippo" + w_class = WEIGHT_CLASS_TINY + flags_1 = CONDUCT_1 + slot_flags = SLOT_BELT + heat = 1500 + resistance_flags = FIRE_PROOF + light_color = LIGHT_COLOR_FIRE + + +/*Zombierobin*/ + +/obj/item/clothing/neck/scarf/zomb //Default white color, same functionality as beanies. + name = "A special scarf" + icon_state = "zombscarf" + desc = "A fashionable collar" + item_color = "zombscarf" + dog_fashion = /datum/dog_fashion/head + +/obj/item/clothing/suit/toggle/labcoat/mad/red + name = "\improper The Mad's labcoat" + desc = "An oddly special looking coat." + icon_state = "labred" + item_state = "labred" + + +/*PLACEHOLDER*/ + +/obj/item/toy/plush/carrot + name = "carrot plushie" + desc = "While a normal carrot would be good for your eyes, this one seems a bit more for hugging then eating." + icon = 'icons/obj/hydroponics/harvest.dmi' + icon_state = "carrot" + item_state = "carrot" + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("slapped") + resistance_flags = FLAMMABLE + squeak_override = list('sound/items/bikehorn.ogg'= 1) + +/obj/item/clothing/neck/cloak/carrot + name = "carrot cloak" + desc = "A cloak in the shape and color of a carrot!" + icon = 'icons/obj/clothing/cloaks.dmi' + icon_override = 'icons/mob/citadel/suit.dmi' + icon_state = "carrotcloak" + item_state = "carrotcloak" + w_class = WEIGHT_CLASS_SMALL + body_parts_covered = CHEST|GROIN|LEGS|ARMS + + +/*Zigfie*/ + +/obj/item/clothing/mask/luchador/zigfie + name = "Alboroto Rosa mask" + icon = 'icons/mob/mask.dmi' + icon_state = "lucharzigfie" + item_state = "lucharzigfie" + + +/*PLACEHOLDER*/ + +/obj/item/clothing/head/hardhat/reindeer/fluff + name = "novelty reindeer hat" + desc = "Some fake antlers and a very fake red nose - Sponsored by PWR Game(tm)" + icon_state = "hardhat0_reindeer" + item_state = "hardhat0_reindeer" + item_color = "reindeer" + flags_inv = 0 + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + brightness_on = 0 //luminosity when on + dynamic_hair_suffix = "" + +/obj/item/clothing/head/santa/fluff + name = "santa's hat" + desc = "On the first day of christmas my employer gave to me! - From Vlad with Salad" + icon_state = "santahatnorm" + item_state = "that" + dog_fashion = /datum/dog_fashion/head/santa + + +/*Brian*/ + +/obj/item/clothing/suit/trenchcoat/green + name = "Reece's Great Coat" + desc = "You would swear this was in your nightmares after eating too many veggies." + icon_state = "hos-g" + item_state = "hos-g" + body_parts_covered = CHEST|GROIN|ARMS|LEGS + + +/*Slomek*/ +/obj/item/reagent_containers/food/drinks/flask/russian + name = "russian flask" + desc = "Every good russian spaceman knows it's a good idea to bring along a couple of pints of whiskey wherever they go." + icon = 'icons/obj/custom.dmi' + icon_state = "russianflask" + item_state = "russianflask" + volume = 60 diff --git a/code/citadel/dogborgstuff.dm b/code/citadel/dogborgstuff.dm index 4f3eae0fb7..ee5cfd2fd9 100644 --- a/code/citadel/dogborgstuff.dm +++ b/code/citadel/dogborgstuff.dm @@ -23,7 +23,6 @@ attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed") w_class = 3 sharpness = IS_SHARP - var/emagged = 0 /obj/item/dogborg/jaws/attack(atom/A, mob/living/silicon/robot/user) ..() @@ -173,7 +172,6 @@ icon_state = "synthtongue" hitsound = 'sound/effects/attackblob.ogg' cleanspeed = 80 - var/emagged = 0 /obj/item/soap/tongue/New() ..() @@ -339,7 +337,6 @@ /obj/item/hand_tele, /obj/item/card/id/captains_spare, /obj/item/device/aicard, - /obj/item/device/paicard, /obj/item/gun, /obj/item/pinpointer, /obj/item/clothing/shoes/magboots, @@ -354,7 +351,9 @@ /obj/item/nuke_core_container, /obj/item/areaeditor/blueprints, /obj/item/documents/syndicate, - /obj/item/disk/nuclear) + /obj/item/disk/nuclear, + /obj/item/bombcore, + /obj/item/grenade) /obj/item/device/dogborg/sleeper/New() ..() diff --git a/code/citadel/plasmacases.dm b/code/citadel/plasmacases.dm new file mode 100644 index 0000000000..ac3621b58a --- /dev/null +++ b/code/citadel/plasmacases.dm @@ -0,0 +1,23 @@ +/obj/structure/guncase/plasma + name = "plasma rifle locker" + desc = "A locker that holds plasma rifles. Only opens in dire emergencies." + icon_state = "ecase" + case_type = "egun" + gun_category = /obj/item/gun/energy/plasma + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF //because fuck you, powergaming nerds. + +/obj/structure/guncase/plasma/attackby(obj/item/W, mob/user, params) + return + +/obj/structure/guncase/plasma/MouseDrop(over_object, src_location, over_location) + if(GLOB.security_level == SEC_LEVEL_RED || GLOB.security_level == SEC_LEVEL_DELTA) + . = ..() + else + to_chat(usr, "The storage unit will only unlock during a Red or Delta security alert.") + +/obj/structure/guncase/plasma/attack_hand(mob/user) + return MouseDrop(user) + +/obj/structure/guncase/plasma/emag_act() + to_chat(usr, "The locking mechanism is fitted with old style parts, The card has no effect.") + return \ No newline at end of file diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 01a6b2a46d..1e4a574e13 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -1,281 +1,156 @@ -//Configuraton defines //TODO: Move all yes/no switches into bitflags +GLOBAL_VAR_INIT(config_dir, "config/") +GLOBAL_PROTECT(config_dir) -//Used by jobs_have_maint_access -#define ASSISTANTS_HAVE_MAINT_ACCESS 1 -#define SECURITY_HAS_MAINT_ACCESS 2 -#define EVERYONE_HAS_MAINT_ACCESS 4 +/datum/controller/configuration + name = "Configuration" + + var/hiding_entries_by_type = TRUE //Set for readability, admins can set this to FALSE if they want to debug it + var/list/entries + var/list/entries_by_type + + var/list/maplist + var/datum/map_config/defaultmap + + var/list/modes // allowed modes + var/list/gamemode_cache + var/list/votable_modes // votable modes + var/list/mode_names + var/list/mode_reports + var/list/mode_false_report_weight + +/datum/controller/configuration/New() + config = src + var/list/config_files = InitEntries() + LoadModes() + for(var/I in config_files) + LoadEntries(I) + if(Get(/datum/config_entry/flag/maprotation)) + loadmaplist(CONFIG_MAPS_FILE) + +/datum/controller/configuration/Destroy() + entries_by_type.Cut() + QDEL_LIST_ASSOC_VAL(entries) + QDEL_LIST_ASSOC_VAL(maplist) + QDEL_NULL(defaultmap) + + config = null -/datum/configuration/can_vv_get(var_name) - var/static/list/banned_gets = list("autoadmin", "autoadmin_rank") - if (var_name in banned_gets) - return FALSE return ..() -/datum/configuration/vv_edit_var(var_name, var_value) - var/static/list/banned_edits = list("cross_address", "cross_allowed", "autoadmin", "autoadmin_rank") - if(var_name in banned_edits) - return FALSE - return ..() +/datum/controller/configuration/proc/InitEntries() + var/list/_entries = list() + entries = _entries + var/list/_entries_by_type = list() + entries_by_type = _entries_by_type -/datum/configuration - var/name = "Configuration" // datum name + . = list() - var/autoadmin = 0 - var/autoadmin_rank = "Game Admin" + for(var/I in typesof(/datum/config_entry)) //typesof is faster in this case + var/datum/config_entry/E = I + if(initial(E.abstract_type) == I) + continue + E = new I + _entries_by_type[I] = E + var/esname = E.name + var/datum/config_entry/test = _entries[esname] + if(test) + log_config("Error: [test.type] has the same name as [E.type]: [esname]! Not initializing [E.type]!") + qdel(E) + continue + _entries[esname] = E + .[E.resident_file] = TRUE - var/server_name = null // server name (the name of the game window) - var/server_sql_name = null // short form server name used for the DB - var/station_name = null // station name (the name of the station in-game) - var/lobby_countdown = 120 // In between round countdown. - var/round_end_countdown = 25 // Post round murder death kill countdown - var/hub = 0 +/datum/controller/configuration/proc/RemoveEntry(datum/config_entry/CE) + entries -= CE.name + entries_by_type -= CE.type - var/log_ooc = 0 // log OOC channel - var/log_access = 0 // log login/logout - var/log_say = 0 // log client say - var/log_admin = 0 // log admin actions - var/log_game = 0 // log game events - var/log_vote = 0 // log voting - var/log_whisper = 0 // log client whisper - var/log_prayer = 0 // log prayers - var/log_law = 0 // log lawchanges - var/log_emote = 0 // log emotes - var/log_attack = 0 // log attack messages - var/log_adminchat = 0 // log admin chat messages - var/log_pda = 0 // log pda messages - var/log_twitter = 0 // log certain expliotable parrots and other such fun things in a JSON file of twitter valid phrases. - var/log_world_topic = 0 // log all world.Topic() calls - var/sql_enabled = 0 // for sql switching - var/allow_admin_ooccolor = 0 // Allows admins with relevant permissions to have their own ooc colour - var/allow_vote_restart = 0 // allow votes to restart - var/allow_vote_mode = 0 // allow votes to change mode - var/vote_delay = 6000 // minimum time between voting sessions (deciseconds, 10 minute default) - var/vote_period = 600 // length of voting period (deciseconds, default 1 minute) - var/vote_no_default = 0 // vote does not default to nochange/norestart (tbi) - var/vote_no_dead = 0 // dead people can't vote (tbi) - var/del_new_on_log = 1 // del's new players if they log before they spawn in - var/allow_Metadata = 0 // Metadata is supported. - var/popup_admin_pm = 0 //adminPMs to non-admins show in a pop-up 'reply' window when set to 1. - var/fps = 20 - var/allow_holidays = 0 //toggles whether holiday-specific content should be used - var/tick_limit_mc_init = TICK_LIMIT_MC_INIT_DEFAULT //SSinitialization throttling +/datum/controller/configuration/proc/LoadEntries(filename) + log_config("Loading config file [filename]...") + var/list/lines = world.file2list("[GLOB.config_dir][filename]") + var/list/_entries = entries + for(var/L in lines) + if(!L) + continue - var/hostedby = null - var/respawn = 1 - var/guest_jobban = 1 - var/usewhitelist = 0 - var/inactivity_period = 3000 //time in ds until a player is considered inactive - var/afk_period = 6000 //time in ds until a player is considered afk and kickable - var/kick_inactive = FALSE //force disconnect for inactive players - var/load_jobs_from_txt = 0 - var/automute_on = 0 //enables automuting/spam prevention - var/minimal_access_threshold = 0 //If the number of players is larger than this threshold, minimal access will be turned on. - var/jobs_have_minimal_access = 0 //determines whether jobs use minimal access or expanded access. - var/jobs_have_maint_access = 0 //Who gets maint access? See defines above. - var/sec_start_brig = 0 //makes sec start in brig or dept sec posts + if(copytext(L, 1, 2) == "#") + continue - var/server - var/banappeals - var/wikiurl = "http://www.tgstation13.org/wiki" // Default wiki link. - var/forumurl = "http://tgstation13.org/phpBB/index.php" //default forums - var/rulesurl = "http://www.tgstation13.org/wiki/Rules" // default rules - var/githuburl = "https://www.github.com/tgstation/-tg-station" //default github - var/githubrepoid + var/pos = findtext(L, " ") + var/entry = null + var/value = null - var/forbid_singulo_possession = 0 - var/useircbot = 0 + if(pos) + entry = lowertext(copytext(L, 1, pos)) + value = copytext(L, pos + 1) + else + entry = lowertext(L) - var/check_randomizer = 0 + if(!entry) + continue - var/panic_server_name - var/panic_address //Reconnect a player this linked server if this server isn't accepting new players + var/datum/config_entry/E = _entries[entry] + if(!E) + log_config("Unknown setting in configuration: '[entry]'") + continue - //IP Intel vars - var/ipintel_email - var/ipintel_rating_bad = 1 - var/ipintel_save_good = 12 - var/ipintel_save_bad = 1 - var/ipintel_domain = "check.getipintel.net" + if(filename != E.resident_file) + log_config("Found [entry] in [filename] when it should have been in [E.resident_file]! Ignoring.") + continue - var/admin_legacy_system = 0 //Defines whether the server uses the legacy admin system with admins.txt or the SQL system. Config option in config.txt - var/ban_legacy_system = 0 //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. Config option in config.txt - var/use_age_restriction_for_jobs = 0 //Do jobs use account age restrictions? --requires database - var/use_account_age_for_jobs = 0 //Uses the time they made the account for the job restriction stuff. New player joining alerts should be unaffected. - var/see_own_notes = 0 //Can players see their own admin notes (read-only)? Config option in config.txt + var/validated = E.ValidateAndSet(value) + if(!validated) + log_config("Failed to validate setting \"[value]\" for [entry]") + else if(E.modified && !E.dupes_allowed) + log_config("Duplicate setting for [entry] ([value]) detected! Using latest.") - var/use_exp_tracking = FALSE - var/use_exp_restrictions_heads = FALSE - var/use_exp_restrictions_heads_hours = 0 - var/use_exp_restrictions_heads_department = FALSE - var/use_exp_restrictions_other = FALSE - var/use_exp_restrictions_admin_bypass = FALSE + if(validated) + E.modified = TRUE - //Population cap vars - var/soft_popcap = 0 - var/hard_popcap = 0 - var/extreme_popcap = 0 - var/soft_popcap_message = "Be warned that the server is currently serving a high number of users, consider using alternative game servers." - var/hard_popcap_message = "The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers." - var/extreme_popcap_message = "The server is currently serving a high number of users, find alternative servers." +/datum/controller/configuration/can_vv_get(var_name) + return (var_name != "entries_by_type" || !hiding_entries_by_type) && ..() - //game_options.txt configs - var/force_random_names = 0 - var/list/mode_names = list() - var/list/modes = list() // allowed modes - var/list/votable_modes = list() // votable modes - var/list/probabilities = list() // relative probability of each mode - var/list/min_pop = list() // overrides for acceptible player counts in a mode - var/list/max_pop = list() +/datum/controller/configuration/vv_edit_var(var_name, var_value) + return !(var_name in list("entries_by_type", "entries")) && ..() - var/humans_need_surnames = 0 - var/allow_ai = 0 // allow ai job - var/forbid_secborg = 0 // disallow secborg module to be chosen. - var/forbid_peaceborg = 0 - var/panic_bunker = 0 // prevents new people it hasn't seen before from connecting - var/notify_new_player_age = 0 // how long do we notify admins of a new player - var/notify_new_player_account_age = 0 // how long do we notify admins of a new byond account - var/irc_first_connection_alert = 0 // do we notify the irc channel when somebody is connecting for the first time? +/datum/controller/configuration/stat_entry() + if(!statclick) + statclick = new/obj/effect/statclick/debug(null, "Edit", src) + stat("[name]:", statclick) - var/traitor_scaling_coeff = 6 //how much does the amount of players get divided by to determine traitors - var/changeling_scaling_coeff = 6 //how much does the amount of players get divided by to determine changelings - var/security_scaling_coeff = 8 //how much does the amount of players get divided by to determine open security officer positions - var/abductor_scaling_coeff = 15 //how many players per abductor team +/datum/controller/configuration/proc/Get(entry_type) + if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "\ref[src]") + log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]") + return + var/datum/config_entry/E = entry_type + var/entry_is_abstract = initial(E.abstract_type) == entry_type + if(entry_is_abstract) + CRASH("Tried to retrieve an abstract config_entry: [entry_type]") + E = entries_by_type[entry_type] + if(!E) + CRASH("Missing config entry for [entry_type]!") + return E.value - var/traitor_objectives_amount = 2 - var/protect_roles_from_antagonist = 0 //If security and such can be traitor/cult/other - var/protect_assistant_from_antagonist = 0 //If assistants can be traitor/cult/other - var/enforce_human_authority = 0 //If non-human species are barred from joining as a head of staff - var/allow_latejoin_antagonists = 0 // If late-joining players can be traitor/changeling - var/list/continuous = list() // which roundtypes continue if all antagonists die - var/list/midround_antag = list() // which roundtypes use the midround antagonist system - var/midround_antag_time_check = 60 // How late (in minutes) you want the midround antag system to stay on, setting this to 0 will disable the system - var/midround_antag_life_check = 0.7 // A ratio of how many people need to be alive in order for the round not to immediately end in midround antagonist - var/shuttle_refuel_delay = 12000 - var/show_game_type_odds = 0 //if set this allows players to see the odds of each roundtype on the get revision screen - var/mutant_races = 0 //players can choose their mutant race before joining the game - var/list/roundstart_races = list() //races you can play as from the get go. If left undefined the game's roundstart var for species is used - var/mutant_humans = 0 //players can pick mutant bodyparts for humans before joining the game +/datum/controller/configuration/proc/Set(entry_type, new_val) + if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "\ref[src]") + log_admin_private("Config rewrite of [entry_type] to [new_val] attempted by [key_name(usr)]") + return + var/datum/config_entry/E = entry_type + var/entry_is_abstract = initial(E.abstract_type) == entry_type + if(entry_is_abstract) + CRASH("Tried to retrieve an abstract config_entry: [entry_type]") + E = entries_by_type[entry_type] + if(!E) + CRASH("Missing config entry for [entry_type]!") + return E.ValidateAndSet(new_val) - var/no_summon_guns //No - var/no_summon_magic //Fun - var/no_summon_events //Allowed - - var/intercept = 1 //Whether or not to send a communications intercept report roundstart. This may be overriden by gamemodes. - var/alert_desc_green = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced." - var/alert_desc_blue_upto = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted." - var/alert_desc_blue_downto = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed." - var/alert_desc_red_upto = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised." - var/alert_desc_red_downto = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised." - var/alert_desc_delta = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill." - - var/revival_pod_plants = FALSE - var/revival_cloning = FALSE - var/revival_brain_life = -1 - - var/rename_cyborg = 0 - var/ooc_during_round = 0 - var/emojis = 0 - var/no_credits_round_end = FALSE - - //Used for modifying movement speed for mobs. - //Unversal modifiers - var/run_speed = 0 - var/walk_speed = 0 - - //Mob specific modifiers. NOTE: These will affect different mob types in different ways - var/human_delay = 0 - var/robot_delay = 0 - var/monkey_delay = 0 - var/alien_delay = 0 - var/slime_delay = 0 - var/animal_delay = 0 - - var/gateway_delay = 18000 //How long the gateway takes before it activates. Default is half an hour. - var/ghost_interaction = 0 - - var/silent_ai = 0 - var/silent_borg = 0 - - var/damage_multiplier = 1 //Modifier for damage to all mobs. Impacts healing as well. - - var/allowwebclient = 0 - var/webclientmembersonly = 0 - - var/sandbox_autoclose = FALSE // close the sandbox panel after spawning an item, potentially reducing griff - - var/default_laws = 0 //Controls what laws the AI spawns with. - var/silicon_max_law_amount = 12 - var/list/lawids = list() - - var/list/law_weights = list() - - var/assistant_cap = -1 - - var/starlight = 0 - var/generate_minimaps = 0 - var/grey_assistants = 0 - - var/id_console_jobslot_delay = 30 - - var/lavaland_budget = 60 - var/space_budget = 16 - - var/aggressive_changelog = 0 - - var/reactionary_explosions = 0 //If we use reactionary explosions, explosions that react to walls and doors - - var/autoconvert_notes = 0 //if all connecting player's notes should attempt to be converted to the database - - var/announce_admin_logout = 0 - var/announce_admin_login = 0 - - var/list/datum/map_config/maplist = list() - var/datum/map_config/defaultmap = null - var/maprotation = 1 - var/maprotatechancedelta = 0.75 - var/allow_map_voting = TRUE - - // Enables random events mid-round when set to 1 - var/allow_random_events = 0 - - // Multipliers for random events minimal starting time and minimal players amounts - var/events_min_time_mul = 1 - var/events_min_players_mul = 1 - - // The object used for the clickable stat() button. - var/obj/effect/statclick/statclick - - var/client_warn_version = 0 - var/client_warn_message = "Your version of byond may have issues or be blocked from accessing this server in the future." - var/client_error_version = 0 - var/client_error_message = "Your version of byond is too old, may have issues, and is blocked from accessing this server." - - var/cross_name = "Other server" - var/cross_address = "byond://" - var/cross_allowed = FALSE - var/showircname = 0 - - var/list/gamemode_cache = null - - var/minutetopiclimit - var/secondtopiclimit - - var/error_cooldown = 600 // The "cooldown" time for each occurrence of a unique error - var/error_limit = 50 // How many occurrences before the next will silence them - var/error_silence_time = 6000 // How long a unique error will be silenced for - var/error_msg_delay = 50 // How long to wait between messaging admins about occurrences of a unique error - - var/arrivals_shuttle_dock_window = 55 //Time from when a player late joins on the arrivals shuttle to when the shuttle docks on the station - var/arrivals_shuttle_require_safe_latejoin = FALSE //Require the arrivals shuttle to be operational in order for latejoiners to join - - var/mice_roundstart = 10 // how many wire chewing rodents spawn at roundstart. - - var/irc_announce_new_game = FALSE - - var/list/policies = list() - -/datum/configuration/New() - gamemode_cache = typecacheof(/datum/game_mode,TRUE) +/datum/controller/configuration/proc/LoadModes() + gamemode_cache = typecacheof(/datum/game_mode, TRUE) + modes = list() + mode_names = list() + mode_reports = list() + mode_false_report_weight = list() + votable_modes = list() + var/list/probabilities = Get(/datum/config_entry/keyed_number_list/probability) for(var/T in gamemode_cache) // I wish I didn't have to instance the game modes in order to look up // their information, but it is the only way (at least that I know of). @@ -283,545 +158,18 @@ if(M.config_tag) if(!(M.config_tag in modes)) // ensure each mode is added only once - WRITE_FILE(GLOB.config_error_log, "Adding game mode [M.name] ([M.config_tag]) to configuration.") modes += M.config_tag mode_names[M.config_tag] = M.name probabilities[M.config_tag] = M.probability + mode_reports[M.config_tag] = M.generate_report() + mode_false_report_weight[M.config_tag] = M.false_report_weight if(M.votable) votable_modes += M.config_tag qdel(M) votable_modes += "secret" - Reload() - -/datum/configuration/proc/Reload() - load("config/config.txt") - load("config/comms.txt", "comms") - load("config/game_options.txt","game_options") - load("config/policies.txt", "policies") - loadsql("config/dbconfig.txt") - reload_custom_roundstart_items_list() - if (maprotation) - loadmaplist("config/maps.txt") - - // apply some settings from config.. - GLOB.abandon_allowed = respawn - -/datum/configuration/proc/load(filename, type = "config") //the type can also be game_options, in which case it uses a different switch. not making it separate to not copypaste code - Urist - var/list/Lines = world.file2list(filename) - - for(var/t in Lines) - if(!t) - continue - - t = trim(t) - if(length(t) == 0) - continue - else if(copytext(t, 1, 2) == "#") - continue - - var/pos = findtext(t, " ") - var/name = null - var/value = null - - if(pos) - name = lowertext(copytext(t, 1, pos)) - value = copytext(t, pos + 1) - else - name = lowertext(t) - - if(!name) - continue - - if(type == "config") - switch(name) - if("hub") - hub = 1 - if("admin_legacy_system") - admin_legacy_system = 1 - if("ban_legacy_system") - ban_legacy_system = 1 - if("use_age_restriction_for_jobs") - use_age_restriction_for_jobs = 1 - if("use_account_age_for_jobs") - use_account_age_for_jobs = 1 - if("use_exp_tracking") - use_exp_tracking = TRUE - if("use_exp_restrictions_heads") - use_exp_restrictions_heads = TRUE - if("use_exp_restrictions_heads_hours") - use_exp_restrictions_heads_hours = text2num(value) - if("use_exp_restrictions_heads_department") - use_exp_restrictions_heads_department = TRUE - if("use_exp_restrictions_other") - use_exp_restrictions_other = TRUE - if("use_exp_restrictions_admin_bypass") - use_exp_restrictions_admin_bypass = TRUE - if("lobby_countdown") - lobby_countdown = text2num(value) - if("round_end_countdown") - round_end_countdown = text2num(value) - if("log_ooc") - log_ooc = 1 - if("log_access") - log_access = 1 - if("log_say") - log_say = 1 - if("log_admin") - log_admin = 1 - if("log_prayer") - log_prayer = 1 - if("log_law") - log_law = 1 - if("log_game") - log_game = 1 - if("log_vote") - log_vote = 1 - if("log_whisper") - log_whisper = 1 - if("log_attack") - log_attack = 1 - if("log_emote") - log_emote = 1 - if("log_adminchat") - log_adminchat = 1 - if("log_pda") - log_pda = 1 - if("log_twitter") - log_twitter = 1 - if("log_world_topic") - log_world_topic = 1 - if("allow_admin_ooccolor") - allow_admin_ooccolor = 1 - if("allow_vote_restart") - allow_vote_restart = 1 - if("allow_vote_mode") - allow_vote_mode = 1 - if("no_dead_vote") - vote_no_dead = 1 - if("default_no_vote") - vote_no_default = 1 - if("vote_delay") - vote_delay = text2num(value) - if("vote_period") - vote_period = text2num(value) - if("norespawn") - respawn = 0 - if("servername") - server_name = value - if("serversqlname") - server_sql_name = value - if("stationname") - station_name = value - if("hostedby") - hostedby = value - if("server") - server = value - if("banappeals") - banappeals = value - if("wikiurl") - wikiurl = value - if("forumurl") - forumurl = value - if("rulesurl") - rulesurl = value - if("githuburl") - githuburl = value - if("githubrepoid") - githubrepoid = value - if("guest_jobban") - guest_jobban = 1 - if("guest_ban") - GLOB.guests_allowed = 0 - if("usewhitelist") - usewhitelist = TRUE - if("allow_metadata") - allow_Metadata = 1 - if("id_console_jobslot_delay") - id_console_jobslot_delay = text2num(value) - if("inactivity_period") - inactivity_period = text2num(value) * 10 //documented as seconds in config.txt - if("afk_period") - afk_period = text2num(value) * 10 // ^^^ - if("kick_inactive") - kick_inactive = TRUE - if("load_jobs_from_txt") - load_jobs_from_txt = 1 - if("forbid_singulo_possession") - forbid_singulo_possession = 1 - if("popup_admin_pm") - popup_admin_pm = 1 - if("allow_holidays") - allow_holidays = 1 - if("useircbot") //tgs2 support - useircbot = 1 - if("ticklag") - var/ticklag = text2num(value) - if(ticklag > 0) - fps = 10 / ticklag - if("tick_limit_mc_init") - tick_limit_mc_init = text2num(value) - if("fps") - fps = text2num(value) - if("automute_on") - automute_on = 1 - if("panic_server_name") - if (value != "\[Put the name here\]") - panic_server_name = value - if("panic_server_address") - if(value != "byond://address:port") - panic_address = value - if("show_irc_name") - showircname = 1 - if("see_own_notes") - see_own_notes = 1 - if("soft_popcap") - soft_popcap = text2num(value) - if("hard_popcap") - hard_popcap = text2num(value) - if("extreme_popcap") - extreme_popcap = text2num(value) - if("soft_popcap_message") - soft_popcap_message = value - if("hard_popcap_message") - hard_popcap_message = value - if("extreme_popcap_message") - extreme_popcap_message = value - if("panic_bunker") - panic_bunker = 1 - if("notify_new_player_age") - notify_new_player_age = text2num(value) - if("notify_new_player_account_age") - notify_new_player_account_age = text2num(value) - if("irc_first_connection_alert") - irc_first_connection_alert = 1 - if("check_randomizer") - check_randomizer = 1 - if("ipintel_email") - if (value != "ch@nge.me") - ipintel_email = value - if("ipintel_rating_bad") - ipintel_rating_bad = text2num(value) - if("ipintel_domain") - ipintel_domain = value - if("ipintel_save_good") - ipintel_save_good = text2num(value) - if("ipintel_save_bad") - ipintel_save_bad = text2num(value) - if("aggressive_changelog") - aggressive_changelog = 1 - if("autoconvert_notes") - autoconvert_notes = 1 - if("allow_webclient") - allowwebclient = 1 - if("webclient_only_byond_members") - webclientmembersonly = 1 - if("announce_admin_logout") - announce_admin_logout = 1 - if("announce_admin_login") - announce_admin_login = 1 - if("maprotation") - maprotation = 1 - if("allow_map_voting") - allow_map_voting = text2num(value) - if("maprotationchancedelta") - maprotatechancedelta = text2num(value) - if("autoadmin") - autoadmin = 1 - if(value) - autoadmin_rank = ckeyEx(value) - if("generate_minimaps") - generate_minimaps = 1 - if("client_warn_version") - client_warn_version = text2num(value) - if("client_warn_message") - client_warn_message = value - if("client_error_version") - client_error_version = text2num(value) - if("client_error_message") - client_error_message = value - if("minute_topic_limit") - minutetopiclimit = text2num(value) - if("second_topic_limit") - secondtopiclimit = text2num(value) - if("error_cooldown") - error_cooldown = text2num(value) - if("error_limit") - error_limit = text2num(value) - if("error_silence_time") - error_silence_time = text2num(value) - if("error_msg_delay") - error_msg_delay = text2num(value) - if("irc_announce_new_game") - irc_announce_new_game = TRUE - else -#if DM_VERSION > 511 -#error Replace the line below with WRITE_FILE(GLOB.config_error_log, "Unknown setting in configuration: '[name]'") -#endif - HandleCommsConfig(name, value) //TODO: Deprecate this eventually - else if(type == "comms") - HandleCommsConfig(name, value) - else if(type == "game_options") - switch(name) - if("damage_multiplier") - damage_multiplier = text2num(value) - if("revival_pod_plants") - revival_pod_plants = TRUE - if("revival_cloning") - revival_cloning = TRUE - if("revival_brain_life") - revival_brain_life = text2num(value) - if("rename_cyborg") - rename_cyborg = 1 - if("ooc_during_round") - ooc_during_round = 1 - if("emojis") - emojis = 1 - if("no_credits_round_end") - no_credits_round_end = TRUE - if("run_delay") - run_speed = text2num(value) - if("walk_delay") - walk_speed = text2num(value) - if("human_delay") - human_delay = text2num(value) - if("robot_delay") - robot_delay = text2num(value) - if("monkey_delay") - monkey_delay = text2num(value) - if("alien_delay") - alien_delay = text2num(value) - if("slime_delay") - slime_delay = text2num(value) - if("animal_delay") - animal_delay = text2num(value) - if("alert_red_upto") - alert_desc_red_upto = value - if("alert_red_downto") - alert_desc_red_downto = value - if("alert_blue_downto") - alert_desc_blue_downto = value - if("alert_blue_upto") - alert_desc_blue_upto = value - if("alert_green") - alert_desc_green = value - if("alert_delta") - alert_desc_delta = value - if("no_intercept_report") - intercept = 0 - if("assistants_have_maint_access") - jobs_have_maint_access |= ASSISTANTS_HAVE_MAINT_ACCESS - if("security_has_maint_access") - jobs_have_maint_access |= SECURITY_HAS_MAINT_ACCESS - if("everyone_has_maint_access") - jobs_have_maint_access |= EVERYONE_HAS_MAINT_ACCESS - if("sec_start_brig") - sec_start_brig = 1 - if("gateway_delay") - gateway_delay = text2num(value) - if("continuous") - var/mode_name = lowertext(value) - if(mode_name in modes) - continuous[mode_name] = 1 - else - WRITE_FILE(GLOB.config_error_log, "Unknown continuous configuration definition: [mode_name].") - if("midround_antag") - var/mode_name = lowertext(value) - if(mode_name in modes) - midround_antag[mode_name] = 1 - else - WRITE_FILE(GLOB.config_error_log, "Unknown midround antagonist configuration definition: [mode_name].") - if("midround_antag_time_check") - midround_antag_time_check = text2num(value) - if("midround_antag_life_check") - midround_antag_life_check = text2num(value) - if("min_pop") - var/pop_pos = findtext(value, " ") - var/mode_name = null - var/mode_value = null - - if(pop_pos) - mode_name = lowertext(copytext(value, 1, pop_pos)) - mode_value = copytext(value, pop_pos + 1) - if(mode_name in modes) - min_pop[mode_name] = text2num(mode_value) - else - WRITE_FILE(GLOB.config_error_log, "Unknown minimum population configuration definition: [mode_name].") - else - WRITE_FILE(GLOB.config_error_log, "Incorrect minimum population configuration definition: [mode_name] [mode_value].") - if("max_pop") - var/pop_pos = findtext(value, " ") - var/mode_name = null - var/mode_value = null - - if(pop_pos) - mode_name = lowertext(copytext(value, 1, pop_pos)) - mode_value = copytext(value, pop_pos + 1) - if(mode_name in modes) - max_pop[mode_name] = text2num(mode_value) - else - WRITE_FILE(GLOB.config_error_log, "Unknown maximum population configuration definition: [mode_name].") - else - WRITE_FILE(GLOB.config_error_log, "Incorrect maximum population configuration definition: [mode_name] [mode_value].") - if("shuttle_refuel_delay") - shuttle_refuel_delay = text2num(value) - if("show_game_type_odds") - show_game_type_odds = 1 - if("ghost_interaction") - ghost_interaction = 1 - if("traitor_scaling_coeff") - traitor_scaling_coeff = text2num(value) - if("changeling_scaling_coeff") - changeling_scaling_coeff = text2num(value) - if("security_scaling_coeff") - security_scaling_coeff = text2num(value) - if("abductor_scaling_coeff") - abductor_scaling_coeff = text2num(value) - if("traitor_objectives_amount") - traitor_objectives_amount = text2num(value) - if("probability") - var/prob_pos = findtext(value, " ") - var/prob_name = null - var/prob_value = null - - if(prob_pos) - prob_name = lowertext(copytext(value, 1, prob_pos)) - prob_value = copytext(value, prob_pos + 1) - if(prob_name in modes) - probabilities[prob_name] = text2num(prob_value) - else - WRITE_FILE(GLOB.config_error_log, "Unknown game mode probability configuration definition: [prob_name].") - else - WRITE_FILE(GLOB.config_error_log, "Incorrect probability configuration definition: [prob_name] [prob_value].") - - if("protect_roles_from_antagonist") - protect_roles_from_antagonist = 1 - if("protect_assistant_from_antagonist") - protect_assistant_from_antagonist = 1 - if("enforce_human_authority") - enforce_human_authority = 1 - if("allow_latejoin_antagonists") - allow_latejoin_antagonists = 1 - if("allow_random_events") - allow_random_events = 1 - - if("events_min_time_mul") - events_min_time_mul = text2num(value) - if("events_min_players_mul") - events_min_players_mul = text2num(value) - - if("minimal_access_threshold") - minimal_access_threshold = text2num(value) - if("jobs_have_minimal_access") - jobs_have_minimal_access = 1 - if("humans_need_surnames") - humans_need_surnames = 1 - if("force_random_names") - force_random_names = 1 - if("allow_ai") - allow_ai = 1 - if("disable_secborg") - forbid_secborg = 1 - if("disable_peaceborg") - forbid_peaceborg = 1 - if("silent_ai") - silent_ai = 1 - if("silent_borg") - silent_borg = 1 - if("sandbox_autoclose") - sandbox_autoclose = 1 - if("default_laws") - default_laws = text2num(value) - if("random_laws") - var/law_id = lowertext(value) - lawids += law_id - if("law_weight") - // Value is in the form "LAWID,NUMBER" - var/list/L = splittext(value, ",") - if(L.len != 2) - WRITE_FILE(GLOB.config_error_log, "Invalid LAW_WEIGHT: " + t) - continue - var/lawid = L[1] - var/weight = text2num(L[2]) - law_weights[lawid] = weight - - if("silicon_max_law_amount") - silicon_max_law_amount = text2num(value) - if("join_with_mutant_race") - mutant_races = 1 - if("roundstart_races") - var/race_id = lowertext(value) - for(var/species_id in GLOB.species_list) - if(species_id == race_id) - roundstart_races += GLOB.species_list[species_id] - GLOB.roundstart_species[species_id] = GLOB.species_list[species_id] - if("join_with_mutant_humans") - mutant_humans = 1 - if("assistant_cap") - assistant_cap = text2num(value) - if("starlight") - starlight = 1 - if("grey_assistants") - grey_assistants = 1 - if("lavaland_budget") - lavaland_budget = text2num(value) - if("space_budget") - space_budget = text2num(value) - if("no_summon_guns") - no_summon_guns = 1 - if("no_summon_magic") - no_summon_magic = 1 - if("no_summon_events") - no_summon_events = 1 - if("reactionary_explosions") - reactionary_explosions = 1 - if("bombcap") - var/BombCap = text2num(value) - if (!BombCap) - continue - if (BombCap < 4) - BombCap = 4 - - GLOB.MAX_EX_DEVESTATION_RANGE = round(BombCap/4) - GLOB.MAX_EX_HEAVY_RANGE = round(BombCap/2) - GLOB.MAX_EX_LIGHT_RANGE = BombCap - GLOB.MAX_EX_FLASH_RANGE = BombCap - GLOB.MAX_EX_FLAME_RANGE = BombCap - if("arrivals_shuttle_dock_window") - arrivals_shuttle_dock_window = max(PARALLAX_LOOP_TIME, text2num(value)) - if("arrivals_shuttle_require_safe_latejoin") - arrivals_shuttle_require_safe_latejoin = TRUE - if("mice_roundstart") - mice_roundstart = text2num(value) - else - WRITE_FILE(GLOB.config_error_log, "Unknown setting in configuration: '[name]'") - else if(type == "policies") - policies[name] = value - - fps = round(fps) - if(fps <= 0) - fps = initial(fps) - -/datum/configuration/proc/HandleCommsConfig(name, value) - switch(name) - if("comms_key") - global.comms_key = value - if(value != "default_pwd" && length(value) > 6) //It's the default value or less than 6 characters long, warn badmins - global.comms_allowed = TRUE - if("cross_server_address") - cross_address = value - if(value != "byond:\\address:port") - cross_allowed = TRUE - if("cross_comms_name") - cross_name = value - if("medal_hub_address") - global.medal_hub = value - if("medal_hub_password") - global.medal_pass = value - else - WRITE_FILE(GLOB.config_error_log, "Unknown setting in configuration: '[name]'") - -/datum/configuration/proc/loadmaplist(filename) +/datum/controller/configuration/proc/loadmaplist(filename) + filename = "[GLOB.config_dir][filename]" var/list/Lines = world.file2list(filename) var/datum/map_config/currentmap = null @@ -855,7 +203,7 @@ if ("map") currentmap = new ("_maps/[data].json") if(currentmap.defaulted) - log_world("Failed to load map config for [data]!") + log_config("Failed to load map config for [data]!") if ("minplayers","minplayer") currentmap.config_min_users = text2num(data) if ("maxplayers","maxplayer") @@ -865,6 +213,7 @@ if ("default","defaultmap") defaultmap = currentmap if ("endmap") + LAZYINITLIST(maplist) maplist[currentmap.map_name] = currentmap currentmap = null if ("disabled") @@ -873,64 +222,25 @@ WRITE_FILE(GLOB.config_error_log, "Unknown command in map vote config: '[command]'") -/datum/configuration/proc/loadsql(filename) - var/list/Lines = world.file2list(filename) - for(var/t in Lines) - if(!t) - continue - - t = trim(t) - if(length(t) == 0) - continue - else if(copytext(t, 1, 2) == "#") - continue - - var/pos = findtext(t, " ") - var/name = null - var/value = null - - if(pos) - name = lowertext(copytext(t, 1, pos)) - value = copytext(t, pos + 1) - else - name = lowertext(t) - - if(!name) - continue - - switch(name) - if("sql_enabled") - sql_enabled = 1 - if("address") - global.sqladdress = value - if("port") - global.sqlport = value - if("feedback_database") - global.sqlfdbkdb = value - if("feedback_login") - global.sqlfdbklogin = value - if("feedback_password") - global.sqlfdbkpass = value - if("feedback_tableprefix") - global.sqlfdbktableprefix = value - else - WRITE_FILE(GLOB.config_error_log, "Unknown setting in configuration: '[name]'") - -/datum/configuration/proc/pick_mode(mode_name) +/datum/controller/configuration/proc/pick_mode(mode_name) // I wish I didn't have to instance the game modes in order to look up // their information, but it is the only way (at least that I know of). + // ^ This guy didn't try hard enough for(var/T in gamemode_cache) - var/datum/game_mode/M = new T() - if(M.config_tag && M.config_tag == mode_name) - return M - qdel(M) + var/datum/game_mode/M = T + var/ct = initial(M.config_tag) + if(ct && ct == mode_name) + return new T return new /datum/game_mode/extended() -/datum/configuration/proc/get_runnable_modes() +/datum/controller/configuration/proc/get_runnable_modes() var/list/datum/game_mode/runnable_modes = new + var/list/probabilities = Get(/datum/config_entry/keyed_number_list/probability) + var/list/min_pop = Get(/datum/config_entry/keyed_number_list/min_pop) + var/list/max_pop = Get(/datum/config_entry/keyed_number_list/max_pop) + var/list/repeated_mode_adjust = Get(/datum/config_entry/number_list/repeated_mode_adjust) for(var/T in gamemode_cache) var/datum/game_mode/M = new T() - //to_chat(world, "DEBUG: [T], tag=[M.config_tag], prob=[probabilities[M.config_tag]]") if(!(M.config_tag in modes)) qdel(M) continue @@ -942,12 +252,22 @@ if(max_pop[M.config_tag]) M.maximum_players = max_pop[M.config_tag] if(M.can_start()) - runnable_modes[M] = probabilities[M.config_tag] - //to_chat(world, "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]") + var/final_weight = probabilities[M.config_tag] + if(SSpersistence.saved_modes.len == 3 && repeated_mode_adjust.len == 3) + var/recent_round = min(SSpersistence.saved_modes.Find(M.config_tag),3) + var/adjustment = 0 + while(recent_round) + adjustment += repeated_mode_adjust[recent_round] + recent_round = SSpersistence.saved_modes.Find(M.config_tag,recent_round+1,0) + final_weight *= ((100-adjustment)/100) + runnable_modes[M] = final_weight return runnable_modes -/datum/configuration/proc/get_runnable_midround_modes(crew) +/datum/controller/configuration/proc/get_runnable_midround_modes(crew) var/list/datum/game_mode/runnable_modes = new + var/list/probabilities = Get(/datum/config_entry/keyed_number_list/probability) + var/list/min_pop = Get(/datum/config_entry/keyed_number_list/min_pop) + var/list/max_pop = Get(/datum/config_entry/keyed_number_list/max_pop) for(var/T in (gamemode_cache - SSticker.mode.type)) var/datum/game_mode/M = new T() if(!(M.config_tag in modes)) @@ -965,9 +285,3 @@ continue runnable_modes[M] = probabilities[M.config_tag] return runnable_modes - -/datum/configuration/proc/stat_entry() - if(!statclick) - statclick = new/obj/effect/statclick/debug(null, "Edit", src) - - stat("[name]:", statclick) diff --git a/code/controllers/configuration.dm.rej b/code/controllers/configuration.dm.rej deleted file mode 100644 index 5d5c2c5055..0000000000 --- a/code/controllers/configuration.dm.rej +++ /dev/null @@ -1,24 +0,0 @@ -diff a/code/controllers/configuration.dm b/code/controllers/configuration.dm (rejected hunks) -@@ -337,17 +337,17 @@ - if("use_account_age_for_jobs") - use_account_age_for_jobs = 1 - if("use_exp_tracking") -- use_exp_tracking = 1 -+ use_exp_tracking = TRUE - if("use_exp_restrictions_heads") -- use_exp_restrictions_heads = 1 -+ use_exp_restrictions_heads = TRUE - if("use_exp_restrictions_heads_hours") - use_exp_restrictions_heads_hours = text2num(value) - if("use_exp_restrictions_heads_department") -- use_exp_restrictions_heads_department = 1 -+ use_exp_restrictions_heads_department = TRUE - if("use_exp_restrictions_other") -- use_exp_restrictions_other = 1 -+ use_exp_restrictions_other = TRUE - if("use_exp_restrictions_admin_bypass") -- use_exp_restrictions_admin_bypass = 1 -+ use_exp_restrictions_admin_bypass = TRUE - if("lobby_countdown") - lobby_countdown = text2num(value) - if("round_end_countdown") diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm new file mode 100644 index 0000000000..5358073dbe --- /dev/null +++ b/code/controllers/configuration/config_entry.dm @@ -0,0 +1,178 @@ +#undef CURRENT_RESIDENT_FILE + +#define LIST_MODE_NUM 0 +#define LIST_MODE_TEXT 1 +#define LIST_MODE_FLAG 2 + +/datum/config_entry + var/name //read-only, this is determined by the last portion of the derived entry type + var/value + var/default //read-only, just set value directly + + var/resident_file //the file which this belongs to, must be set + var/modified = FALSE //set to TRUE if the default has been overridden by a config entry + + var/protection = NONE + var/abstract_type = /datum/config_entry //do not instantiate if type matches this + + var/dupes_allowed = FALSE + +/datum/config_entry/New() + if(!resident_file) + CRASH("Config entry [type] has no resident_file set") + if(type == abstract_type) + CRASH("Abstract config entry [type] instatiated!") + name = lowertext(type2top(type)) + if(islist(value)) + var/list/L = value + default = L.Copy() + else + default = value + +/datum/config_entry/Destroy() + config.RemoveEntry(src) + return ..() + +/datum/config_entry/can_vv_get(var_name) + . = ..() + if(var_name == "value" || var_name == "default") + . &= !(protection & CONFIG_ENTRY_HIDDEN) + +/datum/config_entry/vv_edit_var(var_name, var_value) + var/static/list/banned_edits = list("name", "default", "resident_file", "protection", "abstract_type", "modified", "dupes_allowed") + if(var_name == "value") + if(protection & CONFIG_ENTRY_LOCKED) + return FALSE + . = ValidateAndSet("[var_value]") + if(.) + var_edited = TRUE + return + if(var_name in banned_edits) + return FALSE + return ..() + +/datum/config_entry/proc/ValidateAndSet(str_val) + CRASH("Invalid config entry type!") + +/datum/config_entry/proc/ValidateKeyedList(str_val, list_mode, splitter) + str_val = trim(str_val) + var/key_pos = findtext(str_val, splitter) + var/key_name = null + var/key_value = null + + if(key_pos || list_mode == LIST_MODE_FLAG) + key_name = lowertext(copytext(str_val, 1, key_pos)) + key_value = copytext(str_val, key_pos + 1) + var/temp + var/continue_check + switch(list_mode) + if(LIST_MODE_FLAG) + temp = TRUE + continue_check = TRUE + if(LIST_MODE_NUM) + temp = text2num(key_value) + continue_check = !isnull(temp) + if(LIST_MODE_TEXT) + temp = key_value + continue_check = temp + if(continue_check && ValidateKeyName(key_name)) + value[key_name] = temp + return TRUE + return FALSE + +/datum/config_entry/proc/ValidateKeyName(key_name) + return TRUE + +/datum/config_entry/string + value = "" + abstract_type = /datum/config_entry/string + var/auto_trim = TRUE + +/datum/config_entry/string/vv_edit_var(var_name, var_value) + return var_name != "auto_trim" && ..() + +/datum/config_entry/string/ValidateAndSet(str_val) + value = auto_trim ? trim(str_val) : str_val + return TRUE + +/datum/config_entry/number + value = 0 + abstract_type = /datum/config_entry/number + var/integer = TRUE + var/max_val = INFINITY + var/min_val = -INFINITY + +/datum/config_entry/number/ValidateAndSet(str_val) + var/temp = text2num(trim(str_val)) + if(!isnull(temp)) + value = Clamp(integer ? round(temp) : temp, min_val, max_val) + if(value != temp && !var_edited) + log_config("Changing [name] from [temp] to [value]!") + return TRUE + return FALSE + +/datum/config_entry/number/vv_edit_var(var_name, var_value) + var/static/list/banned_edits = list("max_val", "min_val", "integer") + return !(var_name in banned_edits) && ..() + +/datum/config_entry/flag + value = FALSE + abstract_type = /datum/config_entry/flag + +/datum/config_entry/flag/ValidateAndSet(str_val) + value = text2num(trim(str_val)) != 0 + return TRUE + +/datum/config_entry/number_list + abstract_type = /datum/config_entry/number_list + value = list() + +/datum/config_entry/number_list/ValidateAndSet(str_val) + str_val = trim(str_val) + var/list/new_list = list() + var/list/values = splittext(str_val," ") + for(var/I in values) + var/temp = text2num(I) + if(isnull(temp)) + return FALSE + new_list += temp + if(!new_list.len) + return FALSE + value = new_list + return TRUE + +/datum/config_entry/keyed_flag_list + abstract_type = /datum/config_entry/keyed_flag_list + value = list() + dupes_allowed = TRUE + +/datum/config_entry/keyed_flag_list/ValidateAndSet(str_val) + return ValidateKeyedList(str_val, LIST_MODE_FLAG, " ") + +/datum/config_entry/keyed_number_list + abstract_type = /datum/config_entry/keyed_number_list + value = list() + dupes_allowed = TRUE + var/splitter = " " + +/datum/config_entry/keyed_number_list/vv_edit_var(var_name, var_value) + return var_name != "splitter" && ..() + +/datum/config_entry/keyed_number_list/ValidateAndSet(str_val) + return ValidateKeyedList(str_val, LIST_MODE_NUM, splitter) + +/datum/config_entry/keyed_string_list + abstract_type = /datum/config_entry/keyed_string_list + value = list() + dupes_allowed = TRUE + var/splitter = " " + +/datum/config_entry/keyed_string_list/vv_edit_var(var_name, var_value) + return var_name != "splitter" && ..() + +/datum/config_entry/keyed_string_list/ValidateAndSet(str_val) + return ValidateKeyedList(str_val, LIST_MODE_TEXT, splitter) + +#undef LIST_MODE_NUM +#undef LIST_MODE_TEXT +#undef LIST_MODE_FLAG diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm new file mode 100644 index 0000000000..49ccb411fc --- /dev/null +++ b/code/controllers/configuration/configuration.dm @@ -0,0 +1,287 @@ +GLOBAL_VAR_INIT(config_dir, "config/") +GLOBAL_PROTECT(config_dir) + +/datum/controller/configuration + name = "Configuration" + + var/hiding_entries_by_type = TRUE //Set for readability, admins can set this to FALSE if they want to debug it + var/list/entries + var/list/entries_by_type + + var/list/maplist + var/datum/map_config/defaultmap + + var/list/modes // allowed modes + var/list/gamemode_cache + var/list/votable_modes // votable modes + var/list/mode_names + var/list/mode_reports + var/list/mode_false_report_weight + +/datum/controller/configuration/New() + config = src + var/list/config_files = InitEntries() + LoadModes() + for(var/I in config_files) + LoadEntries(I) + loadmaplist(CONFIG_MAPS_FILE) + +/datum/controller/configuration/Destroy() + entries_by_type.Cut() + QDEL_LIST_ASSOC_VAL(entries) + QDEL_LIST_ASSOC_VAL(maplist) + QDEL_NULL(defaultmap) + + config = null + + return ..() + +/datum/controller/configuration/proc/InitEntries() + var/list/_entries = list() + entries = _entries + var/list/_entries_by_type = list() + entries_by_type = _entries_by_type + + . = list() + + for(var/I in typesof(/datum/config_entry)) //typesof is faster in this case + var/datum/config_entry/E = I + if(initial(E.abstract_type) == I) + continue + E = new I + _entries_by_type[I] = E + var/esname = E.name + var/datum/config_entry/test = _entries[esname] + if(test) + log_config("Error: [test.type] has the same name as [E.type]: [esname]! Not initializing [E.type]!") + qdel(E) + continue + _entries[esname] = E + .[E.resident_file] = TRUE + +/datum/controller/configuration/proc/RemoveEntry(datum/config_entry/CE) + entries -= CE.name + entries_by_type -= CE.type + +/datum/controller/configuration/proc/LoadEntries(filename) + log_config("Loading config file [filename]...") + var/list/lines = world.file2list("[GLOB.config_dir][filename]") + var/list/_entries = entries + for(var/L in lines) + if(!L) + continue + + if(copytext(L, 1, 2) == "#") + continue + + var/pos = findtext(L, " ") + var/entry = null + var/value = null + + if(pos) + entry = lowertext(copytext(L, 1, pos)) + value = copytext(L, pos + 1) + else + entry = lowertext(L) + + if(!entry) + continue + + var/datum/config_entry/E = _entries[entry] + if(!E) + log_config("Unknown setting in configuration: '[entry]'") + continue + + if(filename != E.resident_file) + log_config("Found [entry] in [filename] when it should have been in [E.resident_file]! Ignoring.") + continue + + var/validated = E.ValidateAndSet(value) + if(!validated) + log_config("Failed to validate setting \"[value]\" for [entry]") + else if(E.modified && !E.dupes_allowed) + log_config("Duplicate setting for [entry] ([value]) detected! Using latest.") + + if(validated) + E.modified = TRUE + +/datum/controller/configuration/can_vv_get(var_name) + return (var_name != "entries_by_type" || !hiding_entries_by_type) && ..() + +/datum/controller/configuration/vv_edit_var(var_name, var_value) + return !(var_name in list("entries_by_type", "entries")) && ..() + +/datum/controller/configuration/stat_entry() + if(!statclick) + statclick = new/obj/effect/statclick/debug(null, "Edit", src) + stat("[name]:", statclick) + +/datum/controller/configuration/proc/Get(entry_type) + if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "\ref[src]") + log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]") + return + var/datum/config_entry/E = entry_type + var/entry_is_abstract = initial(E.abstract_type) == entry_type + if(entry_is_abstract) + CRASH("Tried to retrieve an abstract config_entry: [entry_type]") + E = entries_by_type[entry_type] + if(!E) + CRASH("Missing config entry for [entry_type]!") + return E.value + +/datum/controller/configuration/proc/Set(entry_type, new_val) + if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "\ref[src]") + log_admin_private("Config rewrite of [entry_type] to [new_val] attempted by [key_name(usr)]") + return + var/datum/config_entry/E = entry_type + var/entry_is_abstract = initial(E.abstract_type) == entry_type + if(entry_is_abstract) + CRASH("Tried to retrieve an abstract config_entry: [entry_type]") + E = entries_by_type[entry_type] + if(!E) + CRASH("Missing config entry for [entry_type]!") + return E.ValidateAndSet(new_val) + +/datum/controller/configuration/proc/LoadModes() + gamemode_cache = typecacheof(/datum/game_mode, TRUE) + modes = list() + mode_names = list() + mode_reports = list() + mode_false_report_weight = list() + votable_modes = list() + var/list/probabilities = Get(/datum/config_entry/keyed_number_list/probability) + for(var/T in gamemode_cache) + // I wish I didn't have to instance the game modes in order to look up + // their information, but it is the only way (at least that I know of). + var/datum/game_mode/M = new T() + + if(M.config_tag) + if(!(M.config_tag in modes)) // ensure each mode is added only once + modes += M.config_tag + mode_names[M.config_tag] = M.name + probabilities[M.config_tag] = M.probability + mode_reports[M.config_tag] = M.generate_report() + mode_false_report_weight[M.config_tag] = M.false_report_weight + if(M.votable) + votable_modes += M.config_tag + qdel(M) + votable_modes += "secret" + +/datum/controller/configuration/proc/loadmaplist(filename) + filename = "[GLOB.config_dir][filename]" + log_config("Loading config file [filename]...") + var/list/Lines = world.file2list(filename) + + var/datum/map_config/currentmap = null + for(var/t in Lines) + if(!t) + continue + + t = trim(t) + if(length(t) == 0) + continue + else if(copytext(t, 1, 2) == "#") + continue + + var/pos = findtext(t, " ") + var/command = null + var/data = null + + if(pos) + command = lowertext(copytext(t, 1, pos)) + data = copytext(t, pos + 1) + else + command = lowertext(t) + + if(!command) + continue + + if (!currentmap && command != "map") + continue + + switch (command) + if ("map") + currentmap = new ("_maps/[data].json") + if(currentmap.defaulted) + log_config("Failed to load map config for [data]!") + if ("minplayers","minplayer") + currentmap.config_min_users = text2num(data) + if ("maxplayers","maxplayer") + currentmap.config_max_users = text2num(data) + if ("weight","voteweight") + currentmap.voteweight = text2num(data) + if ("default","defaultmap") + defaultmap = currentmap + if ("endmap") + LAZYINITLIST(maplist) + maplist[currentmap.map_name] = currentmap + currentmap = null + if ("disabled") + currentmap = null + else + WRITE_FILE(GLOB.config_error_log, "Unknown command in map vote config: '[command]'") + + +/datum/controller/configuration/proc/pick_mode(mode_name) + // I wish I didn't have to instance the game modes in order to look up + // their information, but it is the only way (at least that I know of). + // ^ This guy didn't try hard enough + for(var/T in gamemode_cache) + var/datum/game_mode/M = T + var/ct = initial(M.config_tag) + if(ct && ct == mode_name) + return new T + return new /datum/game_mode/extended() + +/datum/controller/configuration/proc/get_runnable_modes() + var/list/datum/game_mode/runnable_modes = new + var/list/probabilities = Get(/datum/config_entry/keyed_number_list/probability) + var/list/min_pop = Get(/datum/config_entry/keyed_number_list/min_pop) + var/list/max_pop = Get(/datum/config_entry/keyed_number_list/max_pop) + var/list/repeated_mode_adjust = Get(/datum/config_entry/number_list/repeated_mode_adjust) + for(var/T in gamemode_cache) + var/datum/game_mode/M = new T() + if(!(M.config_tag in modes)) + qdel(M) + continue + if(probabilities[M.config_tag]<=0) + qdel(M) + continue + if(min_pop[M.config_tag]) + M.required_players = min_pop[M.config_tag] + if(max_pop[M.config_tag]) + M.maximum_players = max_pop[M.config_tag] + if(M.can_start()) + var/final_weight = probabilities[M.config_tag] + if(SSpersistence.saved_modes.len == 3 && repeated_mode_adjust.len == 3) + var/recent_round = min(SSpersistence.saved_modes.Find(M.config_tag),3) + var/adjustment = 0 + while(recent_round) + adjustment += repeated_mode_adjust[recent_round] + recent_round = SSpersistence.saved_modes.Find(M.config_tag,recent_round+1,0) + final_weight *= ((100-adjustment)/100) + runnable_modes[M] = final_weight + return runnable_modes + +/datum/controller/configuration/proc/get_runnable_midround_modes(crew) + var/list/datum/game_mode/runnable_modes = new + var/list/probabilities = Get(/datum/config_entry/keyed_number_list/probability) + var/list/min_pop = Get(/datum/config_entry/keyed_number_list/min_pop) + var/list/max_pop = Get(/datum/config_entry/keyed_number_list/max_pop) + for(var/T in (gamemode_cache - SSticker.mode.type)) + var/datum/game_mode/M = new T() + if(!(M.config_tag in modes)) + qdel(M) + continue + if(probabilities[M.config_tag]<=0) + qdel(M) + continue + if(min_pop[M.config_tag]) + M.required_players = min_pop[M.config_tag] + if(max_pop[M.config_tag]) + M.maximum_players = max_pop[M.config_tag] + if(M.required_players <= crew) + if(M.maximum_players >= 0 && M.maximum_players < crew) + continue + runnable_modes[M] = probabilities[M.config_tag] + return runnable_modes diff --git a/code/controllers/configuration/entries/comms.dm b/code/controllers/configuration/entries/comms.dm new file mode 100644 index 0000000000..bf099f6cb6 --- /dev/null +++ b/code/controllers/configuration/entries/comms.dm @@ -0,0 +1,22 @@ +#define CURRENT_RESIDENT_FILE "comms.txt" + +CONFIG_DEF(string/comms_key) + protection = CONFIG_ENTRY_HIDDEN + +/datum/config_entry/string/comms_key/ValidateAndSet(str_val) + return str_val != "default_pwd" && length(str_val) > 6 && ..() + +CONFIG_DEF(string/cross_server_address) + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/string/cross_server_address/ValidateAndSet(str_val) + return str_val != "byond:\\address:port" && ..() + +CONFIG_DEF(string/cross_comms_name) + +GLOBAL_VAR_INIT(medals_enabled, TRUE) //will be auto set to false if the game fails contacting the medal hub to prevent unneeded calls. + +CONFIG_DEF(string/medal_hub_address) + +CONFIG_DEF(string/medal_hub_password) + protection = CONFIG_ENTRY_HIDDEN \ No newline at end of file diff --git a/code/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm new file mode 100644 index 0000000000..ec96e88553 --- /dev/null +++ b/code/controllers/configuration/entries/config.dm @@ -0,0 +1,354 @@ +#define CURRENT_RESIDENT_FILE "config.txt" + +CONFIG_DEF(flag/autoadmin) // if autoadmin is enabled + protection = CONFIG_ENTRY_LOCKED + +CONFIG_DEF(string/autoadmin_rank) // the rank for autoadmins + value = "Game Master" + protection = CONFIG_ENTRY_LOCKED + +CONFIG_DEF(string/servername) // server name (the name of the game window) + +CONFIG_DEF(string/serversqlname) // short form server name used for the DB + +CONFIG_DEF(string/stationname) // station name (the name of the station in-game) + +CONFIG_DEF(number/lobby_countdown) // In between round countdown. + value = 120 + min_val = 0 + +CONFIG_DEF(number/round_end_countdown) // Post round murder death kill countdown + value = 25 + min_val = 0 + +CONFIG_DEF(flag/hub) // if the game appears on the hub or not + +CONFIG_DEF(flag/log_ooc) // log OOC channel + +CONFIG_DEF(flag/log_access) // log login/logout + +CONFIG_DEF(flag/log_say) // log client say + +CONFIG_DEF(flag/log_admin) // log admin actions + protection = CONFIG_ENTRY_LOCKED + +CONFIG_DEF(flag/log_prayer) // log prayers + +CONFIG_DEF(flag/log_law) // log lawchanges + +CONFIG_DEF(flag/log_game) // log game events + +CONFIG_DEF(flag/log_vote) // log voting + +CONFIG_DEF(flag/log_whisper) // log client whisper + +CONFIG_DEF(flag/log_attack) // log attack messages + +CONFIG_DEF(flag/log_emote) // log emotes + +CONFIG_DEF(flag/log_adminchat) // log admin chat messages + protection = CONFIG_ENTRY_LOCKED + +CONFIG_DEF(flag/log_pda) // log pda messages + +CONFIG_DEF(flag/log_twitter) // log certain expliotable parrots and other such fun things in a JSON file of twitter valid phrases. + +CONFIG_DEF(flag/log_world_topic) // log all world.Topic() calls + +CONFIG_DEF(flag/allow_admin_ooccolor) // Allows admins with relevant permissions to have their own ooc colour + protection = CONFIG_ENTRY_LOCKED + +CONFIG_DEF(flag/allow_vote_restart) // allow votes to restart + +CONFIG_DEF(flag/allow_vote_mode) // allow votes to change mode + +CONFIG_DEF(number/vote_delay) // minimum time between voting sessions (deciseconds, 10 minute default) + value = 6000 + min_val = 0 + +CONFIG_DEF(number/vote_period) // length of voting period (deciseconds, default 1 minute) + value = 600 + min_val = 0 + +CONFIG_DEF(flag/default_no_vote) // vote does not default to nochange/norestart + +CONFIG_DEF(flag/no_dead_vote) // dead people can't vote + +CONFIG_DEF(flag/allow_metadata) // Metadata is supported. + +CONFIG_DEF(flag/popup_admin_pm) // adminPMs to non-admins show in a pop-up 'reply' window when set + +CONFIG_DEF(number/fps) + value = 20 + min_val = 1 + max_val = 100 //byond will start crapping out at 50, so this is just ridic + var/sync_validate = FALSE + +/datum/config_entry/number/fps/ValidateAndSet(str_val) + . = ..() + if(.) + sync_validate = TRUE + var/datum/config_entry/number/ticklag/TL = config.entries_by_type[/datum/config_entry/number/ticklag] + if(!TL.sync_validate) + TL.ValidateAndSet(10 / value) + sync_validate = FALSE + +CONFIG_DEF(number/ticklag) + integer = FALSE + var/sync_validate = FALSE + +/datum/config_entry/number/ticklag/New() //ticklag weirdly just mirrors fps + var/datum/config_entry/CE = /datum/config_entry/number/fps + value = 10 / initial(CE.value) + ..() + +/datum/config_entry/number/ticklag/ValidateAndSet(str_val) + . = text2num(str_val) > 0 && ..() + if(.) + sync_validate = TRUE + var/datum/config_entry/number/fps/FPS = config.entries_by_type[/datum/config_entry/number/fps] + if(!FPS.sync_validate) + FPS.ValidateAndSet(10 / value) + sync_validate = FALSE + +CONFIG_DEF(flag/allow_holidays) + +CONFIG_DEF(number/tick_limit_mc_init) //SSinitialization throttling + value = TICK_LIMIT_MC_INIT_DEFAULT + min_val = 0 //oranges warned us + integer = FALSE + +CONFIG_DEF(flag/admin_legacy_system) //Defines whether the server uses the legacy admin system with admins.txt or the SQL system + protection = CONFIG_ENTRY_LOCKED + +CONFIG_DEF(string/hostedby) + +CONFIG_DEF(flag/norespawn) + +CONFIG_DEF(flag/guest_jobban) + +CONFIG_DEF(flag/usewhitelist) + +CONFIG_DEF(flag/ban_legacy_system) //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. + protection = CONFIG_ENTRY_LOCKED + +CONFIG_DEF(flag/use_age_restriction_for_jobs) //Do jobs use account age restrictions? --requires database + +CONFIG_DEF(flag/use_account_age_for_jobs) //Uses the time they made the account for the job restriction stuff. New player joining alerts should be unaffected. + +CONFIG_DEF(flag/use_exp_tracking) + +CONFIG_DEF(flag/use_exp_restrictions_heads) + +CONFIG_DEF(number/use_exp_restrictions_heads_hours) + value = 0 + min_val = 0 + +CONFIG_DEF(flag/use_exp_restrictions_heads_department) + +CONFIG_DEF(flag/use_exp_restrictions_other) + +CONFIG_DEF(flag/use_exp_restrictions_admin_bypass) + +CONFIG_DEF(string/server) + +CONFIG_DEF(string/banappeals) + +CONFIG_DEF(string/wikiurl) + value = "http://www.tgstation13.org/wiki" + +CONFIG_DEF(string/forumurl) + value = "http://tgstation13.org/phpBB/index.php" + +CONFIG_DEF(string/rulesurl) + value = "http://www.tgstation13.org/wiki/Rules" + +CONFIG_DEF(string/githuburl) + value = "https://www.github.com/tgstation/-tg-station" + +CONFIG_DEF(number/githubrepoid) + value = null + min_val = 0 + +CONFIG_DEF(flag/guest_ban) + +CONFIG_DEF(number/id_console_jobslot_delay) + value = 30 + min_val = 0 + +CONFIG_DEF(number/inactivity_period) //time in ds until a player is considered inactive) + value = 3000 + min_val = 0 + +/datum/config_entry/number/inactivity_period/ValidateAndSet(str_val) + . = ..() + if(.) + value *= 10 //documented as seconds in config.txt + +CONFIG_DEF(number/afk_period) //time in ds until a player is considered inactive) + value = 3000 + min_val = 0 + +/datum/config_entry/number/afk_period/ValidateAndSet(str_val) + . = ..() + if(.) + value *= 10 //documented as seconds in config.txt + +CONFIG_DEF(flag/kick_inactive) //force disconnect for inactive players + +CONFIG_DEF(flag/load_jobs_from_txt) + +CONFIG_DEF(flag/forbid_singulo_possession) + +CONFIG_DEF(flag/useircbot) //tgs2 support + protection = CONFIG_ENTRY_LOCKED + +CONFIG_DEF(flag/automute_on) //enables automuting/spam prevention + +CONFIG_DEF(string/panic_server_name) + +/datum/config_entry/string/panic_server_name/ValidateAndSet(str_val) + return str_val != "\[Put the name here\]" && ..() + +CONFIG_DEF(string/panic_address) //Reconnect a player this linked server if this server isn't accepting new players + +/datum/config_entry/string/panic_address/ValidateAndSet(str_val) + return str_val != "byond://address:port" && ..() + +CONFIG_DEF(string/invoke_youtubedl) + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +CONFIG_DEF(flag/show_irc_name) + +CONFIG_DEF(flag/see_own_notes) //Can players see their own admin notes (read-only)? + +CONFIG_DEF(number/note_fresh_days) + value = null + min_val = 0 + integer = FALSE + +CONFIG_DEF(number/note_stale_days) + value = null + min_val = 0 + integer = FALSE + +CONFIG_DEF(flag/maprotation) + +CONFIG_DEF(number/maprotatechancedelta) + value = 0.75 + min_val = 0 + max_val = 1 + integer = FALSE + +CONFIG_DEF(number/soft_popcap) + value = null + min_val = 0 + +CONFIG_DEF(number/hard_popcap) + value = null + min_val = 0 + +CONFIG_DEF(number/extreme_popcap) + value = null + min_val = 0 + +CONFIG_DEF(string/soft_popcap_message) + value = "Be warned that the server is currently serving a high number of users, consider using alternative game servers." + +CONFIG_DEF(string/hard_popcap_message) + value = "The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers." + +CONFIG_DEF(string/extreme_popcap_message) + value = "The server is currently serving a high number of users, find alternative servers." + +CONFIG_DEF(flag/panic_bunker) // prevents people the server hasn't seen before from connecting + +CONFIG_DEF(number/notify_new_player_age) // how long do we notify admins of a new player + min_val = -1 + +CONFIG_DEF(number/notify_new_player_account_age) // how long do we notify admins of a new byond account + min_val = 0 + +CONFIG_DEF(flag/irc_first_connection_alert) // do we notify the irc channel when somebody is connecting for the first time? + +CONFIG_DEF(flag/check_randomizer) + +CONFIG_DEF(string/ipintel_email) + +/datum/config_entry/string/ipintel_email/ValidateAndSet(str_val) + return str_val != "ch@nge.me" && ..() + +CONFIG_DEF(number/ipintel_rating_bad) + value = 1 + integer = FALSE + min_val = 0 + max_val = 1 + +CONFIG_DEF(number/ipintel_save_good) + value = 12 + min_val = 0 + +CONFIG_DEF(number/ipintel_save_bad) + value = 1 + min_val = 0 + +CONFIG_DEF(string/ipintel_domain) + value = "check.getipintel.net" + +CONFIG_DEF(flag/aggressive_changelog) + +CONFIG_DEF(flag/autoconvert_notes) //if all connecting player's notes should attempt to be converted to the database + protection = CONFIG_ENTRY_LOCKED + +CONFIG_DEF(flag/allow_webclient) + +CONFIG_DEF(flag/webclient_only_byond_members) + +CONFIG_DEF(flag/announce_admin_logout) + +CONFIG_DEF(flag/announce_admin_login) + +CONFIG_DEF(flag/allow_map_voting) + +CONFIG_DEF(flag/generate_minimaps) + +CONFIG_DEF(number/client_warn_version) + value = null + min_val = 500 + max_val = DM_VERSION - 1 + +CONFIG_DEF(string/client_warn_message) + value = "Your version of byond may have issues or be blocked from accessing this server in the future." + +CONFIG_DEF(number/client_error_version) + value = null + min_val = 500 + max_val = DM_VERSION - 1 + +CONFIG_DEF(string/client_error_message) + value = "Your version of byond is too old, may have issues, and is blocked from accessing this server." + +CONFIG_DEF(number/minute_topic_limit) + value = null + min_val = 0 + +CONFIG_DEF(number/second_topic_limit) + value = null + min_val = 0 + +CONFIG_DEF(number/error_cooldown) // The "cooldown" time for each occurrence of a unique error) + value = 600 + min_val = 0 + +CONFIG_DEF(number/error_limit) // How many occurrences before the next will silence them + value = 50 + +CONFIG_DEF(number/error_silence_time) // How long a unique error will be silenced for + value = 6000 + +CONFIG_DEF(number/error_msg_delay) // How long to wait between messaging admins about occurrences of a unique error + value = 50 + +CONFIG_DEF(flag/irc_announce_new_game) + +CONFIG_DEF(flag/debug_admin_hrefs) \ No newline at end of file diff --git a/code/controllers/configuration/entries/dbconfig.dm b/code/controllers/configuration/entries/dbconfig.dm new file mode 100644 index 0000000000..c46880686a --- /dev/null +++ b/code/controllers/configuration/entries/dbconfig.dm @@ -0,0 +1,28 @@ +#define CURRENT_RESIDENT_FILE "dbconfig.txt" + +CONFIG_DEF(flag/sql_enabled) // for sql switching + protection = CONFIG_ENTRY_LOCKED + +CONFIG_DEF(string/address) + value = "localhost" + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +CONFIG_DEF(number/port) + value = 3306 + min_val = 0 + max_val = 65535 + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +CONFIG_DEF(string/feedback_database) + value = "test" + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +CONFIG_DEF(string/feedback_login) + value = "root" + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +CONFIG_DEF(string/feedback_password) + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +CONFIG_DEF(string/feedback_tableprefix) + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm new file mode 100644 index 0000000000..106804a576 --- /dev/null +++ b/code/controllers/configuration/entries/game_options.dm @@ -0,0 +1,266 @@ +#define CURRENT_RESIDENT_FILE "game_options.txt" + +CONFIG_DEF(number_list/repeated_mode_adjust) + +CONFIG_DEF(keyed_number_list/probability) + +/datum/config_entry/keyed_number_list/probability/ValidateKeyName(key_name) + return key_name in config.modes + +CONFIG_DEF(keyed_number_list/max_pop) + +/datum/config_entry/keyed_number_list/max_pop/ValidateKeyName(key_name) + return key_name in config.modes + +CONFIG_DEF(keyed_number_list/min_pop) + +/datum/config_entry/keyed_number_list/min_pop/ValidateKeyName(key_name) + return key_name in config.modes + +CONFIG_DEF(keyed_flag_list/continuous) // which roundtypes continue if all antagonists die + +/datum/config_entry/keyed_flag_list/continuous/ValidateKeyName(key_name) + return key_name in config.modes + +CONFIG_DEF(keyed_flag_list/midround_antag) // which roundtypes use the midround antagonist system + +/datum/config_entry/keyed_flag_list/midround_antag/ValidateKeyName(key_name) + return key_name in config.modes + +CONFIG_DEF(keyed_string_list/policy) + +CONFIG_DEF(number/damage_multiplier) + value = 1 + integer = FALSE + +CONFIG_DEF(number/minimal_access_threshold) //If the number of players is larger than this threshold, minimal access will be turned on. + min_val = 0 + +CONFIG_DEF(flag/jobs_have_minimal_access) //determines whether jobs use minimal access or expanded access. + +CONFIG_DEF(flag/assistants_have_maint_access) + +CONFIG_DEF(flag/security_has_maint_access) + +CONFIG_DEF(flag/everyone_has_maint_access) + +CONFIG_DEF(flag/sec_start_brig) //makes sec start in brig instead of dept sec posts + +CONFIG_DEF(flag/force_random_names) + +CONFIG_DEF(flag/humans_need_surnames) + +CONFIG_DEF(flag/allow_ai) // allow ai job + +CONFIG_DEF(flag/disable_secborg) // disallow secborg module to be chosen. + +CONFIG_DEF(flag/disable_peaceborg) + +CONFIG_DEF(number/traitor_scaling_coeff) //how much does the amount of players get divided by to determine traitors + value = 6 + min_val = 1 + +CONFIG_DEF(number/brother_scaling_coeff) //how many players per brother team + value = 25 + min_val = 1 + +CONFIG_DEF(number/changeling_scaling_coeff) //how much does the amount of players get divided by to determine changelings + value = 6 + min_val = 1 + +CONFIG_DEF(number/security_scaling_coeff) //how much does the amount of players get divided by to determine open security officer positions + value = 8 + min_val = 1 + +CONFIG_DEF(number/abductor_scaling_coeff) //how many players per abductor team + value = 15 + min_val = 1 + +CONFIG_DEF(number/traitor_objectives_amount) + value = 2 + min_val = 0 + +CONFIG_DEF(number/brother_objectives_amount) + value = 2 + min_val = 0 + +CONFIG_DEF(flag/reactionary_explosions) //If we use reactionary explosions, explosions that react to walls and doors + +CONFIG_DEF(flag/protect_roles_from_antagonist) //If security and such can be traitor/cult/other + +CONFIG_DEF(flag/protect_assistant_from_antagonist) //If assistants can be traitor/cult/other + +CONFIG_DEF(flag/enforce_human_authority) //If non-human species are barred from joining as a head of staff + +CONFIG_DEF(flag/allow_latejoin_antagonists) // If late-joining players can be traitor/changeling + +CONFIG_DEF(number/midround_antag_time_check) // How late (in minutes) you want the midround antag system to stay on, setting this to 0 will disable the system + value = 60 + min_val = 0 + +CONFIG_DEF(number/midround_antag_life_check) // A ratio of how many people need to be alive in order for the round not to immediately end in midround antagonist + value = 0.7 + integer = FALSE + min_val = 0 + max_val = 1 + +CONFIG_DEF(number/shuttle_refuel_delay) + value = 12000 + min_val = 0 + +CONFIG_DEF(flag/show_game_type_odds) //if set this allows players to see the odds of each roundtype on the get revision screen + +CONFIG_DEF(flag/join_with_mutant_race) //players can choose their mutant race before joining the game + +CONFIG_DEF(keyed_flag_list/roundstart_races) //races you can play as from the get go. If left undefined the game's roundstart var for species is used + var/first_edit = TRUE + +/datum/config_entry/keyed_flag_list/roundstart_races/New() + for(var/I in subtypesof(/datum/species)) + var/datum/species/S = I + if(initial(S.roundstart)) + value[initial(S.id)] = TRUE + ..() + +/datum/config_entry/keyed_flag_list/roundstart_races/ValidateAndSet(str_val) + var/list/old_val + if(first_edit) + old_val = value + old_val = old_val.Copy() + . = ..() + if(first_edit) + if(!.) + value = old_val + else + first_edit = FALSE + +CONFIG_DEF(flag/join_with_mutant_humans) //players can pick mutant bodyparts for humans before joining the game + +CONFIG_DEF(flag/no_summon_guns) //No + +CONFIG_DEF(flag/no_summon_magic) //Fun + +CONFIG_DEF(flag/no_summon_events) //Allowed + +CONFIG_DEF(flag/no_intercept_report) //Whether or not to send a communications intercept report roundstart. This may be overriden by gamemodes. + +CONFIG_DEF(number/arrivals_shuttle_dock_window) //Time from when a player late joins on the arrivals shuttle to when the shuttle docks on the station + value = 55 + min_val = 30 + +CONFIG_DEF(flag/arrivals_shuttle_require_undocked) //Require the arrivals shuttle to be undocked before latejoiners can join + +CONFIG_DEF(flag/arrivals_shuttle_require_safe_latejoin) //Require the arrivals shuttle to be operational in order for latejoiners to join + +CONFIG_DEF(string/alert_green) + value = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced." + +CONFIG_DEF(string/alert_blue_upto) + value = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted." + +CONFIG_DEF(string/alert_blue_downto) + value = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed." + +CONFIG_DEF(string/alert_red_upto) + value = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised." + +CONFIG_DEF(string/alert_red_downto) + value = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised." + +CONFIG_DEF(string/alert_delta) + value = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill." + +CONFIG_DEF(flag/revival_pod_plants) + +CONFIG_DEF(flag/revival_cloning) + +CONFIG_DEF(number/revival_brain_life) + value = -1 + min_val = -1 + +CONFIG_DEF(flag/rename_cyborg) + +CONFIG_DEF(flag/ooc_during_round) + +CONFIG_DEF(flag/emojis) + +CONFIG_DEF(number/run_delay) //Used for modifying movement speed for mobs. + +CONFIG_DEF(number/walk_delay) + + +CONFIG_DEF(number/human_delay) //Mob specific modifiers. NOTE: These will affect different mob types in different ways +CONFIG_DEF(number/robot_delay) +CONFIG_DEF(number/monkey_delay) +CONFIG_DEF(number/alien_delay) +CONFIG_DEF(number/slime_delay) +CONFIG_DEF(number/animal_delay) + +CONFIG_DEF(number/gateway_delay) //How long the gateway takes before it activates. Default is half an hour. + value = 18000 + min_val = 0 + +CONFIG_DEF(flag/ghost_interaction) + +CONFIG_DEF(flag/silent_ai) +CONFIG_DEF(flag/silent_borg) + +CONFIG_DEF(flag/sandbox_autoclose) // close the sandbox panel after spawning an item, potentially reducing griff + +CONFIG_DEF(number/default_laws) //Controls what laws the AI spawns with. + value = 0 + min_val = 0 + max_val = 3 + +CONFIG_DEF(number/silicon_max_law_amount) + value = 12 + min_val = 0 + +CONFIG_DEF(keyed_flag_list/random_laws) + +CONFIG_DEF(keyed_number_list/law_weight) + splitter = "," + +CONFIG_DEF(number/assistant_cap) + value = -1 + min_val = -1 + +CONFIG_DEF(flag/starlight) +CONFIG_DEF(flag/grey_assistants) + +CONFIG_DEF(number/lavaland_budget) + value = 60 + min_val = 0 + +CONFIG_DEF(number/space_budget) + value = 16 + min_val = 0 + +CONFIG_DEF(flag/allow_random_events) // Enables random events mid-round when set + +CONFIG_DEF(number/events_min_time_mul) // Multipliers for random events minimal starting time and minimal players amounts + value = 1 + min_val = 0 + integer = FALSE + +CONFIG_DEF(number/events_min_players_mul) + value = 1 + min_val = 0 + integer = FALSE + +CONFIG_DEF(number/mice_roundstart) + value = 10 + min_val = 0 + +CONFIG_DEF(number/bombcap) + value = 14 + min_val = 4 + +/datum/config_entry/number/bombcap/ValidateAndSet(str_val) + . = ..() + if(.) + GLOB.MAX_EX_DEVESTATION_RANGE = round(value / 4) + GLOB.MAX_EX_HEAVY_RANGE = round(value / 2) + GLOB.MAX_EX_LIGHT_RANGE = value + GLOB.MAX_EX_FLASH_RANGE = value + GLOB.MAX_EX_FLAME_RANGE = value diff --git a/code/controllers/failsafe.dm b/code/controllers/failsafe.dm index d5298f7dde..2ca208642c 100644 --- a/code/controllers/failsafe.dm +++ b/code/controllers/failsafe.dm @@ -1,102 +1,102 @@ - /** - * Failsafe - * - * Pretty much pokes the MC to make sure it's still alive. - **/ - -GLOBAL_REAL(Failsafe, /datum/controller/failsafe) - -/datum/controller/failsafe // This thing pretty much just keeps poking the master controller - name = "Failsafe" - - // The length of time to check on the MC (in deciseconds). - // Set to 0 to disable. - var/processing_interval = 20 - // The alert level. For every failed poke, we drop a DEFCON level. Once we hit DEFCON 1, restart the MC. - var/defcon = 5 - //the world.time of the last check, so the mc can restart US if we hang. - // (Real friends look out for *eachother*) - var/lasttick = 0 - - // Track the MC iteration to make sure its still on track. - var/master_iteration = 0 - var/running = TRUE - -/datum/controller/failsafe/New() - // Highlander-style: there can only be one! Kill off the old and replace it with the new. - if(Failsafe != src) - if(istype(Failsafe)) - qdel(Failsafe) - Failsafe = src - Initialize() - -/datum/controller/failsafe/Initialize() - set waitfor = 0 - Failsafe.Loop() - if(!QDELETED(src)) - qdel(src) //when Loop() returns, we delete ourselves and let the mc recreate us - -/datum/controller/failsafe/Destroy() - running = FALSE - ..() - return QDEL_HINT_HARDDEL_NOW - -/datum/controller/failsafe/proc/Loop() - while(running) - lasttick = world.time - if(!Master) - // Replace the missing Master! This should never, ever happen. - new /datum/controller/master() - // Only poke it if overrides are not in effect. - if(processing_interval > 0) - if(Master.processing && Master.iteration) - // Check if processing is done yet. - if(Master.iteration == master_iteration) - switch(defcon) - if(4,5) - --defcon - if(3) - to_chat(GLOB.admins, "Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks.") - --defcon - if(2) - to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.") - --defcon - if(1) - - to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting...") - --defcon - var/rtn = Recreate_MC() - if(rtn > 0) - defcon = 4 - master_iteration = 0 - to_chat(GLOB.admins, "MC restarted successfully") - else if(rtn < 0) - log_game("FailSafe: Could not restart MC, runtime encountered. Entering defcon 0") - to_chat(GLOB.admins, "ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.") - //if the return number was 0, it just means the mc was restarted too recently, and it just needs some time before we try again - //no need to handle that specially when defcon 0 can handle it - if(0) //DEFCON 0! (mc failed to restart) - var/rtn = Recreate_MC() - if(rtn > 0) - defcon = 4 - master_iteration = 0 - to_chat(GLOB.admins, "MC restarted successfully") - else - defcon = min(defcon + 1,5) - master_iteration = Master.iteration - if (defcon <= 1) - sleep(processing_interval*2) - else - sleep(processing_interval) - else - defcon = 5 - sleep(initial(processing_interval)) - -/datum/controller/failsafe/proc/defcon_pretty() - return defcon - -/datum/controller/failsafe/stat_entry() - if(!statclick) - statclick = new/obj/effect/statclick/debug(null, "Initializing...", src) - - stat("Failsafe Controller:", statclick.update("Defcon: [defcon_pretty()] (Interval: [Failsafe.processing_interval] | Iteration: [Failsafe.master_iteration])")) + /** + * Failsafe + * + * Pretty much pokes the MC to make sure it's still alive. + **/ + +GLOBAL_REAL(Failsafe, /datum/controller/failsafe) + +/datum/controller/failsafe // This thing pretty much just keeps poking the master controller + name = "Failsafe" + + // The length of time to check on the MC (in deciseconds). + // Set to 0 to disable. + var/processing_interval = 20 + // The alert level. For every failed poke, we drop a DEFCON level. Once we hit DEFCON 1, restart the MC. + var/defcon = 5 + //the world.time of the last check, so the mc can restart US if we hang. + // (Real friends look out for *eachother*) + var/lasttick = 0 + + // Track the MC iteration to make sure its still on track. + var/master_iteration = 0 + var/running = TRUE + +/datum/controller/failsafe/New() + // Highlander-style: there can only be one! Kill off the old and replace it with the new. + if(Failsafe != src) + if(istype(Failsafe)) + qdel(Failsafe) + Failsafe = src + Initialize() + +/datum/controller/failsafe/Initialize() + set waitfor = 0 + Failsafe.Loop() + if(!QDELETED(src)) + qdel(src) //when Loop() returns, we delete ourselves and let the mc recreate us + +/datum/controller/failsafe/Destroy() + running = FALSE + ..() + return QDEL_HINT_HARDDEL_NOW + +/datum/controller/failsafe/proc/Loop() + while(running) + lasttick = world.time + if(!Master) + // Replace the missing Master! This should never, ever happen. + new /datum/controller/master() + // Only poke it if overrides are not in effect. + if(processing_interval > 0) + if(Master.processing && Master.iteration) + // Check if processing is done yet. + if(Master.iteration == master_iteration) + switch(defcon) + if(4,5) + --defcon + if(3) + message_admins("Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks.") + --defcon + if(2) + to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.") + --defcon + if(1) + + to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting...") + --defcon + var/rtn = Recreate_MC() + if(rtn > 0) + defcon = 4 + master_iteration = 0 + to_chat(GLOB.admins, "MC restarted successfully") + else if(rtn < 0) + log_game("FailSafe: Could not restart MC, runtime encountered. Entering defcon 0") + to_chat(GLOB.admins, "ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.") + //if the return number was 0, it just means the mc was restarted too recently, and it just needs some time before we try again + //no need to handle that specially when defcon 0 can handle it + if(0) //DEFCON 0! (mc failed to restart) + var/rtn = Recreate_MC() + if(rtn > 0) + defcon = 4 + master_iteration = 0 + to_chat(GLOB.admins, "MC restarted successfully") + else + defcon = min(defcon + 1,5) + master_iteration = Master.iteration + if (defcon <= 1) + sleep(processing_interval*2) + else + sleep(processing_interval) + else + defcon = 5 + sleep(initial(processing_interval)) + +/datum/controller/failsafe/proc/defcon_pretty() + return defcon + +/datum/controller/failsafe/stat_entry() + if(!statclick) + statclick = new/obj/effect/statclick/debug(null, "Initializing...", src) + + stat("Failsafe Controller:", statclick.update("Defcon: [defcon_pretty()] (Interval: [Failsafe.processing_interval] | Iteration: [Failsafe.master_iteration])")) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 6981748198..6ed3121179 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -169,7 +169,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/start_timeofday = REALTIMEOFDAY // Initialize subsystems. - current_ticklimit = config.tick_limit_mc_init + current_ticklimit = CONFIG_GET(number/tick_limit_mc_init) for (var/datum/controller/subsystem/SS in subsystems) if (SS.flags & SS_NO_INIT) continue @@ -189,7 +189,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new sortTim(subsystems, /proc/cmp_subsystem_display) // Set world options. world.sleep_offline = 1 - world.fps = config.fps + world.fps = CONFIG_GET(number/fps) var/initialized_tod = REALTIMEOFDAY sleep(1) initializations_finished_with_no_players_logged_in = initialized_tod < REALTIMEOFDAY - 10 @@ -422,7 +422,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new // in those cases, so we just let them run) if (queue_node_flags & SS_NO_TICK_CHECK) if (queue_node.tick_usage > TICK_LIMIT_RUNNING - TICK_USAGE && ran_non_ticker) - queue_node.queued_priority += queue_priority_count * 0.10 + queue_node.queued_priority += queue_priority_count * 0.1 queue_priority_count -= queue_node_priority queue_priority_count += queue_node.queued_priority current_tick_budget -= queue_node_priority diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index eee6945c41..e160c132b9 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -69,7 +69,7 @@ can_fire = 0 flags |= SS_NO_FIRE Master.subsystems -= src - + return ..() //Queue it to run. // (we loop thru a linked list until we get to the end or find the right point) diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 8eb7392db8..b5dbabb934 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -164,6 +164,7 @@ SUBSYSTEM_DEF(air) currentrun.len-- if(!M || (M.process_atmos(seconds) == PROCESS_KILL)) atmos_machinery.Remove(M) + M.SendSignal(COMSIG_MACHINE_PROCESS_ATMOS) if(MC_TICK_CHECK) return @@ -321,7 +322,7 @@ SUBSYSTEM_DEF(air) EG.dismantle() CHECK_TICK - var/msg = "HEY! LISTEN! [(world.timeofday - timer)/10] Seconds were wasted processing [starting_ats] turf(s) (connected to [ending_ats] other turfs) with atmos differences at round start." + var/msg = "HEY! LISTEN! [DisplayTimeText(world.timeofday - timer)] were wasted processing [starting_ats] turf(s) (connected to [ending_ats] other turfs) with atmos differences at round start." to_chat(world, "[msg]") warning(msg) @@ -382,4 +383,4 @@ SUBSYSTEM_DEF(air) #undef SSAIR_EXCITEDGROUPS #undef SSAIR_HIGHPRESSURE #undef SSAIR_HOTSPOT -#undef SSAIR_SUPERCONDUCTIVITY +#undef SSAIR_SUPERCONDUCTIVITY \ No newline at end of file diff --git a/code/controllers/subsystem/augury.dm b/code/controllers/subsystem/augury.dm index 32086f52ed..38e9724b5f 100644 --- a/code/controllers/subsystem/augury.dm +++ b/code/controllers/subsystem/augury.dm @@ -14,6 +14,9 @@ SUBSYSTEM_DEF(augury) /datum/controller/subsystem/augury/proc/register_doom(atom/A, severity) doombringers[A] = severity +/datum/controller/subsystem/augury/proc/unregister_doom(atom/A) + doombringers -= A + /datum/controller/subsystem/augury/fire() var/biggest_doom = null var/biggest_threat = null diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index b85e99a0b9..56238d5b85 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -18,16 +18,14 @@ SUBSYSTEM_DEF(blackbox) var/list/msg_other = list() var/list/feedback = list() //list of datum/feedback_variable - var/triggertime = 0 var/sealed = FALSE //time to stop tracking stats? - + /datum/controller/subsystem/blackbox/Initialize() triggertime = world.time . = ..() - //poll population /datum/controller/subsystem/blackbox/fire() if(!SSdbcore.Connect()) @@ -37,16 +35,14 @@ SUBSYSTEM_DEF(blackbox) if(M.client) playercount += 1 var/admincount = GLOB.admins.len - var/datum/DBQuery/query_record_playercount = SSdbcore.NewQuery("INSERT INTO [format_table_name("legacy_population")] (playercount, admincount, time, server_ip, server_port) VALUES ([playercount], [admincount], '[SQLtime()]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]')") + var/datum/DBQuery/query_record_playercount = SSdbcore.NewQuery("INSERT INTO [format_table_name("legacy_population")] (playercount, admincount, time, server_ip, server_port, round_id) VALUES ([playercount], [admincount], '[SQLtime()]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', '[GLOB.round_id]')") query_record_playercount.Execute() - - - if(config.use_exp_tracking) + + if(CONFIG_GET(flag/use_exp_tracking)) if((triggertime < 0) || (world.time > (triggertime +3000))) //subsystem fires once at roundstart then once every 10 minutes. a 5 min check skips the first fire. The <0 is midnight rollover check update_exp(10,FALSE) - /datum/controller/subsystem/blackbox/Recover() msg_common = SSblackbox.msg_common msg_science = SSblackbox.msg_science @@ -189,8 +185,7 @@ SUBSYSTEM_DEF(blackbox) return if(!L || !L.key || !L.mind) return - var/turf/T = get_turf(L) - var/area/placeofdeath = get_area(T.loc) + var/area/placeofdeath = get_area(L) var/sqlname = sanitizeSQL(L.real_name) var/sqlkey = sanitizeSQL(L.ckey) var/sqljob = sanitizeSQL(L.mind.assigned_role) @@ -212,8 +207,10 @@ SUBSYSTEM_DEF(blackbox) var/x_coord = sanitizeSQL(L.x) var/y_coord = sanitizeSQL(L.y) var/z_coord = sanitizeSQL(L.z) + var/last_words = sanitizeSQL(L.last_words) + var/suicide = sanitizeSQL(L.suiciding) var/map = sanitizeSQL(SSmapping.config.map_name) - var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (pod, x_coord, y_coord, z_coord, mapname, server_ip, server_port, round_id, tod, job, special, name, byondkey, laname, lakey, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss) VALUES ('[sqlpod]', '[x_coord]', '[y_coord]', '[z_coord]', '[map]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', [GLOB.round_id], '[SQLtime()]', '[sqljob]', '[sqlspecial]', '[sqlname]', '[sqlkey]', '[laname]', '[lakey]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina])") + var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (pod, x_coord, y_coord, z_coord, mapname, server_ip, server_port, round_id, tod, job, special, name, byondkey, laname, lakey, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, last_words, suicide) VALUES ('[sqlpod]', '[x_coord]', '[y_coord]', '[z_coord]', '[map]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', [GLOB.round_id], '[SQLtime()]', '[sqljob]', '[sqlspecial]', '[sqlname]', '[sqlkey]', '[laname]', '[lakey]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[last_words]', [suicide])") query_report_death.Execute() /datum/controller/subsystem/blackbox/proc/Seal() @@ -229,7 +226,7 @@ SUBSYSTEM_DEF(blackbox) /datum/feedback_variable var/variable var/value - var/details + var/list/details /datum/feedback_variable/New(param_variable, param_value = 0) variable = param_variable @@ -267,19 +264,17 @@ SUBSYSTEM_DEF(blackbox) /datum/feedback_variable/proc/get_variable() return variable -/datum/feedback_variable/proc/set_details(text) - if (istext(text)) - details = text +/datum/feedback_variable/proc/set_details(deets) + details = list("\"[deets]\"") -/datum/feedback_variable/proc/add_details(text) - if (istext(text)) - if (!details) - details = "\"[text]\"" - else - details += " | \"[text]\"" +/datum/feedback_variable/proc/add_details(deets) + if (!details) + set_details(deets) + else + details += "\"[deets]\"" /datum/feedback_variable/proc/get_details() - return details + return details ? details.Join(" | ") : null /datum/feedback_variable/proc/get_parsed() - return list(variable,value,details) \ No newline at end of file + return list(variable,value,details.Join(" | ")) diff --git a/code/controllers/subsystem/blackbox.dm.rej b/code/controllers/subsystem/blackbox.dm.rej deleted file mode 100644 index 5bd713172b..0000000000 --- a/code/controllers/subsystem/blackbox.dm.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm (rejected hunks) -@@ -40,7 +40,7 @@ SUBSYSTEM_DEF(blackbox) - - if(config.use_exp_tracking) - if((triggertime < 0) || (world.time > (triggertime +3000))) //subsystem fires once at roundstart then once every 10 minutes. a 5 min check skips the first fire. The <0 is midnight rollover check -- SSblackbox.update_exp(10,FALSE) -+ update_exp(10,FALSE) - - - /datum/controller/subsystem/blackbox/Recover() diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index 864274b8fb..12a5342e33 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -54,32 +54,27 @@ SUBSYSTEM_DEF(dbcore) if(failed_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to connect anymore. return FALSE - if(!config.sql_enabled) + if(!CONFIG_GET(flag/sql_enabled)) return FALSE - var/user = global.sqlfdbklogin - var/pass = global.sqlfdbkpass - var/db = global.sqlfdbkdb - var/address = global.sqladdress - var/port = global.sqlport + var/user = CONFIG_GET(string/feedback_login) + var/pass = CONFIG_GET(string/feedback_password) + var/db = CONFIG_GET(string/feedback_database) + var/address = CONFIG_GET(string/address) + var/port = CONFIG_GET(number/port) - doConnect("dbi:mysql:[db]:[address]:[port]", user, pass) + _dm_db_connect(_db_con, "dbi:mysql:[db]:[address]:[port]", user, pass, Default_Cursor, null) . = IsConnected() if (!.) log_sql("Connect() failed | [ErrorMsg()]") ++failed_connections -/datum/controller/subsystem/dbcore/proc/doConnect(dbi_handler, user_handler, password_handler) - if(!config.sql_enabled) - return FALSE - return _dm_db_connect(_db_con, dbi_handler, user_handler, password_handler, Default_Cursor, null) - /datum/controller/subsystem/dbcore/proc/Disconnect() failed_connections = 0 return _dm_db_close(_db_con) /datum/controller/subsystem/dbcore/proc/IsConnected() - if(!config.sql_enabled) + if(!CONFIG_GET(flag/sql_enabled)) return FALSE return _dm_db_is_connected(_db_con) @@ -87,7 +82,7 @@ SUBSYSTEM_DEF(dbcore) return _dm_db_quote(_db_con, str) /datum/controller/subsystem/dbcore/proc/ErrorMsg() - if(!config.sql_enabled) + if(!CONFIG_GET(flag/sql_enabled)) return "Database disabled by configuration" return _dm_db_error_msg(_db_con) diff --git a/code/controllers/subsystem/disease.dm b/code/controllers/subsystem/disease.dm index c75063c256..327ba95196 100644 --- a/code/controllers/subsystem/disease.dm +++ b/code/controllers/subsystem/disease.dm @@ -14,3 +14,10 @@ SUBSYSTEM_DEF(disease) /datum/controller/subsystem/disease/stat_entry(msg) ..("P:[active_diseases.len]") + +/datum/controller/subsystem/disease/proc/get_disease_name(id) + var/datum/disease/advance/A = archive_diseases[id] + if(A.name) + return A.name + else + return "Unknown" diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index c41f422575..f435d7e819 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -56,7 +56,7 @@ SUBSYSTEM_DEF(events) //selects a random event based on whether it can occur and it's 'weight'(probability) /datum/controller/subsystem/events/proc/spawnEvent() set waitfor = FALSE //for the admin prompt - if(!config.allow_random_events) + if(!CONFIG_GET(flag/allow_random_events)) // var/datum/round_event_control/E = locate(/datum/round_event_control/dust) in control // if(E) E.runEvent() return @@ -116,6 +116,8 @@ SUBSYSTEM_DEF(events) //allows a client to trigger an event //aka Badmin Central +// > Not in modules/admin +// REEEEEEEEE /client/proc/forceEvent() set name = "Trigger Event" set category = "Fun" @@ -131,7 +133,7 @@ SUBSYSTEM_DEF(events) var/magic = "" var/holiday = "" for(var/datum/round_event_control/E in SSevents.control) - dat = "
    [E]" + dat = "
    [E]" if(E.holidayID) holiday += dat else if(E.wizardevent) @@ -169,7 +171,7 @@ SUBSYSTEM_DEF(events) //sets up the holidays and holidays list /datum/controller/subsystem/events/proc/getHoliday() - if(!config.allow_holidays) + if(!CONFIG_GET(flag/allow_holidays)) return // Holiday stuff was not enabled in the config! var/YY = text2num(time2text(world.timeofday, "YY")) // get the current year diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 8502280aaf..d202c08d39 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -1,40 +1,44 @@ SUBSYSTEM_DEF(garbage) name = "Garbage" priority = 15 - wait = 20 + wait = 2 SECONDS flags = SS_POST_FIRE_TIMING|SS_BACKGROUND|SS_NO_INIT runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY - var/collection_timeout = 3000// deciseconds to wait to let running procs finish before we just say fuck it and force del() the object - var/delslasttick = 0 // number of del()'s we've done this tick - var/gcedlasttick = 0 // number of things that gc'ed last tick + var/list/collection_timeout = list(0, 2 MINUTES, 10 SECONDS) // deciseconds to wait before moving something up in the queue to the next level + + //Stat tracking + var/delslasttick = 0 // number of del()'s we've done this tick + var/gcedlasttick = 0 // number of things that gc'ed last tick var/totaldels = 0 var/totalgcs = 0 var/highest_del_time = 0 var/highest_del_tickusage = 0 - var/list/queue = list() // list of refID's of things that should be garbage collected - // refID's are associated with the time at which they time out and need to be manually del() - // we do this so we aren't constantly locating them and preventing them from being gc'd + var/list/pass_counts + var/list/fail_counts - var/list/tobequeued = list() //We store the references of things to be added to the queue separately so we can spread out GC overhead over a few ticks + var/list/items = list() // Holds our qdel_item statistics datums - var/list/didntgc = list() // list of all types that have failed to GC associated with the number of times that's happened. - // the types are stored as strings - var/list/sleptDestroy = list() //Same as above but these are paths that slept during their Destroy call + //Queue + var/list/queues - var/list/noqdelhint = list()// list of all types that do not return a QDEL_HINT - // all types that did not respect qdel(A, force=TRUE) and returned one - // of the immortality qdel hints - var/list/noforcerespect = list() -#ifdef TESTING - var/list/qdel_list = list() // list of all types that have been qdel()eted -#endif +/datum/controller/subsystem/garbage/PreInit() + queues = new(GC_QUEUE_COUNT) + pass_counts = new(GC_QUEUE_COUNT) + fail_counts = new(GC_QUEUE_COUNT) + for(var/i in 1 to GC_QUEUE_COUNT) + queues[i] = list() + pass_counts[i] = 0 + fail_counts[i] = 0 /datum/controller/subsystem/garbage/stat_entry(msg) - msg += "Q:[queue.len]|D:[delslasttick]|G:[gcedlasttick]|" + var/list/counts = list() + for (var/list/L in queues) + counts += length(L) + msg += "Q:[counts.Join(",")]|D:[delslasttick]|G:[gcedlasttick]|" msg += "GR:" if (!(delslasttick+gcedlasttick)) msg += "n/a|" @@ -46,116 +50,179 @@ SUBSYSTEM_DEF(garbage) msg += "n/a|" else msg += "TGR:[round((totalgcs/(totaldels+totalgcs))*100, 0.01)]%" + msg += " P:[pass_counts.Join(",")]" + msg += "|F:[fail_counts.Join(",")]" ..(msg) /datum/controller/subsystem/garbage/Shutdown() - //Adds the del() log to world.log in a format condensable by the runtime condenser found in tools - if(didntgc.len || sleptDestroy.len) - var/list/dellog = list() - for(var/path in didntgc) - dellog += "Path : [path] \n" - dellog += "Failures : [didntgc[path]] \n" - if(path in sleptDestroy) - dellog += "Sleeps : [sleptDestroy[path]] \n" - sleptDestroy -= path - for(var/path in sleptDestroy) - dellog += "Path : [path] \n" - dellog += "Sleeps : [sleptDestroy[path]] \n" - text2file(dellog.Join(), "[GLOB.log_directory]/qdel.log") + //Adds the del() log to the qdel log file + var/list/dellog = list() + + //sort by how long it's wasted hard deleting + sortTim(items, cmp=/proc/cmp_qdel_item_time, associative = TRUE) + for(var/path in items) + var/datum/qdel_item/I = items[path] + dellog += "Path: [path]" + if (I.failures) + dellog += "\tFailures: [I.failures]" + dellog += "\tqdel() Count: [I.qdels]" + dellog += "\tDestroy() Cost: [I.destroy_time]ms" + if (I.hard_deletes) + dellog += "\tTotal Hard Deletes [I.hard_deletes]" + dellog += "\tTime Spent Hard Deleting: [I.hard_delete_time]ms" + if (I.slept_destroy) + dellog += "\tSleeps: [I.slept_destroy]" + if (I.no_respect_force) + dellog += "\tIgnored force: [I.no_respect_force] times" + if (I.no_hint) + dellog += "\tNo hint: [I.no_hint] times" + log_qdel(dellog.Join("\n")) /datum/controller/subsystem/garbage/fire() - HandleToBeQueued() - if(state == SS_RUNNING) - HandleQueue() - + //the fact that this resets its processing each fire (rather then resume where it left off) is intentional. + var/queue = GC_QUEUE_PREQUEUE + + while (state == SS_RUNNING) + switch (queue) + if (GC_QUEUE_PREQUEUE) + HandlePreQueue() + queue = GC_QUEUE_PREQUEUE+1 + if (GC_QUEUE_CHECK) + HandleQueue(GC_QUEUE_CHECK) + queue = GC_QUEUE_CHECK+1 + if (GC_QUEUE_HARDDELETE) + HandleQueue(GC_QUEUE_HARDDELETE) + break + if (state == SS_PAUSED) //make us wait again before the next run. - state = SS_RUNNING + state = SS_RUNNING //If you see this proc high on the profile, what you are really seeing is the garbage collection/soft delete overhead in byond. //Don't attempt to optimize, not worth the effort. -/datum/controller/subsystem/garbage/proc/HandleToBeQueued() - var/list/tobequeued = src.tobequeued - var/starttime = world.time - var/starttimeofday = world.timeofday - while(tobequeued.len && starttime == world.time && starttimeofday == world.timeofday) - if (MC_TICK_CHECK) - break - var/ref = tobequeued[1] - Queue(ref) - tobequeued.Cut(1, 2) +/datum/controller/subsystem/garbage/proc/HandlePreQueue() + var/list/tobequeued = queues[GC_QUEUE_PREQUEUE] + var/static/count = 0 + if (count) + var/c = count + count = 0 //so if we runtime on the Cut, we don't try again. + tobequeued.Cut(1,c+1) -/datum/controller/subsystem/garbage/proc/HandleQueue() - delslasttick = 0 - gcedlasttick = 0 - var/time_to_kill = world.time - collection_timeout // Anything qdel() but not GC'd BEFORE this time needs to be manually del() - var/list/queue = src.queue - var/starttime = world.time - var/starttimeofday = world.timeofday - while(queue.len && starttime == world.time && starttimeofday == world.timeofday) + for (var/ref in tobequeued) + count++ + Queue(ref, GC_QUEUE_PREQUEUE+1) if (MC_TICK_CHECK) break - var/refID = queue[1] + if (count) + tobequeued.Cut(1,count+1) + count = 0 + +/datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_CHECK) + if (level == GC_QUEUE_CHECK) + delslasttick = 0 + gcedlasttick = 0 + var/cut_off_time = world.time - collection_timeout[level] //ignore entries newer then this + var/list/queue = queues[level] + var/static/lastlevel + var/static/count = 0 + if (count) //runtime last run before we could do this. + var/c = count + count = 0 //so if we runtime on the Cut, we don't try again. + var/list/lastqueue = queues[lastlevel] + lastqueue.Cut(1, c+1) + + lastlevel = level + + for (var/refID in queue) if (!refID) - queue.Cut(1, 2) + count++ + if (MC_TICK_CHECK) + break continue var/GCd_at_time = queue[refID] - if(GCd_at_time > time_to_kill) + if(GCd_at_time > cut_off_time) break // Everything else is newer, skip them - queue.Cut(1, 2) - var/datum/A - A = locate(refID) - if (A && A.gc_destroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake - #ifdef GC_FAILURE_HARD_LOOKUP - A.find_references() - #endif + count++ - // Something's still referring to the qdel'd object. Kill it. - var/type = A.type - testing("GC: -- \ref[A] | [type] was unable to be GC'd and was deleted --") - didntgc["[type]"]++ - - HardDelete(A) + var/datum/D + D = locate(refID) - ++delslasttick - ++totaldels - else + if (!D || D.gc_destroyed != GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake ++gcedlasttick ++totalgcs + pass_counts[level]++ + if (MC_TICK_CHECK) + break + continue -/datum/controller/subsystem/garbage/proc/QueueForQueuing(datum/A) - if (istype(A) && A.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) - tobequeued += A - A.gc_destroyed = GC_QUEUED_FOR_QUEUING + // Something's still referring to the qdel'd object. + fail_counts[level]++ + switch (level) + if (GC_QUEUE_CHECK) + #ifdef GC_FAILURE_HARD_LOOKUP + D.find_references() + #endif + var/type = D.type + var/datum/qdel_item/I = items[type] + testing("GC: -- \ref[D] | [type] was unable to be GC'd --") + I.failures++ + if (GC_QUEUE_HARDDELETE) + HardDelete(D) + if (MC_TICK_CHECK) + break + continue -/datum/controller/subsystem/garbage/proc/Queue(datum/A) - if (isnull(A) || (!isnull(A.gc_destroyed) && A.gc_destroyed >= 0)) + Queue(D, level+1) + + if (MC_TICK_CHECK) + break + if (count) + queue.Cut(1,count+1) + count = 0 + +/datum/controller/subsystem/garbage/proc/PreQueue(datum/D) + if (D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) + queues[GC_QUEUE_PREQUEUE] += D + D.gc_destroyed = GC_QUEUED_FOR_QUEUING + +/datum/controller/subsystem/garbage/proc/Queue(datum/D, level = GC_QUEUE_CHECK) + if (isnull(D)) return - if (A.gc_destroyed == GC_QUEUED_FOR_HARD_DEL) - HardDelete(A) + if (D.gc_destroyed == GC_QUEUED_FOR_HARD_DEL) + level = GC_QUEUE_HARDDELETE + if (level > GC_QUEUE_COUNT) + HardDelete(D) return var/gctime = world.time - var/refid = "\ref[A]" - - A.gc_destroyed = gctime + var/refid = "\ref[D]" + D.gc_destroyed = gctime + var/list/queue = queues[level] if (queue[refid]) queue -= refid // Removing any previous references that were GC'd so that the current object will be at the end of the list. queue[refid] = gctime -//this is purely to separate things profile wise. -/datum/controller/subsystem/garbage/proc/HardDelete(datum/A) +//this is mainly to separate things profile wise. +/datum/controller/subsystem/garbage/proc/HardDelete(datum/D) var/time = world.timeofday var/tick = TICK_USAGE var/ticktime = world.time - - var/type = A.type - var/refID = "\ref[A]" - - del(A) - + ++delslasttick + ++totaldels + var/type = D.type + var/refID = "\ref[D]" + + del(D) + tick = (TICK_USAGE-tick+((world.time-ticktime)/world.tick_lag*100)) + + var/datum/qdel_item/I = items[type] + + I.hard_deletes++ + I.hard_delete_time += TICK_DELTA_TO_MS(tick) + + if (tick > highest_del_tickusage) highest_del_tickusage = tick time = world.timeofday - time @@ -166,18 +233,33 @@ SUBSYSTEM_DEF(garbage) if (time > 10) log_game("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete)") message_admins("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete).") - postpone(time/5) - -/datum/controller/subsystem/garbage/proc/HardQueue(datum/A) - if (istype(A) && A.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) - tobequeued += A - A.gc_destroyed = GC_QUEUED_FOR_HARD_DEL + postpone(time) + +/datum/controller/subsystem/garbage/proc/HardQueue(datum/D) + if (D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) + queues[GC_QUEUE_PREQUEUE] += D + D.gc_destroyed = GC_QUEUED_FOR_HARD_DEL /datum/controller/subsystem/garbage/Recover() - if (istype(SSgarbage.queue)) - queue |= SSgarbage.queue - if (istype(SSgarbage.tobequeued)) - tobequeued |= SSgarbage.tobequeued + if (istype(SSgarbage.queues)) + for (var/i in 1 to SSgarbage.queues.len) + queues[i] |= SSgarbage.queues[i] + + +/datum/qdel_item + var/name = "" + var/qdels = 0 //Total number of times it's passed thru qdel. + var/destroy_time = 0 //Total amount of milliseconds spent processing this type's Destroy() + var/failures = 0 //Times it was queued for soft deletion but failed to soft delete. + var/hard_deletes = 0 //Different from failures because it also includes QDEL_HINT_HARDDEL deletions + var/hard_delete_time = 0//Total amount of milliseconds spent hard deleting this type. + var/no_respect_force = 0//Number of times it's not respected force=TRUE + var/no_hint = 0 //Number of times it's not even bother to give a qdel hint + var/slept_destroy = 0 //Number of times it's slept in its destroy + +/datum/qdel_item/New(mytype) + name = "[mytype]" + // Should be treated as a replacement for the 'del' keyword. // Datums passed to this will be given a chance to clean up references to allow the GC to collect them. @@ -185,21 +267,27 @@ SUBSYSTEM_DEF(garbage) if(!istype(D)) del(D) return -#ifdef TESTING - SSgarbage.qdel_list += "[D.type]" -#endif + var/datum/qdel_item/I = SSgarbage.items[D.type] + if (!I) + I = SSgarbage.items[D.type] = new /datum/qdel_item(D.type) + I.qdels++ + + if(isnull(D.gc_destroyed)) D.SendSignal(COMSIG_PARENT_QDELETED) D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED var/start_time = world.time + var/start_tick = world.tick_usage var/hint = D.Destroy(force) // Let our friend know they're about to get fucked up. if(world.time != start_time) - SSgarbage.sleptDestroy["[D.type]"]++ + I.slept_destroy++ + else + I.destroy_time += TICK_USAGE_TO_MS(start_tick) if(!D) return switch(hint) if (QDEL_HINT_QUEUE) //qdel should queue the object for deletion. - SSgarbage.QueueForQueuing(D) + SSgarbage.PreQueue(D) if (QDEL_HINT_IWILLGC) D.gc_destroyed = world.time return @@ -209,28 +297,33 @@ SUBSYSTEM_DEF(garbage) return // Returning LETMELIVE after being told to force destroy // indicates the objects Destroy() does not respect force - if(!SSgarbage.noforcerespect["[D.type]"]) - SSgarbage.noforcerespect["[D.type]"] = "[D.type]" + #ifdef TESTING + if(!I.no_respect_force) testing("WARNING: [D.type] has been force deleted, but is \ returning an immortal QDEL_HINT, indicating it does \ not respect the force flag for qdel(). It has been \ placed in the queue, further instances of this type \ will also be queued.") - SSgarbage.QueueForQueuing(D) + #endif + I.no_respect_force++ + + SSgarbage.PreQueue(D) if (QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete using a hard reference to save time from the locate() SSgarbage.HardQueue(D) if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. SSgarbage.HardDelete(D) if (QDEL_HINT_FINDREFERENCE)//qdel will, if TESTING is enabled, display all references to this object, then queue the object for deletion. - SSgarbage.QueueForQueuing(D) + SSgarbage.PreQueue(D) #ifdef TESTING D.find_references() #endif else - if(!SSgarbage.noqdelhint["[D.type]"]) - SSgarbage.noqdelhint["[D.type]"] = "[D.type]" + #ifdef TESTING + if(!I.no_hint) testing("WARNING: [D.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.") - SSgarbage.QueueForQueuing(D) + #endif + I.no_hint++ + SSgarbage.PreQueue(D) else if(D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) CRASH("[D.type] destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic") @@ -281,15 +374,6 @@ SUBSYSTEM_DEF(garbage) SSgarbage.can_fire = 1 SSgarbage.next_fire = world.time + world.tick_lag -/client/verb/purge_all_destroyed_objects() - set category = "Debug" - while(SSgarbage.queue.len) - var/datum/o = locate(SSgarbage.queue[1]) - if(istype(o) && o.gc_destroyed) - del(o) - SSgarbage.totaldels++ - SSgarbage.queue.Cut(1, 2) - /datum/verb/qdel_then_find_references() set category = "Debug" set name = "qdel() then Find References" @@ -300,24 +384,6 @@ SUBSYSTEM_DEF(garbage) if(!running_find_references) find_references(TRUE) -/client/verb/show_qdeleted() - set category = "Debug" - set name = "Show qdel() Log" - set desc = "Render the qdel() log and display it" - - var/dat = "List of things that have been qdel()eted this round

    " - - var/tmplist = list() - for(var/elem in SSgarbage.qdel_list) - if(!(elem in tmplist)) - tmplist[elem] = 0 - tmplist[elem]++ - - for(var/path in tmplist) - dat += "[path] - [tmplist[path]] times
    " - - usr << browse(dat, "window=qdeletedlog") - /datum/proc/DoSearchVar(X, Xname) if(usr && usr.client && !usr.client.running_find_references) return if(istype(X, /datum)) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index d64739698a..1eb6c75cc5 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -16,7 +16,7 @@ SUBSYSTEM_DEF(job) /datum/controller/subsystem/job/Initialize(timeofday) if(!occupations.len) SetupOccupations() - if(config.load_jobs_from_txt) + if(CONFIG_GET(flag/load_jobs_from_txt)) LoadJobs() ..() @@ -106,7 +106,7 @@ SUBSYSTEM_DEF(job) if(player.mind && job.title in player.mind.restricted_roles) Debug("FOC incompatible with antagonist role, Player: [player]") continue - if(config.enforce_human_authority && !player.client.prefs.pref_species.qualifies_for_rank(job.title, player.client.prefs.features)) + if(CONFIG_GET(flag/enforce_human_authority) && !player.client.prefs.pref_species.qualifies_for_rank(job.title, player.client.prefs.features)) Debug("FOC non-human failed, Player: [player]") continue if(player.client.prefs.GetJobDepartment(job, level) & job.flag) @@ -143,7 +143,7 @@ SUBSYSTEM_DEF(job) Debug("GRJ incompatible with antagonist role, Player: [player], Job: [job.title]") continue - if(config.enforce_human_authority && !player.client.prefs.pref_species.qualifies_for_rank(job.title, player.client.prefs.features)) + if(CONFIG_GET(flag/enforce_human_authority) && !player.client.prefs.pref_species.qualifies_for_rank(job.title, player.client.prefs.features)) Debug("GRJ non-human failed, Player: [player]") continue @@ -245,11 +245,12 @@ SUBSYSTEM_DEF(job) setup_officer_positions() //Jobs will have fewer access permissions if the number of players exceeds the threshold defined in game_options.txt - if(config.minimal_access_threshold) - if(config.minimal_access_threshold > unassigned.len) - config.jobs_have_minimal_access = 0 + var/mat = CONFIG_GET(number/minimal_access_threshold) + if(mat) + if(mat > unassigned.len) + CONFIG_SET(flag/jobs_have_minimal_access, FALSE) else - config.jobs_have_minimal_access = 1 + CONFIG_SET(flag/jobs_have_minimal_access, TRUE) //Shuffle players and jobs unassigned = shuffle(unassigned) @@ -317,7 +318,7 @@ SUBSYSTEM_DEF(job) Debug("DO incompatible with antagonist role, Player: [player], Job:[job.title]") continue - if(config.enforce_human_authority && !player.client.prefs.pref_species.qualifies_for_rank(job.title, player.client.prefs.features)) + if(CONFIG_GET(flag/enforce_human_authority) && !player.client.prefs.pref_species.qualifies_for_rank(job.title, player.client.prefs.features)) Debug("DO non-human failed, Player: [player], Job:[job.title]") continue @@ -415,8 +416,8 @@ SUBSYSTEM_DEF(job) to_chat(M, "To speak on your departments radio, use the :h button. To see others, look closely at your headset.") if(job.req_admin_notify) to_chat(M, "You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp.") - if(config.minimal_access_threshold) - to_chat(M, "As this station was initially staffed with a [config.jobs_have_minimal_access ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.") + if(CONFIG_GET(number/minimal_access_threshold)) + to_chat(M, "As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.") if(job && H) job.after_spawn(H, M) @@ -429,9 +430,10 @@ SUBSYSTEM_DEF(job) if(!J) throw EXCEPTION("setup_officer_positions(): Security officer job is missing") - if(config.security_scaling_coeff > 0) + var/ssc = CONFIG_GET(number/security_scaling_coeff) + if(ssc > 0) if(J.spawn_positions > 0) - var/officer_positions = min(12, max(J.spawn_positions, round(unassigned.len/config.security_scaling_coeff))) //Scale between configured minimum and 12 officers + var/officer_positions = min(12, max(J.spawn_positions, round(unassigned.len / ssc))) //Scale between configured minimum and 12 officers Debug("Setting open security officer positions to [officer_positions]") J.total_positions = officer_positions J.spawn_positions = officer_positions @@ -491,8 +493,10 @@ SUBSYSTEM_DEF(job) SSblackbox.add_details("job_preferences",tmp_str) /datum/controller/subsystem/job/proc/PopcapReached() - if(config.hard_popcap || config.extreme_popcap) - var/relevent_cap = max(config.hard_popcap, config.extreme_popcap) + var/hpc = CONFIG_GET(number/hard_popcap) + var/epc = CONFIG_GET(number/extreme_popcap) + if(hpc || epc) + var/relevent_cap = max(hpc, epc) if((initial_players_to_assign - unassigned.len) >= relevent_cap) return 1 return 0 diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index 78e8b150c3..989c5b43c4 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -16,7 +16,7 @@ SUBSYSTEM_DEF(lighting) /datum/controller/subsystem/lighting/Initialize(timeofday) if(!initialized) - if (config.starlight) + if (CONFIG_GET(flag/starlight)) for(var/I in GLOB.sortedAreas) var/area/A = I if (A.dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT) diff --git a/code/controllers/subsystem/machines.dm b/code/controllers/subsystem/machines.dm index eab61d4ef9..db6af6d686 100644 --- a/code/controllers/subsystem/machines.dm +++ b/code/controllers/subsystem/machines.dm @@ -40,6 +40,7 @@ SUBSYSTEM_DEF(machines) var/obj/machinery/thing = currentrun[currentrun.len] currentrun.len-- if(!QDELETED(thing) && thing.process(seconds) != PROCESS_KILL) + thing.SendSignal(COMSIG_MACHINE_PROCESS) if(thing.use_power) thing.auto_use_power() //add back the power state else @@ -61,4 +62,4 @@ SUBSYSTEM_DEF(machines) if (istype(SSmachines.processing)) processing = SSmachines.processing if (istype(SSmachines.powernets)) - powernets = SSmachines.powernets + powernets = SSmachines.powernets \ No newline at end of file diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 2c36e10d31..ab2ba54431 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -43,19 +43,19 @@ SUBSYSTEM_DEF(mapping) loading_ruins = TRUE var/mining_type = config.minetype if (mining_type == "lavaland") - seedRuins(list(ZLEVEL_LAVALAND), global.config.lavaland_budget, /area/lavaland/surface/outdoors/unexplored, lava_ruins_templates) + seedRuins(list(ZLEVEL_LAVALAND), CONFIG_GET(number/lavaland_budget), /area/lavaland/surface/outdoors/unexplored, lava_ruins_templates) spawn_rivers() // deep space ruins var/space_zlevels = list() for(var/i in ZLEVEL_SPACEMIN to ZLEVEL_SPACEMAX) switch(i) - if(ZLEVEL_MINING, ZLEVEL_LAVALAND, ZLEVEL_EMPTY_SPACE, ZLEVEL_TRANSIT) + if(ZLEVEL_MINING, ZLEVEL_LAVALAND, ZLEVEL_EMPTY_SPACE, ZLEVEL_TRANSIT, ZLEVEL_CITYOFCOGS) continue else space_zlevels += i - seedRuins(space_zlevels, global.config.space_budget, /area/space, space_ruins_templates) + seedRuins(space_zlevels, CONFIG_GET(number/space_budget), /area/space, space_ruins_templates) loading_ruins = FALSE repopulate_sorted_areas() // Set up Z-level transistions. @@ -117,7 +117,7 @@ SUBSYSTEM_DEF(mapping) var/start_time = REALTIMEOFDAY INIT_ANNOUNCE("Loading [config.map_name]...") - TryLoadZ(config.GetFullMapPath(), FailedZs, ZLEVEL_STATION) + TryLoadZ(config.GetFullMapPath(), FailedZs, ZLEVEL_STATION_PRIMARY) INIT_ANNOUNCE("Loaded station in [(REALTIMEOFDAY - start_time)/10]s!") if(SSdbcore.Connect()) var/datum/DBQuery/query_round_map_name = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET map_name = '[config.map_name]' WHERE id = [GLOB.round_id]") @@ -141,7 +141,8 @@ SUBSYSTEM_DEF(mapping) var/players = GLOB.clients.len var/list/mapvotes = list() //count votes - if(global.config.allow_map_voting) + var/amv = CONFIG_GET(flag/allow_map_voting) + if(amv) for (var/client/c in GLOB.clients) var/vote = c.prefs.preferred_map if (!vote) @@ -174,7 +175,7 @@ SUBSYSTEM_DEF(mapping) mapvotes.Remove(map) continue - if(global.config.allow_map_voting) + if(amv) mapvotes[map] = mapvotes[map]*VM.voteweight var/pickedmap = pickweight(mapvotes) diff --git a/code/controllers/subsystem/minimap.dm b/code/controllers/subsystem/minimap.dm index 10c6f8e5c4..463b82b13e 100644 --- a/code/controllers/subsystem/minimap.dm +++ b/code/controllers/subsystem/minimap.dm @@ -5,11 +5,11 @@ SUBSYSTEM_DEF(minimap) var/const/MINIMAP_SIZE = 2048 var/const/TILE_SIZE = 8 - var/list/z_levels = list(ZLEVEL_STATION) + var/list/z_levels = list(ZLEVEL_STATION_PRIMARY) /datum/controller/subsystem/minimap/Initialize(timeofday) var/hash = md5(SSmapping.config.GetFullMapPath()) - if(config.generate_minimaps) + if(CONFIG_GET(flag/generate_minimaps)) if(hash == trim(file2text(hash_path()))) for(var/z in z_levels) //We have these files cached, let's register them register_asset("minimap_[z].png", fcopy_rsc(map_path(z))) diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index 0137953a65..22d0315487 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -8,7 +8,7 @@ SUBSYSTEM_DEF(persistence) var/list/obj/structure/chisel_message/chisel_messages = list() var/list/saved_messages = list() - + var/list/saved_modes = list(1,2,3) var/list/saved_trophies = list() /datum/controller/subsystem/persistence/Initialize() @@ -16,53 +16,60 @@ SUBSYSTEM_DEF(persistence) LoadPoly() LoadChiselMessages() LoadTrophies() + LoadRecentModes() ..() /datum/controller/subsystem/persistence/proc/LoadSatchels() var/placed_satchel = 0 var/path - var/obj/item/storage/backpack/satchel/flat/F = new() - if(fexists("data/npc_saves/SecretSatchels.sav")) //legacy compatability to convert old format to new + if(fexists("data/npc_saves/SecretSatchels.sav")) //legacy conversion. Will only ever run once. var/savefile/secret_satchels = new /savefile("data/npc_saves/SecretSatchels.sav") - var/sav_text - secret_satchels[SSmapping.config.map_name] >> sav_text - fdel("data/npc_saves/SecretSatchels.sav") - if(sav_text) - old_secret_satchels = splittext(sav_text,"#") - if(old_secret_satchels.len >= 20) - var/satchel_string = pick_n_take(old_secret_satchels) + for(var/map in secret_satchels) + var/json_file = file("data/npc_saves/SecretSatchels[map].json") + var/list/legacy_secret_satchels = splittext(secret_satchels[map],"#") + var/list/satchels = list() + for(var/i=1,i<=legacy_secret_satchels.len,i++) + var/satchel_string = legacy_secret_satchels[i] var/list/chosen_satchel = splittext(satchel_string,"|") if(chosen_satchel.len == 3) - F.x = text2num(chosen_satchel[1]) - F.y = text2num(chosen_satchel[2]) - F.z = ZLEVEL_STATION - path = text2path(chosen_satchel[3]) - else - var/json_file = file("data/npc_saves/SecretSatchels[SSmapping.config.map_name].json") - if(!fexists(json_file)) - return - var/list/json = list() + var/list/data = list() + data["x"] = text2num(chosen_satchel[1]) + data["y"] = text2num(chosen_satchel[2]) + data["saved_obj"] = chosen_satchel[3] + satchels += list(data) + var/list/file_data = list() + file_data["data"] = satchels + WRITE_FILE(json_file, json_encode(file_data)) + fdel("data/npc_saves/SecretSatchels.sav") + + var/json_file = file("data/npc_saves/SecretSatchels[SSmapping.config.map_name].json") + var/list/json = list() + if(fexists(json_file)) json = json_decode(file2text(json_file)) - old_secret_satchels = json["data"] - if(old_secret_satchels.len) - if(old_secret_satchels.len >= 20) //guards against low drop pools assuring that one player cannot reliably find his own gear. - var/pos = rand(1, old_secret_satchels.len) - old_secret_satchels.Cut(pos, pos+1) - F.x = old_secret_satchels[pos]["x"] - F.y = old_secret_satchels[pos]["y"] - F.z = ZLEVEL_STATION - path = text2path(old_secret_satchels[pos]["saved_obj"]) - if(!ispath(path)) - return - if(isfloorturf(F.loc) && !istype(F.loc, /turf/open/floor/plating/)) - F.hide(1) - new path(F) - placed_satchel++ - var/list/free_satchels = list() - for(var/turf/T in shuffle(block(locate(TRANSITIONEDGE,TRANSITIONEDGE,ZLEVEL_STATION), locate(world.maxx-TRANSITIONEDGE,world.maxy-TRANSITIONEDGE,ZLEVEL_STATION)))) //Nontrivially expensive but it's roundstart only + + old_secret_satchels = json["data"] + var/obj/item/storage/backpack/satchel/flat/F + if(old_secret_satchels && old_secret_satchels.len >= 10) //guards against low drop pools assuring that one player cannot reliably find his own gear. + var/pos = rand(1, old_secret_satchels.len) + F = new() + old_secret_satchels.Cut(pos, pos+1 % old_secret_satchels.len) + F.x = old_secret_satchels[pos]["x"] + F.y = old_secret_satchels[pos]["y"] + F.z = ZLEVEL_STATION_PRIMARY + path = text2path(old_secret_satchels[pos]["saved_obj"]) + + if(F) + if(isfloorturf(F.loc) && !istype(F.loc, /turf/open/floor/plating/)) + F.hide(1) + if(ispath(path)) + new path(F) + placed_satchel++ + var/free_satchels = 0 + for(var/turf/T in shuffle(block(locate(TRANSITIONEDGE,TRANSITIONEDGE,ZLEVEL_STATION_PRIMARY), locate(world.maxx-TRANSITIONEDGE,world.maxy-TRANSITIONEDGE,ZLEVEL_STATION_PRIMARY)))) //Nontrivially expensive but it's roundstart only if(isfloorturf(T) && !istype(T, /turf/open/floor/plating/)) - free_satchels += new /obj/item/storage/backpack/satchel/flat/secret(T) - if(!isemptylist(free_satchels) && ((free_satchels.len + placed_satchel) >= (50 - old_secret_satchels.len) * 0.1)) //up to six tiles, more than enough to kill anything that moves + new /obj/item/storage/backpack/satchel/flat/secret(T) + free_satchels++ + if((free_satchels + placed_satchel) == 10) //ten tiles, more than enough to kill anything that moves break /datum/controller/subsystem/persistence/proc/LoadPoly() @@ -84,8 +91,7 @@ SUBSYSTEM_DEF(persistence) var/json_file = file("data/npc_saves/ChiselMessages[SSmapping.config.map_name].json") if(!fexists(json_file)) return - var/list/json - json = json_decode(file2text(json_file)) + var/list/json = json_decode(file2text(json_file)) if(!json) return @@ -129,13 +135,22 @@ SUBSYSTEM_DEF(persistence) var/json_file = file("data/npc_saves/TrophyItems.json") if(!fexists(json_file)) return - var/list/json = list() - json = json_decode(file2text(json_file)) + var/list/json = json_decode(file2text(json_file)) if(!json) return saved_trophies = json["data"] SetUpTrophies(saved_trophies.Copy()) +/datum/controller/subsystem/persistence/proc/LoadRecentModes() + var/json_file = file("data/RecentModes.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + if(!json) + return + saved_modes = json["data"] + + /datum/controller/subsystem/persistence/proc/SetUpTrophies(list/trophy_items) for(var/A in GLOB.trophy_cases) var/obj/structure/displaycase/trophy/T = A @@ -165,13 +180,14 @@ SUBSYSTEM_DEF(persistence) CollectChiselMessages() CollectSecretSatchels() CollectTrophies() + CollectRoundtype() /datum/controller/subsystem/persistence/proc/CollectSecretSatchels() - var/list/satchels = list() satchel_blacklist = typecacheof(list(/obj/item/stack/tile/plasteel, /obj/item/crowbar)) + var/list/satchels_to_add = list() for(var/A in new_secret_satchels) var/obj/item/storage/backpack/satchel/flat/F = A - if(QDELETED(F) || F.z != ZLEVEL_STATION || F.invisibility != INVISIBILITY_MAXIMUM) + if(QDELETED(F) || F.z != ZLEVEL_STATION_PRIMARY || F.invisibility != INVISIBILITY_MAXIMUM) continue var/list/savable_obj = list() for(var/obj/O in F) @@ -187,11 +203,12 @@ SUBSYSTEM_DEF(persistence) data["x"] = F.x data["y"] = F.y data["saved_obj"] = pick(savable_obj) - satchels += list(data) + satchels_to_add += list(data) + var/json_file = file("data/npc_saves/SecretSatchels[SSmapping.config.map_name].json") var/list/file_data = list() - file_data["data"] = satchels fdel(json_file) + file_data["data"] = old_secret_satchels + satchels_to_add WRITE_FILE(json_file, json_encode(file_data)) /datum/controller/subsystem/persistence/proc/CollectChiselMessages() @@ -224,3 +241,13 @@ SUBSYSTEM_DEF(persistence) data["message"] = T.trophy_message data["placer_key"] = T.placer_key saved_trophies += list(data) + +/datum/controller/subsystem/persistence/proc/CollectRoundtype() + saved_modes[3] = saved_modes[2] + saved_modes[2] = saved_modes[1] + saved_modes[1] = SSticker.mode.config_tag + var/json_file = file("data/RecentModes.json") + var/list/file_data = list() + file_data["data"] = saved_modes + fdel(json_file) + WRITE_FILE(json_file, json_encode(file_data)) \ No newline at end of file diff --git a/code/controllers/subsystem/server_maint.dm b/code/controllers/subsystem/server_maint.dm index ec34cfb8ed..0b8fa750b6 100644 --- a/code/controllers/subsystem/server_maint.dm +++ b/code/controllers/subsystem/server_maint.dm @@ -10,7 +10,7 @@ SUBSYSTEM_DEF(server_maint) var/list/currentrun /datum/controller/subsystem/server_maint/Initialize(timeofday) - if (config.hub) + if (CONFIG_GET(flag/hub)) world.update_hub_visibility(TRUE) ..() @@ -21,16 +21,19 @@ SUBSYSTEM_DEF(server_maint) var/list/currentrun = src.currentrun var/round_started = SSticker.HasRoundStarted() + var/kick_inactive = CONFIG_GET(flag/kick_inactive) + var/afk_period + if(kick_inactive) + afk_period = CONFIG_GET(number/afk_period) for(var/I in currentrun) var/client/C = I //handle kicking inactive players - if(round_started && config.kick_inactive) - if(C.is_afk(config.afk_period)) - var/cmob = C.mob - if(!(isobserver(cmob) || (isdead(cmob) && C.holder))) - log_access("AFK: [key_name(C)]") - to_chat(C, "You have been inactive for more than [config.afk_period / 600] minutes and have been disconnected.") - qdel(C) + if(round_started && kick_inactive && C.is_afk(afk_period)) + var/cmob = C.mob + if(!(isobserver(cmob) || (isdead(cmob) && C.holder))) + log_access("AFK: [key_name(C)]") + to_chat(C, "You have been inactive for more than [DisplayTimeText(afk_period)] and have been disconnected.") + qdel(C) if (!(!C || world.time - C.connection_time < PING_BUFFER_TIME || C.inactivity >= (wait-1))) winset(C, null, "command=.update_ping+[world.time+world.tick_lag*TICK_USAGE_REAL/100]") @@ -40,7 +43,7 @@ SUBSYSTEM_DEF(server_maint) /datum/controller/subsystem/server_maint/Shutdown() kick_clients_in_lobby("The round came to an end with you in the lobby.", TRUE) //second parameter ensures only afk clients are kicked - var/server = config.server + var/server = CONFIG_GET(string/server) for(var/thing in GLOB.clients) if(!thing) continue diff --git a/code/controllers/subsystem/server_maint.dm.rej b/code/controllers/subsystem/server_maint.dm.rej deleted file mode 100644 index 486375b505..0000000000 --- a/code/controllers/subsystem/server_maint.dm.rej +++ /dev/null @@ -1,30 +0,0 @@ -diff a/code/controllers/subsystem/server_maint.dm b/code/controllers/subsystem/server_maint.dm (rejected hunks) -@@ -6,18 +6,16 @@ SUBSYSTEM_DEF(server_maint) - flags = SS_POST_FIRE_TIMING|SS_FIRE_IN_LOBBY - priority = 10 - var/list/currentrun -- var/triggertime = null - - /datum/controller/subsystem/server_maint/Initialize(timeofday) - if (config.hub) - world.visibility = 1 -- triggertime = REALTIMEOFDAY - ..() - - /datum/controller/subsystem/server_maint/fire(resumed = FALSE) - if(!resumed) - src.currentrun = GLOB.clients.Copy() -- -+ - var/list/currentrun = src.currentrun - var/round_started = SSticker.HasRoundStarted() - -@@ -39,8 +37,3 @@ SUBSYSTEM_DEF(server_maint) - return - - #undef PING_BUFFER_TIME -- if(config.sql_enabled) -- sql_poll_population() -- if(config.use_exp_tracking) -- if(REALTIMEOFDAY > (triggertime +3000)) //server maint fires once at roundstart then once every 10 minutes. a 5 min check skips the first fire -- update_exp(10,0) diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index f9774f8cb5..705f0dbd81 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -176,9 +176,9 @@ SUBSYSTEM_DEF(shuttle) Good luck.") return emergency = backup_shuttle - - if(world.time - SSticker.round_start_time < config.shuttle_refuel_delay) - to_chat(user, "The emergency shuttle is refueling. Please wait another [abs(round(((world.time - SSticker.round_start_time) - config.shuttle_refuel_delay)/600))] minutes before trying again.") + var/srd = CONFIG_GET(number/shuttle_refuel_delay) + if(world.time - SSticker.round_start_time < srd) + to_chat(user, "The emergency shuttle is refueling. Please wait [DisplayTimeText(srd - (world.time - SSticker.round_start_time))] before trying again.") return switch(emergency.mode) @@ -220,7 +220,7 @@ SUBSYSTEM_DEF(shuttle) if(call_reason) SSblackbox.add_details("shuttle_reason", call_reason) log_game("Shuttle call reason: [call_reason]") - message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)") + message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)") /datum/controller/subsystem/shuttle/proc/centcom_recall(old_timer, admiral_message) if(emergency.mode != SHUTTLE_CALL || emergency.timer != old_timer) @@ -290,7 +290,7 @@ SUBSYSTEM_DEF(shuttle) continue var/turf/T = get_turf(thing) - if(T && T.z == ZLEVEL_STATION) + if(T && (T.z in GLOB.station_z_levels)) callShuttle = 0 break @@ -384,7 +384,7 @@ SUBSYSTEM_DEF(shuttle) 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) + M.port_angle + 180 + 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 @@ -430,17 +430,14 @@ SUBSYSTEM_DEF(shuttle) continue base if(!(T.flags_1 & UNUSED_TRANSIT_TURF_1)) continue base - //to_chat(world, "[COORD(topleft)] and [COORD(bottomright)]") break base if((!proposed_zone) || (!proposed_zone.len)) return FALSE var/turf/topleft = proposed_zone[1] - //to_chat(world, "[COORD(topleft)] is TOPLEFT") // Then create a transit docking port in the middle var/coords = M.return_coords(0, 0, dock_dir) - //to_chat(world, json_encode(coords)) /* 0------2 | | | | @@ -478,11 +475,9 @@ SUBSYSTEM_DEF(shuttle) if(WEST) transit_path = /turf/open/space/transit/west - //to_chat(world, "Docking port at [transit_x], [transit_y], [topleft.z]") var/turf/midpoint = locate(transit_x, transit_y, topleft.z) if(!midpoint) return FALSE - //to_chat(world, "Making transit dock at [COORD(midpoint)]") var/area/shuttle/transit/A = new() A.parallax_movedir = travel_dir A.contents = proposed_zone diff --git a/code/controllers/subsystem/squeak.dm b/code/controllers/subsystem/squeak.dm index d94efd0a4a..0148011e8b 100644 --- a/code/controllers/subsystem/squeak.dm +++ b/code/controllers/subsystem/squeak.dm @@ -1,6 +1,6 @@ // The Squeak // because this is about placement of mice mobs, and nothing to do with -// mice - the computer peripheral +// mice - the computer peripheral SUBSYSTEM_DEF(squeak) name = "Squeak" @@ -10,7 +10,8 @@ SUBSYSTEM_DEF(squeak) var/list/exposed_wires = list() /datum/controller/subsystem/squeak/Initialize(timeofday) - trigger_migration(config.mice_roundstart) + trigger_migration(CONFIG_GET(number/mice_roundstart)) + return ..() /datum/controller/subsystem/squeak/proc/trigger_migration(num_mice=10) if(!num_mice) @@ -32,8 +33,9 @@ SUBSYSTEM_DEF(squeak) /datum/controller/subsystem/squeak/proc/find_exposed_wires() exposed_wires.Cut() - - var/list/all_turfs = block(locate(1,1,1), locate(world.maxx,world.maxy,1)) + var/list/all_turfs + for (var/z in GLOB.station_z_levels) + all_turfs += block(locate(1,1,z), locate(world.maxx,world.maxy,z)) for(var/turf/open/floor/plating/T in all_turfs) if(is_blocked_turf(T)) continue diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index f245b0766c..97d84a0d3b 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -57,6 +57,9 @@ SUBSYSTEM_DEF(throwing) var/pure_diagonal var/diagonal_error var/datum/callback/callback + var/paused = FALSE + var/delayed_time = 0 + var/last_move = 0 /datum/thrownthing/proc/tick() var/atom/movable/AM = thrownthing @@ -64,14 +67,20 @@ SUBSYSTEM_DEF(throwing) finalize() return + if(paused) + delayed_time += world.time - last_move + return + if (dist_travelled && hitcheck()) //to catch sneaky things moving on our tile while we slept finalize() return var/atom/step + last_move = world.time + //calculate how many tiles to move, making up for any missed ticks. - var/tilestomove = Ceiling(min(((((world.time+world.tick_lag) - start_time) * speed) - (dist_travelled ? dist_travelled : -1)), speed*MAX_TICKS_TO_MAKE_UP) * (world.tick_lag * SSthrowing.wait)) + var/tilestomove = Ceiling(min(((((world.time+world.tick_lag) - start_time + delayed_time) * speed) - (dist_travelled ? dist_travelled : -1)), speed*MAX_TICKS_TO_MAKE_UP) * (world.tick_lag * SSthrowing.wait)) while (tilestomove-- > 0) if ((dist_travelled >= maxrange || AM.loc == target_turf) && AM.has_gravity(AM.loc)) finalize() diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index b0c432f8ac..060fe93219 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -51,14 +51,14 @@ SUBSYSTEM_DEF(ticker) var/queue_delay = 0 var/list/queued_players = list() //used for join queues when the server exceeds the hard population cap - var/obj/screen/cinematic = null //used for station explosion cinematic - var/maprotatechecked = 0 var/news_report var/late_join_disabled + var/roundend_check_paused = FALSE + var/round_start_time = 0 var/list/round_start_events var/mode_result = "undefined" @@ -69,6 +69,9 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/Initialize(timeofday) load_mode() var/list/music = world.file2list(ROUND_START_MUSIC_LIST, "\n") + var/old_login_music = trim(file2text("data/last_round_lobby_music.txt")) + if(music.len > 1) + music -= old_login_music login_music = pick(music) if(!GLOB.syndicate_code_phrase) @@ -76,16 +79,18 @@ SUBSYSTEM_DEF(ticker) if(!GLOB.syndicate_code_response) GLOB.syndicate_code_response = generate_code_phrase() ..() - start_at = world.time + (config.lobby_countdown * 10) + start_at = world.time + (CONFIG_GET(number/lobby_countdown) * 10) /datum/controller/subsystem/ticker/fire() switch(current_state) if(GAME_STATE_STARTUP) if(Master.initializations_finished_with_no_players_logged_in) - start_at = world.time + (config.lobby_countdown * 10) + start_at = world.time + (CONFIG_GET(number/lobby_countdown) * 10) for(var/client/C in GLOB.clients) window_flash(C, ignorepref = TRUE) //let them know lobby has opened up. to_chat(world, "Welcome to [station_name()]!") + if(CONFIG_GET(flag/irc_announce_new_game)) + SERVER_TOOLS_CHAT_BROADCAST("New round starting on [SSmapping.config.map_name]!") current_state = GAME_STATE_PREGAME //Everyone who wants to be an observer is now spawned create_observers() @@ -134,9 +139,10 @@ SUBSYSTEM_DEF(ticker) scripture_states = scripture_unlock_alert(scripture_states) SSshuttle.autoEnd() - if(!mode.explosion_in_progress && mode.check_finished(force_ending) || force_ending) + if(!roundend_check_paused && mode.check_finished(force_ending) || force_ending) current_state = GAME_STATE_FINISHED - toggle_ooc(1) // Turn it on + toggle_ooc(TRUE) // Turn it on + toggle_dooc(TRUE) declare_completion(force_ending) Master.SetRunLevel(RUNLEVEL_POSTGAME) @@ -163,6 +169,8 @@ SUBSYSTEM_DEF(ticker) to_chat(world, "Unable to choose playable game mode. Reverting to pre-game lobby.") return 0 mode = pickweight(runnable_modes) + if(!mode) //too few roundtypes all run too recently + mode = pick(runnable_modes) else mode = config.pick_mode(GLOB.master_mode) @@ -201,8 +209,8 @@ SUBSYSTEM_DEF(ticker) else mode.announce() - if(!config.ooc_during_round) - toggle_ooc(0) // Turn it off + if(!CONFIG_GET(flag/ooc_during_round)) + toggle_ooc(FALSE) // Turn it off CHECK_TICK GLOB.start_landmarks_list = shuffle(GLOB.start_landmarks_list) //Shuffle the order of spawn points so they dont always predictably spawn bottom-up and right-to-left @@ -238,10 +246,10 @@ SUBSYSTEM_DEF(ticker) PostSetup() - return 1 + return TRUE /datum/controller/subsystem/ticker/proc/PostSetup() - set waitfor = 0 + set waitfor = FALSE mode.post_setup() GLOB.start_state = new /datum/station_state() GLOB.start_state.count(1) @@ -267,149 +275,7 @@ SUBSYSTEM_DEF(ticker) qdel(bomb) if(epi) explosion(epi, 0, 256, 512, 0, TRUE, TRUE, 0, TRUE) - -//Plus it provides an easy way to make cinematics for other events. Just use this as a template -/datum/controller/subsystem/ticker/proc/station_explosion_cinematic(station_missed=0, override = null, atom/bomb = null) - if( cinematic ) - return //already a cinematic in progress! - - for (var/datum/html_interface/hi in GLOB.html_interfaces) - hi.closeAll() - SStgui.close_all_uis() - - //Turn off the shuttles, there's no escape now - if(!station_missed && bomb) - SSshuttle.registerHostileEnvironment(src) - SSshuttle.lockdown = TRUE - - //initialise our cinematic screen object - cinematic = new /obj/screen{icon='icons/effects/station_explosion.dmi';icon_state="station_intact";layer=21;mouse_opacity = MOUSE_OPACITY_TRANSPARENT;screen_loc="1,0";}(src) - - for(var/mob/M in GLOB.mob_list) - M.notransform = TRUE //stop everything moving - if(M.client) - M.client.screen += cinematic //show every client the cinematic - - var/actually_blew_up = TRUE - //Now animate the cinematic - switch(station_missed) - if(NUKE_NEAR_MISS) //nuke was nearby but (mostly) missed - if(mode && !override ) - override = mode.name - switch( override ) - if("nuclear emergency") //Nuke wasn't on station when it blew up - flick("intro_nuke",cinematic) - sleep(35) - SEND_SOUND(world, sound('sound/effects/explosion_distant.ogg')) - station_explosion_detonation(bomb) - flick("station_intact_fade_red",cinematic) - cinematic.icon_state = "summary_nukefail" - if("cult") - cinematic.icon_state = null - flick("intro_cult",cinematic) - sleep(25) - SEND_SOUND(world, sound('sound/magic/enter_blood.ogg')) - sleep(28) - SEND_SOUND(world, sound('sound/machines/terminal_off.ogg')) - sleep(20) - flick("station_corrupted",cinematic) - SEND_SOUND(world, sound('sound/effects/ghost.ogg')) - actually_blew_up = FALSE - if("gang war") //Gang Domination (just show the override screen) - cinematic.icon_state = "intro_malf_still" - flick("intro_malf",cinematic) - actually_blew_up = FALSE - sleep(70) - if("fake") //The round isn't over, we're just freaking people out for fun - flick("intro_nuke",cinematic) - sleep(35) - SEND_SOUND(world, sound('sound/items/bikehorn.ogg')) - flick("summary_selfdes",cinematic) - actually_blew_up = FALSE - else - flick("intro_nuke",cinematic) - sleep(35) - SEND_SOUND(world, sound('sound/effects/explosion_distant.ogg')) - station_explosion_detonation(bomb) - - - if(NUKE_MISS_STATION || NUKE_SYNDICATE_BASE) //nuke was nowhere nearby //TODO: a really distant explosion animation - sleep(50) - SEND_SOUND(world, sound('sound/effects/explosion_distant.ogg')) - station_explosion_detonation(bomb) - actually_blew_up = station_missed == NUKE_SYNDICATE_BASE //don't kill everyone on station if it detonated off station - else //station was destroyed - if( mode && !override ) - override = mode.name - switch( override ) - if("nuclear emergency") //Nuke Ops successfully bombed the station - flick("intro_nuke",cinematic) - sleep(35) - flick("station_explode_fade_red",cinematic) - SEND_SOUND(world, sound('sound/effects/explosion_distant.ogg')) - station_explosion_detonation(bomb) - cinematic.icon_state = "summary_nukewin" - if("AI malfunction") //Malf (screen,explosion,summary) - flick("intro_malf",cinematic) - sleep(76) - flick("station_explode_fade_red",cinematic) - SEND_SOUND(world, sound('sound/effects/explosion_distant.ogg')) - station_explosion_detonation(bomb) //TODO: If we ever decide to actually detonate the vault bomb - cinematic.icon_state = "summary_malf" - if("blob") //Station nuked (nuke,explosion,summary) - flick("intro_nuke",cinematic) - sleep(35) - flick("station_explode_fade_red",cinematic) - SEND_SOUND(world, sound('sound/effects/explosion_distant.ogg')) - station_explosion_detonation(bomb) //TODO: no idea what this case could be - cinematic.icon_state = "summary_selfdes" - if("cult") //Station nuked (nuke,explosion,summary) - flick("intro_nuke",cinematic) - sleep(35) - flick("station_explode_fade_red",cinematic) - SEND_SOUND(world, sound('sound/effects/explosion_distant.ogg')) - station_explosion_detonation(bomb) //TODO: no idea what this case could be - cinematic.icon_state = "summary_cult" - if("no_core") //Nuke failed to detonate as it had no core - flick("intro_nuke",cinematic) - sleep(35) - flick("station_intact",cinematic) - SEND_SOUND(world, sound('sound/ambience/signal.ogg')) - addtimer(CALLBACK(src, .proc/finish_cinematic, null, FALSE), 100) - return //Faster exit, since nothing happened - else //Station nuked (nuke,explosion,summary) - flick("intro_nuke",cinematic) - sleep(35) - flick("station_explode_fade_red", cinematic) - SEND_SOUND(world, sound('sound/effects/explosion_distant.ogg')) - station_explosion_detonation(bomb) - cinematic.icon_state = "summary_selfdes" - //If its actually the end of the round, wait for it to end. - //Otherwise if its a verb it will continue on afterwards. - - var/bombloc = null - if(actually_blew_up) - if(bomb && bomb.loc) - bombloc = bomb.z - else if(!station_missed) - bombloc = ZLEVEL_STATION - - if(mode) - mode.explosion_in_progress = 0 - to_chat(world, "The station was destoyed by the nuclear blast!") - mode.station_was_nuked = (station_missed<2) //station_missed==1 is a draw. the station becomes irradiated and needs to be evacuated. - - addtimer(CALLBACK(src, .proc/finish_cinematic, bombloc, actually_blew_up), 300) - -/datum/controller/subsystem/ticker/proc/finish_cinematic(killz, actually_blew_up) - if(cinematic) - qdel(cinematic) //end the cinematic - cinematic = null - for(var/mob/M in GLOB.mob_list) - M.notransform = FALSE - if(actually_blew_up && !isnull(killz) && M.stat != DEAD && M.z == killz) - M.gib() - + /datum/controller/subsystem/ticker/proc/create_characters() for(var/mob/dead/new_player/player in GLOB.player_list) if(player.ready == PLAYER_READY_TO_PLAY && player.mind) @@ -469,6 +335,8 @@ SUBSYSTEM_DEF(ticker) var/num_shuttle_escapees = 0 to_chat(world, "


    The round has ended.") + if(LAZYLEN(GLOB.round_end_notifiees)) + send2irc("Notice", "[GLOB.round_end_notifiees.Join(", ")] the round has ended.") /* var/nocredits = config.no_credits_round_end for(var/client/C in GLOB.clients) @@ -504,7 +372,7 @@ SUBSYSTEM_DEF(ticker) end_state.count() var/station_integrity = min(PERCENT(GLOB.start_state.score(end_state)), 100) - to_chat(world, "
    [GLOB.TAB]Shift Duration: [round(world.time / 36000)]:[add_zero("[world.time / 600 % 60]", 2)]:[world.time / 100 % 6][world.time / 100 % 10]") + to_chat(world, "
    [GLOB.TAB]Shift Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]") to_chat(world, "
    [GLOB.TAB]Station Integrity: [mode.station_was_nuked ? "Destroyed" : "[station_integrity]%"]") if(mode.station_was_nuked) SSticker.news_report = STATION_DESTROYED_NUKE @@ -524,7 +392,7 @@ SUBSYSTEM_DEF(ticker) //Silicon laws report for (var/mob/living/silicon/ai/aiPlayer in GLOB.mob_list) - if (aiPlayer.stat != 2 && aiPlayer.mind) + if (aiPlayer.stat != DEAD && aiPlayer.mind) to_chat(world, "[aiPlayer.name] (Played by: [aiPlayer.mind.key])'s laws at the end of the round were:") aiPlayer.show_laws(1) else if (aiPlayer.mind) //if the dead ai has a mind, use its key instead @@ -544,7 +412,7 @@ SUBSYSTEM_DEF(ticker) for (var/mob/living/silicon/robot/robo in GLOB.mob_list) if (!robo.connected_ai && robo.mind) - if (robo.stat != 2) + if (robo.stat != DEAD) to_chat(world, "[robo.name] (Played by: [robo.mind.key]) survived as an AI-less borg! Its laws were:") else to_chat(world, "[robo.name] (Played by: [robo.mind.key]) was unable to survive the rigors of being a cyborg without an AI. Its laws were:") @@ -565,7 +433,7 @@ SUBSYSTEM_DEF(ticker) CHECK_TICK - if(config.cross_allowed) + if(CONFIG_GET(string/cross_server_address)) send_news_report() CHECK_TICK @@ -631,7 +499,8 @@ SUBSYSTEM_DEF(ticker) to_chat(world, "Tip of the round: [html_encode(m)]") /datum/controller/subsystem/ticker/proc/check_queue() - if(!queued_players.len || !config.hard_popcap) + var/hpc = CONFIG_GET(number/hard_popcap) + if(!queued_players.len || !hpc) return queue_delay++ @@ -639,7 +508,7 @@ SUBSYSTEM_DEF(ticker) switch(queue_delay) if(5) //every 5 ticks check if there is a slot available - if(living_player_count() < config.hard_popcap) + if(living_player_count() < hpc) if(next_in_line && next_in_line.client) to_chat(next_in_line, "A slot has opened! You have approximately 20 seconds to join. \>\>Join Game\<\<") SEND_SOUND(next_in_line, sound('sound/misc/notice1.ogg')) @@ -653,7 +522,7 @@ SUBSYSTEM_DEF(ticker) queue_delay = 0 /datum/controller/subsystem/ticker/proc/check_maprotate() - if (!config.maprotation) + if (!CONFIG_GET(flag/maprotation)) return if (SSshuttle.emergency && SSshuttle.emergency.mode != SHUTTLE_ESCAPE || SSshuttle.canRecall()) return @@ -663,7 +532,7 @@ SUBSYSTEM_DEF(ticker) maprotatechecked = 1 //map rotate chance defaults to 75% of the length of the round (in minutes) - if (!prob((world.time/600)*config.maprotatechancedelta)) + if (!prob((world.time/600)*CONFIG_GET(number/maprotatechancedelta))) return INVOKE_ASYNC(SSmapping, /datum/controller/subsystem/mapping/.proc/maprotate) @@ -710,13 +579,11 @@ SUBSYSTEM_DEF(ticker) queue_delay = SSticker.queue_delay queued_players = SSticker.queued_players - cinematic = SSticker.cinematic maprotatechecked = SSticker.maprotatechecked round_start_time = SSticker.round_start_time queue_delay = SSticker.queue_delay queued_players = SSticker.queued_players - cinematic = SSticker.cinematic maprotatechecked = SSticker.maprotatechecked modevoted = SSticker.modevoted @@ -739,10 +606,6 @@ SUBSYSTEM_DEF(ticker) news_message = "We would like to reassure all employees that the reports of a Syndicate backed nuclear attack on [station_name()] are, in fact, a hoax. Have a secure day!" if(STATION_EVACUATED) news_message = "The crew of [station_name()] has been evacuated amid unconfirmed reports of enemy activity." - if(GANG_LOSS) - news_message = "Organized crime aboard [station_name()] has been stamped out by members of our ever vigilant security team. Remember to thank your assigned officers today!" - if(GANG_TAKEOVER) - news_message = "Contact with [station_name()] has been lost after a sophisticated hacking attack by organized criminal elements. Stay vigilant!" if(BLOB_WIN) news_message = "[station_name()] was overcome by an unknown biological outbreak, killing all crew on board. Don't let it happen to you! Remember, a clean work station is a safe work station." if(BLOB_NUKE) @@ -829,7 +692,7 @@ SUBSYSTEM_DEF(ticker) return if(!delay) - delay = config.round_end_countdown * 10 + delay = CONFIG_GET(number/round_end_countdown) * 10 var/skip_delay = check_rights() if(delay_end && !skip_delay) @@ -865,3 +728,4 @@ SUBSYSTEM_DEF(ticker) ) SEND_SOUND(world, sound(round_end_sound)) + text2file(login_music, "data/last_round_lobby_music.txt") diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index c8d5b69e61..804e430ef9 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -69,7 +69,7 @@ SUBSYSTEM_DEF(timer) if (ctime_timer.timeToRun <= REALTIMEOFDAY) --clienttime_timers.len var/datum/callback/callBack = ctime_timer.callBack - ctime_timer.spent = TRUE + ctime_timer.spent = REALTIMEOFDAY callBack.InvokeAsync() qdel(ctime_timer) else @@ -105,11 +105,11 @@ SUBSYSTEM_DEF(timer) if (!callBack) qdel(timer) bucket_resolution = null //force bucket recreation - CRASH("Invalid timer: [timer] timer.timeToRun=[timer.timeToRun]||QDELETED(timer)=[QDELETED(timer)]||world.time=[world.time]||head_offset=[head_offset]||practical_offset=[practical_offset]||timer.spent=[timer.spent]") + CRASH("Invalid timer: [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") if (!timer.spent) spent += timer - timer.spent = TRUE + timer.spent = world.time callBack.InvokeAsync() last_invoke_tick = world.time @@ -135,9 +135,11 @@ SUBSYSTEM_DEF(timer) . = "Timer: [TE]" . += "Prev: [TE.prev ? TE.prev : "NULL"], Next: [TE.next ? TE.next : "NULL"]" if(TE.spent) - . += ", SPENT" + . += ", SPENT([TE.spent])" if(QDELETED(TE)) . += ", QDELETED" + if(!TE.callBack) + . += ", NO CALLBACK" /datum/controller/subsystem/timer/proc/shift_buckets() var/list/bucket_list = src.bucket_list @@ -216,7 +218,7 @@ SUBSYSTEM_DEF(timer) var/timeToRun var/hash var/list/flags - var/spent = FALSE //set to true right before running. + var/spent = 0 //time we ran the timer. var/name //for easy debugging. //cicular doublely linked list var/datum/timedevent/next @@ -243,6 +245,9 @@ SUBSYSTEM_DEF(timer) name = "Timer: " + num2text(id, 8) + ", TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])" + if (spent) + CRASH("HOLY JESUS. WHAT IS THAT? WHAT THE FUCK IS THAT?") + if (callBack.object != GLOBAL_PROC) LAZYADD(callBack.object.active_timers, src) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 0dbc7c5d3a..d377329312 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -18,7 +18,7 @@ SUBSYSTEM_DEF(vote) /datum/controller/subsystem/vote/fire() //called by master_controller if(mode) - time_remaining = round((started_time + config.vote_period - world.time)/10) + time_remaining = round((started_time + CONFIG_GET(number/vote_period) - world.time)/10) if(time_remaining < 0) result() @@ -54,7 +54,7 @@ SUBSYSTEM_DEF(vote) if(votes > greatest_votes) greatest_votes = votes //default-vote for everyone who didn't vote - if(!config.vote_no_default && choices.len) + if(!CONFIG_GET(flag/default_no_vote) && choices.len) var/list/non_voters = GLOB.directory.Copy() non_voters -= voted for (var/non_voter_ckey in non_voters) @@ -146,7 +146,7 @@ SUBSYSTEM_DEF(vote) /datum/controller/subsystem/vote/proc/submit_vote(vote) if(mode) - if(config.vote_no_dead && usr.stat == DEAD && !usr.client.holder) + if(CONFIG_GET(flag/no_dead_vote) && usr.stat == DEAD && !usr.client.holder) return 0 if(!(usr.ckey in voted)) if(vote && 1<=vote && vote<=choices.len) @@ -158,7 +158,7 @@ SUBSYSTEM_DEF(vote) /datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key) if(!mode) if(started_time) - var/next_allowed_time = (started_time + config.vote_delay) + var/next_allowed_time = (started_time + CONFIG_GET(number/vote_delay)) if(mode) to_chat(usr, "There is already a vote in progress! please wait for it to finish.") return 0 @@ -169,7 +169,7 @@ SUBSYSTEM_DEF(vote) admin = TRUE if(next_allowed_time > world.time && !admin) - to_chat(usr, "A vote was initiated recently, you must wait roughly [(next_allowed_time-world.time)/10] seconds before a new vote can be started!") + to_chat(usr, "A vote was initiated recently, you must wait [DisplayTimeText(next_allowed_time-world.time)] before a new vote can be started!") return 0 reset() @@ -198,8 +198,9 @@ SUBSYSTEM_DEF(vote) if(mode == "custom") text += "\n[question]" log_vote(text) - to_chat(world, "\n[text]\nType vote or click here to place your votes.\nYou have [config.vote_period/10] seconds to vote.") - time_remaining = round(config.vote_period/10) + var/vp = CONFIG_GET(number/vote_period) + to_chat(world, "\n[text]\nType vote or click here to place your votes.\nYou have [DisplayTimeText(vp)] to vote.") + time_remaining = round(vp/10) for(var/c in GLOB.clients) var/client/C = c var/datum/action/vote/V = new @@ -238,20 +239,22 @@ SUBSYSTEM_DEF(vote) else . += "

    Start a vote: