Merge remote-tracking branch 'origin/master'

This commit is contained in:
Dan-Neposh
2021-01-14 19:34:51 -05:00
1152 changed files with 31093 additions and 24256 deletions
+3 -1
View File
@@ -2,6 +2,8 @@
"recommendations": [
"gbasood.byond-dm-language-support",
"platymuus.dm-langclient",
"EditorConfig.EditorConfig"
"EditorConfig.EditorConfig",
"arcanis.vscode-zipfs",
"dbaeumer.vscode-eslint"
]
}
+18
View File
@@ -0,0 +1,18 @@
{
"eslint.nodePath": "tgui/.yarn/sdks",
"eslint.workingDirectories": [
"./tgui"
],
"search.exclude": {
"tgui/.yarn": true,
"tgui/.pnp.*": true
},
"workbench.editorAssociations": [
{
"filenamePattern": "*.dmi",
"viewType": "imagePreview.previewEditor"
}
],
"files.eol": "\n",
"gitlens.advanced.blame.customArguments": ["-w"]
}
+175 -175
View File
@@ -1,175 +1,175 @@
## 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)
[![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")
[![forthebadge](http://forthebadge.com/images/badges/60-percent-of-the-time-works-every-time.svg)](https://forthebadge.com) [![forthebadge](http://forthebadge.com/images/badges/pretty-risque.svg)](https://forthebadge.com) [![forthebadge](http://forthebadge.com/images/badges/you-didnt-ask-for-this.svg)](http://forthebadge.com) [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a)
**Upstream Information**
* **Website:** <https://www.tgstation13.org>
* **Code:** <https://github.com/tgstation/tgstation>
* **Wiki:** <https://tgstation13.org/wiki/Main_Page>
* **Codedocs:** <https://codedocs.tgstation13.org>
* **/tg/station Discord:** <https://tgstation13.org/phpBB/viewforum.php?f=60>
* **Coderbus Discord:** <https://discord.gg/Vh8TJp9>
* ~~**IRC:** <irc://irc.rizon.net/coderbus>~~ (dead)
**Citadel Station Information**
* **Website:** <http://citadel-station.net>
* **Code:** <https://github.com/Citadel-Station-13/Citadel-Station-13>
* **Wiki:** <https://citadel-station.net/wiki/index.php?title=Main_Page>
* **Forums:** <http://citadel-station.net/forum>
* **Ban Appeals:** <http://citadel-station.net/forum/forumdisplay.php?fid=8>
* **Discord:** <https://discord.gg/E6SQuhz>
## 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.)
Option 3: Download a pre-compiled nightly at https://tgstation13.download/nightlies/ (same caveats as option 2)
## INSTALLATION
First-time installation should be fairly straightforward. First, you'll need
BYOND installed. You can get it from https://www.byond.com/download. 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.
This codebase also depends on a native library called rust-g. A precompiled
Windows DLL is included in this repository, but Linux users will need to build
and install it themselves. Directions can be found at the [rust-g
repo](https://github.com/tgstation13/rust-g).
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, BoxStation 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 Mariadb server running 10.2 or later. Mysql is not supported but Mariadb is a drop in replacement for mysql. 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: https://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database
## WEB/CDN RESOURCE DELIVERY
Web delivery of game resources makes it quicker for players to join and reduces some of the stress on the game server.
1. Edit compile_options.dm to set the `PRELOAD_RSC` define to `0`
1. Add a url to config/external_rsc_urls pointing to a .zip file containing the .rsc.
* If you keep up to date with /tg/ you could reuse /tg/'s rsc cdn at http://tgstation13.download/byond/tgstation.zip. Otherwise you can use cdn services like CDN77 or cloudflare (requires adding a page rule to enable caching of the zip), or roll your own cdn using route 53 and vps providers.
* Regardless even offloading the rsc to a website without a CDN will be a massive improvement over the in game system for transferring files.
## 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 and GPLv3.txt for more details.
The TGS3 API is licensed as a subproject under the MIT 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.
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/).
All assets including icons and sound are under a [Creative Commons 3.0 BY-SA license](https://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated.
## 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)
[![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")
[![forthebadge](http://forthebadge.com/images/badges/60-percent-of-the-time-works-every-time.svg)](https://forthebadge.com) [![forthebadge](http://forthebadge.com/images/badges/pretty-risque.svg)](https://forthebadge.com) [![forthebadge](http://forthebadge.com/images/badges/you-didnt-ask-for-this.svg)](http://forthebadge.com) [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a)
**Upstream Information**
* **Website:** <https://www.tgstation13.org>
* **Code:** <https://github.com/tgstation/tgstation>
* **Wiki:** <https://tgstation13.org/wiki/Main_Page>
* **Codedocs:** <https://codedocs.tgstation13.org>
* **/tg/station Discord:** <https://tgstation13.org/phpBB/viewforum.php?f=60>
* **Coderbus Discord:** <https://discord.gg/Vh8TJp9>
* ~~**IRC:** <irc://irc.rizon.net/coderbus>~~ (dead)
**Citadel Station Information**
* **Website:** <http://citadel-station.net>
* **Code:** <https://github.com/Citadel-Station-13/Citadel-Station-13>
* **Wiki:** <https://citadel-station.net/wiki/index.php?title=Main_Page>
* **Forums:** <http://citadel-station.net/forum>
* **Ban Appeals:** <http://citadel-station.net/forum/forumdisplay.php?fid=8>
* **Discord:** <https://discord.gg/E6SQuhz>
## 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.)
Option 3: Download a pre-compiled nightly at https://tgstation13.download/nightlies/ (same caveats as option 2)
## INSTALLATION
First-time installation should be fairly straightforward. First, you'll need
BYOND installed. You can get it from https://www.byond.com/download. 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.
This codebase also depends on a native library called rust-g. A precompiled
Windows DLL is included in this repository, but Linux users will need to build
and install it themselves. Directions can be found at the [rust-g
repo](https://github.com/tgstation13/rust-g).
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, BoxStation 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 Mariadb server running 10.2 or later. Mysql is not supported but Mariadb is a drop in replacement for mysql. 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: https://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database
## WEB/CDN RESOURCE DELIVERY
Web delivery of game resources makes it quicker for players to join and reduces some of the stress on the game server.
1. Edit compile_options.dm to set the `PRELOAD_RSC` define to `0`
1. Add a url to config/external_rsc_urls pointing to a .zip file containing the .rsc.
* If you keep up to date with /tg/ you could reuse /tg/'s rsc cdn at http://tgstation13.download/byond/tgstation.zip. Otherwise you can use cdn services like CDN77 or cloudflare (requires adding a page rule to enable caching of the zip), or roll your own cdn using route 53 and vps providers.
* Regardless even offloading the rsc to a website without a CDN will be a massive improvement over the in game system for transferring files.
## 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 and GPLv3.txt for more details.
The TGS3 API is licensed as a subproject under the MIT 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.
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/).
All assets including icons and sound are under a [Creative Commons 3.0 BY-SA license](https://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated.
+473 -473
View File
@@ -1,473 +1,473 @@
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `admin`
--
DROP TABLE IF EXISTS `admin`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `admin` (
`ckey` varchar(32) NOT NULL,
`rank` varchar(32) NOT NULL,
PRIMARY KEY (`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `admin_log`
--
DROP TABLE IF EXISTS `admin_log`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `admin_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL,
`round_id` int(11) unsigned NOT NULL,
`adminckey` varchar(32) NOT NULL,
`adminip` int(10) unsigned NOT NULL,
`operation` enum('add admin','remove admin','change admin rank','add rank','remove rank','change rank flags') NOT NULL,
`target` varchar(32) NOT NULL,
`log` varchar(1000) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `admin_ranks`
--
DROP TABLE IF EXISTS `admin_ranks`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `admin_ranks` (
`rank` varchar(32) NOT NULL,
`flags` smallint(5) unsigned NOT NULL,
`exclude_flags` smallint(5) unsigned NOT NULL,
`can_edit_flags` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`rank`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `ban`
--
DROP TABLE IF EXISTS `ban`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ban` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`bantime` datetime NOT NULL,
`server_ip` int(10) unsigned NOT NULL,
`server_port` smallint(5) unsigned NOT NULL,
`round_id` int(11) NOT NULL,
`bantype` enum('PERMABAN','TEMPBAN','JOB_PERMABAN','JOB_TEMPBAN','ADMIN_PERMABAN','ADMIN_TEMPBAN') NOT NULL,
`reason` varchar(2048) NOT NULL,
`job` varchar(32) DEFAULT NULL,
`duration` int(11) NOT NULL,
`expiration_time` datetime NOT NULL,
`ckey` varchar(32) NOT NULL,
`computerid` varchar(32) NOT NULL,
`ip` int(10) unsigned NOT NULL,
`a_ckey` varchar(32) NOT NULL,
`a_computerid` varchar(32) NOT NULL,
`a_ip` int(10) unsigned NOT NULL,
`who` varchar(2048) NOT NULL,
`adminwho` varchar(2048) NOT NULL,
`edits` text,
`unbanned` tinyint(3) unsigned DEFAULT NULL,
`unbanned_datetime` datetime DEFAULT NULL,
`unbanned_ckey` varchar(32) DEFAULT NULL,
`unbanned_computerid` varchar(32) DEFAULT NULL,
`unbanned_ip` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_ban_checkban` (`ckey`,`bantype`,`expiration_time`,`unbanned`,`job`),
KEY `idx_ban_isbanned` (`ckey`,`ip`,`computerid`,`bantype`,`expiration_time`,`unbanned`),
KEY `idx_ban_count` (`id`,`a_ckey`,`bantype`,`expiration_time`,`unbanned`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `connection_log`
--
DROP TABLE IF EXISTS `connection_log`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `connection_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`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,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `death`
--
DROP TABLE IF EXISTS `death`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `death` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pod` varchar(50) NOT NULL,
`x_coord` smallint(5) unsigned NOT NULL,
`y_coord` smallint(5) unsigned NOT NULL,
`z_coord` smallint(5) unsigned NOT NULL,
`mapname` varchar(32) NOT NULL,
`server_ip` int(10) unsigned NOT NULL,
`server_port` smallint(5) unsigned NOT NULL,
`round_id` int(11) NOT NULL,
`tod` datetime NOT NULL COMMENT 'Time of death',
`job` varchar(32) NOT NULL,
`special` varchar(32) DEFAULT NULL,
`name` varchar(96) NOT NULL,
`byondkey` varchar(32) NOT NULL,
`laname` varchar(96) DEFAULT NULL,
`lakey` varchar(32) DEFAULT NULL,
`bruteloss` smallint(5) unsigned NOT NULL,
`brainloss` smallint(5) unsigned NOT NULL,
`fireloss` smallint(5) unsigned NOT NULL,
`oxyloss` smallint(5) unsigned NOT NULL,
`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 */;
--
-- Table structure for table `feedback`
--
DROP TABLE IF EXISTS `feedback`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `feedback` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL,
`round_id` int(11) unsigned NOT NULL,
`key_name` varchar(32) NOT NULL,
`key_type` enum('text', 'amount', 'tally', 'nested tally', 'associative') NOT NULL,
`version` tinyint(3) unsigned NOT NULL,
`json` json NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `ipintel`
--
DROP TABLE IF EXISTS `ipintel`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ipintel` (
`ip` int(10) unsigned NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`intel` double NOT NULL DEFAULT '0',
PRIMARY KEY (`ip`),
KEY `idx_ipintel` (`ip`,`intel`,`date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `legacy_population`
--
DROP TABLE IF EXISTS `legacy_population`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `legacy_population` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`playercount` int(11) DEFAULT NULL,
`admincount` int(11) DEFAULT NULL,
`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 */;
--
-- Table structure for table `library`
--
DROP TABLE IF EXISTS `library`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `library` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`author` varchar(45) NOT NULL,
`title` varchar(45) NOT NULL,
`content` text NOT NULL,
`category` enum('Any','Fiction','Non-Fiction','Adult','Reference','Religion') NOT NULL,
`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`),
KEY `idx_lib_del_title` (`deleted`,`title`),
KEY `idx_lib_search` (`deleted`,`author`,`title`,`category`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `messages`
--
DROP TABLE IF EXISTS `messages`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `messages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` enum('memo','message','message sent','note','watchlist entry') NOT NULL,
`targetckey` varchar(32) NOT NULL,
`adminckey` varchar(32) NOT NULL,
`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,
`expire_timestamp` datetime DEFAULT NULL,
`severity` enum('high','medium','minor','none') DEFAULT 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`, `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 */;
--
-- Table structure for table `role_time`
--
DROP TABLE IF EXISTS `role_time`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `role_time`
( `ckey` VARCHAR(32) NOT NULL ,
`job` VARCHAR(32) NOT NULL ,
`minutes` INT UNSIGNED NOT NULL,
PRIMARY KEY (`ckey`, `job`)
) ENGINE = InnoDB;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `role_time`
--
DROP TABLE IF EXISTS `role_time_log`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE IF NOT EXISTS `role_time_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`ckey` varchar(32) NOT NULL,
`job` varchar(128) NOT NULL,
`delta` int(11) NOT NULL,
`datetime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`),
KEY `ckey` (`ckey`),
KEY `job` (`job`),
KEY `datetime` (`datetime`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `player`
--
DROP TABLE IF EXISTS `player`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `player` (
`ckey` varchar(32) NOT NULL,
`byond_key` varchar(32) DEFAULT 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',
`accountjoindate` DATE DEFAULT NULL,
`flags` smallint(5) unsigned DEFAULT '0' NOT NULL,
PRIMARY KEY (`ckey`),
KEY `idx_player_cid_ckey` (`computerid`,`ckey`),
KEY `idx_player_ip_ckey` (`ip`,`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `poll_option`
--
DROP TABLE IF EXISTS `poll_option`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `poll_option` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pollid` int(11) NOT NULL,
`text` varchar(255) NOT NULL,
`minval` int(3) DEFAULT NULL,
`maxval` int(3) DEFAULT NULL,
`descmin` varchar(32) DEFAULT NULL,
`descmid` varchar(32) DEFAULT NULL,
`descmax` varchar(32) DEFAULT NULL,
`default_percentage_calc` tinyint(1) unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
KEY `idx_pop_pollid` (`pollid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `poll_question`
--
DROP TABLE IF EXISTS `poll_question`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `poll_question` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`polltype` enum('OPTION','TEXT','NUMVAL','MULTICHOICE','IRV') NOT NULL,
`starttime` datetime NOT NULL,
`endtime` datetime NOT NULL,
`question` varchar(255) NOT NULL,
`adminonly` tinyint(1) unsigned NOT NULL,
`multiplechoiceoptions` int(2) DEFAULT NULL,
`createdby_ckey` varchar(32) DEFAULT NULL,
`createdby_ip` int(10) unsigned NOT NULL,
`dontshow` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_pquest_question_time_ckey` (`question`,`starttime`,`endtime`,`createdby_ckey`,`createdby_ip`),
KEY `idx_pquest_time_admin` (`starttime`,`endtime`,`adminonly`),
KEY `idx_pquest_id_time_type_admin` (`id`,`starttime`,`endtime`,`polltype`,`adminonly`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `poll_textreply`
--
DROP TABLE IF EXISTS `poll_textreply`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `poll_textreply` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL,
`pollid` int(11) NOT NULL,
`ckey` varchar(32) NOT NULL,
`ip` int(10) unsigned NOT NULL,
`replytext` varchar(2048) NOT NULL,
`adminrank` varchar(32) NOT NULL DEFAULT 'Player',
PRIMARY KEY (`id`),
KEY `idx_ptext_pollid_ckey` (`pollid`,`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `poll_vote`
--
DROP TABLE IF EXISTS `poll_vote`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `poll_vote` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL,
`pollid` int(11) NOT NULL,
`optionid` int(11) NOT NULL,
`ckey` varchar(32) NOT NULL,
`ip` int(10) unsigned NOT NULL,
`adminrank` varchar(32) NOT NULL,
`rating` int(2) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_pvote_pollid_ckey` (`pollid`,`ckey`),
KEY `idx_pvote_optionid_ckey` (`optionid`,`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `round`
--
DROP TABLE IF EXISTS `round`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `round` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`initialize_datetime` DATETIME NOT NULL,
`start_datetime` DATETIME NULL,
`shutdown_datetime` DATETIME NULL,
`end_datetime` DATETIME NULL,
`server_ip` INT(10) UNSIGNED NOT NULL,
`server_port` SMALLINT(5) UNSIGNED NOT NULL,
`commit_hash` CHAR(40) NULL,
`game_mode` VARCHAR(32) NULL,
`game_mode_result` VARCHAR(64) NULL,
`end_state` VARCHAR(64) NULL,
`shuttle_name` VARCHAR(64) NULL,
`map_name` VARCHAR(32) NULL,
`station_name` VARCHAR(80) NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
--
-- Table structure for table `schema_revision`
--
DROP TABLE IF EXISTS `schema_revision`;
CREATE TABLE `schema_revision` (
`major` TINYINT(3) unsigned NOT NULL,
`minor` TINYINT(3) unsigned NOT NULL,
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`major`, `minor`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DELIMITER $$
CREATE TRIGGER `role_timeTlogupdate` AFTER UPDATE ON `role_time` FOR EACH ROW BEGIN INSERT into role_time_log (ckey, job, delta) VALUES (NEW.CKEY, NEW.job, NEW.minutes-OLD.minutes);
END
$$
CREATE TRIGGER `role_timeTloginsert` AFTER INSERT ON `role_time` FOR EACH ROW BEGIN INSERT into role_time_log (ckey, job, delta) VALUES (NEW.ckey, NEW.job, NEW.minutes);
END
$$
CREATE TRIGGER `role_timeTlogdelete` AFTER DELETE ON `role_time` FOR EACH ROW BEGIN INSERT into role_time_log (ckey, job, delta) VALUES (OLD.ckey, OLD.job, 0-OLD.minutes);
END
$$
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!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 */;
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `admin`
--
DROP TABLE IF EXISTS `admin`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `admin` (
`ckey` varchar(32) NOT NULL,
`rank` varchar(32) NOT NULL,
PRIMARY KEY (`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `admin_log`
--
DROP TABLE IF EXISTS `admin_log`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `admin_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL,
`round_id` int(11) unsigned NOT NULL,
`adminckey` varchar(32) NOT NULL,
`adminip` int(10) unsigned NOT NULL,
`operation` enum('add admin','remove admin','change admin rank','add rank','remove rank','change rank flags') NOT NULL,
`target` varchar(32) NOT NULL,
`log` varchar(1000) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `admin_ranks`
--
DROP TABLE IF EXISTS `admin_ranks`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `admin_ranks` (
`rank` varchar(32) NOT NULL,
`flags` smallint(5) unsigned NOT NULL,
`exclude_flags` smallint(5) unsigned NOT NULL,
`can_edit_flags` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`rank`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `ban`
--
DROP TABLE IF EXISTS `ban`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ban` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`bantime` datetime NOT NULL,
`server_ip` int(10) unsigned NOT NULL,
`server_port` smallint(5) unsigned NOT NULL,
`round_id` int(11) NOT NULL,
`bantype` enum('PERMABAN','TEMPBAN','JOB_PERMABAN','JOB_TEMPBAN','ADMIN_PERMABAN','ADMIN_TEMPBAN') NOT NULL,
`reason` varchar(2048) NOT NULL,
`job` varchar(32) DEFAULT NULL,
`duration` int(11) NOT NULL,
`expiration_time` datetime NOT NULL,
`ckey` varchar(32) NOT NULL,
`computerid` varchar(32) NOT NULL,
`ip` int(10) unsigned NOT NULL,
`a_ckey` varchar(32) NOT NULL,
`a_computerid` varchar(32) NOT NULL,
`a_ip` int(10) unsigned NOT NULL,
`who` varchar(2048) NOT NULL,
`adminwho` varchar(2048) NOT NULL,
`edits` text,
`unbanned` tinyint(3) unsigned DEFAULT NULL,
`unbanned_datetime` datetime DEFAULT NULL,
`unbanned_ckey` varchar(32) DEFAULT NULL,
`unbanned_computerid` varchar(32) DEFAULT NULL,
`unbanned_ip` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_ban_checkban` (`ckey`,`bantype`,`expiration_time`,`unbanned`,`job`),
KEY `idx_ban_isbanned` (`ckey`,`ip`,`computerid`,`bantype`,`expiration_time`,`unbanned`),
KEY `idx_ban_count` (`id`,`a_ckey`,`bantype`,`expiration_time`,`unbanned`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `connection_log`
--
DROP TABLE IF EXISTS `connection_log`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `connection_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`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,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `death`
--
DROP TABLE IF EXISTS `death`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `death` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pod` varchar(50) NOT NULL,
`x_coord` smallint(5) unsigned NOT NULL,
`y_coord` smallint(5) unsigned NOT NULL,
`z_coord` smallint(5) unsigned NOT NULL,
`mapname` varchar(32) NOT NULL,
`server_ip` int(10) unsigned NOT NULL,
`server_port` smallint(5) unsigned NOT NULL,
`round_id` int(11) NOT NULL,
`tod` datetime NOT NULL COMMENT 'Time of death',
`job` varchar(32) NOT NULL,
`special` varchar(32) DEFAULT NULL,
`name` varchar(96) NOT NULL,
`byondkey` varchar(32) NOT NULL,
`laname` varchar(96) DEFAULT NULL,
`lakey` varchar(32) DEFAULT NULL,
`bruteloss` smallint(5) unsigned NOT NULL,
`brainloss` smallint(5) unsigned NOT NULL,
`fireloss` smallint(5) unsigned NOT NULL,
`oxyloss` smallint(5) unsigned NOT NULL,
`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 */;
--
-- Table structure for table `feedback`
--
DROP TABLE IF EXISTS `feedback`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `feedback` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL,
`round_id` int(11) unsigned NOT NULL,
`key_name` varchar(32) NOT NULL,
`key_type` enum('text', 'amount', 'tally', 'nested tally', 'associative') NOT NULL,
`version` tinyint(3) unsigned NOT NULL,
`json` json NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `ipintel`
--
DROP TABLE IF EXISTS `ipintel`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ipintel` (
`ip` int(10) unsigned NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`intel` double NOT NULL DEFAULT '0',
PRIMARY KEY (`ip`),
KEY `idx_ipintel` (`ip`,`intel`,`date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `legacy_population`
--
DROP TABLE IF EXISTS `legacy_population`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `legacy_population` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`playercount` int(11) DEFAULT NULL,
`admincount` int(11) DEFAULT NULL,
`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 */;
--
-- Table structure for table `library`
--
DROP TABLE IF EXISTS `library`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `library` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`author` varchar(45) NOT NULL,
`title` varchar(45) NOT NULL,
`content` text NOT NULL,
`category` enum('Any','Fiction','Non-Fiction','Adult','Reference','Religion') NOT NULL,
`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`),
KEY `idx_lib_del_title` (`deleted`,`title`),
KEY `idx_lib_search` (`deleted`,`author`,`title`,`category`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `messages`
--
DROP TABLE IF EXISTS `messages`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `messages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` enum('memo','message','message sent','note','watchlist entry') NOT NULL,
`targetckey` varchar(32) NOT NULL,
`adminckey` varchar(32) NOT NULL,
`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,
`expire_timestamp` datetime DEFAULT NULL,
`severity` enum('high','medium','minor','none') DEFAULT 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`, `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 */;
--
-- Table structure for table `role_time`
--
DROP TABLE IF EXISTS `role_time`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `role_time`
( `ckey` VARCHAR(32) NOT NULL ,
`job` VARCHAR(32) NOT NULL ,
`minutes` INT UNSIGNED NOT NULL,
PRIMARY KEY (`ckey`, `job`)
) ENGINE = InnoDB;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `role_time`
--
DROP TABLE IF EXISTS `role_time_log`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE IF NOT EXISTS `role_time_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`ckey` varchar(32) NOT NULL,
`job` varchar(128) NOT NULL,
`delta` int(11) NOT NULL,
`datetime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`),
KEY `ckey` (`ckey`),
KEY `job` (`job`),
KEY `datetime` (`datetime`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `player`
--
DROP TABLE IF EXISTS `player`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `player` (
`ckey` varchar(32) NOT NULL,
`byond_key` varchar(32) DEFAULT 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',
`accountjoindate` DATE DEFAULT NULL,
`flags` smallint(5) unsigned DEFAULT '0' NOT NULL,
PRIMARY KEY (`ckey`),
KEY `idx_player_cid_ckey` (`computerid`,`ckey`),
KEY `idx_player_ip_ckey` (`ip`,`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `poll_option`
--
DROP TABLE IF EXISTS `poll_option`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `poll_option` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pollid` int(11) NOT NULL,
`text` varchar(255) NOT NULL,
`minval` int(3) DEFAULT NULL,
`maxval` int(3) DEFAULT NULL,
`descmin` varchar(32) DEFAULT NULL,
`descmid` varchar(32) DEFAULT NULL,
`descmax` varchar(32) DEFAULT NULL,
`default_percentage_calc` tinyint(1) unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
KEY `idx_pop_pollid` (`pollid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `poll_question`
--
DROP TABLE IF EXISTS `poll_question`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `poll_question` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`polltype` enum('OPTION','TEXT','NUMVAL','MULTICHOICE','IRV') NOT NULL,
`starttime` datetime NOT NULL,
`endtime` datetime NOT NULL,
`question` varchar(255) NOT NULL,
`adminonly` tinyint(1) unsigned NOT NULL,
`multiplechoiceoptions` int(2) DEFAULT NULL,
`createdby_ckey` varchar(32) DEFAULT NULL,
`createdby_ip` int(10) unsigned NOT NULL,
`dontshow` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_pquest_question_time_ckey` (`question`,`starttime`,`endtime`,`createdby_ckey`,`createdby_ip`),
KEY `idx_pquest_time_admin` (`starttime`,`endtime`,`adminonly`),
KEY `idx_pquest_id_time_type_admin` (`id`,`starttime`,`endtime`,`polltype`,`adminonly`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `poll_textreply`
--
DROP TABLE IF EXISTS `poll_textreply`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `poll_textreply` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL,
`pollid` int(11) NOT NULL,
`ckey` varchar(32) NOT NULL,
`ip` int(10) unsigned NOT NULL,
`replytext` varchar(2048) NOT NULL,
`adminrank` varchar(32) NOT NULL DEFAULT 'Player',
PRIMARY KEY (`id`),
KEY `idx_ptext_pollid_ckey` (`pollid`,`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `poll_vote`
--
DROP TABLE IF EXISTS `poll_vote`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `poll_vote` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL,
`pollid` int(11) NOT NULL,
`optionid` int(11) NOT NULL,
`ckey` varchar(32) NOT NULL,
`ip` int(10) unsigned NOT NULL,
`adminrank` varchar(32) NOT NULL,
`rating` int(2) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_pvote_pollid_ckey` (`pollid`,`ckey`),
KEY `idx_pvote_optionid_ckey` (`optionid`,`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `round`
--
DROP TABLE IF EXISTS `round`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `round` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`initialize_datetime` DATETIME NOT NULL,
`start_datetime` DATETIME NULL,
`shutdown_datetime` DATETIME NULL,
`end_datetime` DATETIME NULL,
`server_ip` INT(10) UNSIGNED NOT NULL,
`server_port` SMALLINT(5) UNSIGNED NOT NULL,
`commit_hash` CHAR(40) NULL,
`game_mode` VARCHAR(32) NULL,
`game_mode_result` VARCHAR(64) NULL,
`end_state` VARCHAR(64) NULL,
`shuttle_name` VARCHAR(64) NULL,
`map_name` VARCHAR(32) NULL,
`station_name` VARCHAR(80) NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
--
-- Table structure for table `schema_revision`
--
DROP TABLE IF EXISTS `schema_revision`;
CREATE TABLE `schema_revision` (
`major` TINYINT(3) unsigned NOT NULL,
`minor` TINYINT(3) unsigned NOT NULL,
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`major`, `minor`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DELIMITER $$
CREATE TRIGGER `role_timeTlogupdate` AFTER UPDATE ON `role_time` FOR EACH ROW BEGIN INSERT into role_time_log (ckey, job, delta) VALUES (NEW.CKEY, NEW.job, NEW.minutes-OLD.minutes);
END
$$
CREATE TRIGGER `role_timeTloginsert` AFTER INSERT ON `role_time` FOR EACH ROW BEGIN INSERT into role_time_log (ckey, job, delta) VALUES (NEW.ckey, NEW.job, NEW.minutes);
END
$$
CREATE TRIGGER `role_timeTlogdelete` AFTER DELETE ON `role_time` FOR EACH ROW BEGIN INSERT into role_time_log (ckey, job, delta) VALUES (OLD.ckey, OLD.job, 0-OLD.minutes);
END
$$
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!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 */;
+1 -1
View File
@@ -2372,7 +2372,7 @@
},
/area/awaymission/BMPship/Midship)
"hh" = (
/obj/item/caution,
/obj/item/clothing/suit/caution,
/turf/open/floor/plating/airless,
/area/awaymission/BMPship/Midship)
"hi" = (
@@ -153,10 +153,6 @@
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"cX" = (
/obj/structure/closet/secure_closet/miner,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"dk" = (
/obj/structure/table,
/obj/item/stack/packageWrap,
@@ -398,6 +394,13 @@
},
/turf/open/floor/plating,
/area/mine/laborcamp/security)
"he" = (
/obj/machinery/door/airlock/external/glass,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"hf" = (
/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
@@ -417,16 +420,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"hH" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 8
},
/obj/effect/turf_decal/tile/brown{
dir = 4
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"hP" = (
/obj/structure/lattice/catwalk,
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{
@@ -503,6 +496,14 @@
},
/turf/open/floor/plasteel,
/area/mine/production)
"ja" = (
/obj/item/bikehorn{
color = "#000";
desc = "A horn off of a bicycle. This one has been charred to hell and back, yet somehow it still honks.";
name = "charred bike horn"
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"jf" = (
/obj/structure/table,
/obj/item/storage/firstaid/regular,
@@ -769,11 +770,6 @@
/obj/effect/turf_decal/tile/red,
/turf/open/floor/plasteel,
/area/mine/laborcamp/security)
"nH" = (
/obj/machinery/light,
/obj/structure/closet/wardrobe/miner,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"nI" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
@@ -841,6 +837,12 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/mine/production)
"nS" = (
/obj/machinery/computer/shuttle/mining/common{
dir = 4
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"nX" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -1275,8 +1277,12 @@
/turf/open/floor/plasteel,
/area/mine/production)
"uG" = (
/obj/structure/ore_box,
/obj/effect/turf_decal/box,
/obj/structure/table,
/obj/item/clothing/glasses/meson,
/obj/item/storage/bag/ore,
/obj/item/pickaxe,
/obj/item/mining_scanner,
/obj/item/flashlight,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"uI" = (
@@ -1439,6 +1445,15 @@
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"wQ" = (
/obj/structure/table,
/obj/item/tank/internals/emergency_oxygen{
pixel_x = 5;
pixel_y = 3
},
/obj/item/tank/internals/emergency_oxygen,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"wV" = (
/turf/closed/mineral/random/volcanic,
/area/lavaland/surface/outdoors/explored)
@@ -1536,6 +1551,18 @@
},
/turf/open/floor/plasteel/freezer,
/area/mine/living_quarters)
"yZ" = (
/obj/docking_port/stationary{
area_type = /area/lavaland/surface/outdoors;
dir = 8;
dwidth = 3;
height = 7;
id = "lavaland_common_away";
name = "Lavaland Mining Public Wing";
width = 7
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"zh" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
@@ -1644,6 +1671,13 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/mine/production)
"AC" = (
/obj/machinery/door/airlock/external/glass,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"AH" = (
/obj/machinery/cryopod{
dir = 4
@@ -1719,6 +1753,12 @@
/obj/structure/reagent_dispensers/fueltank,
/turf/open/floor/plating,
/area/mine/living_quarters)
"By" = (
/obj/structure/chair{
dir = 4
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"BD" = (
/obj/machinery/door/airlock/maintenance{
name = "Mining Station Maintenance";
@@ -1843,6 +1883,7 @@
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Dr" = (
/obj/structure/chair,
/obj/structure/extinguisher_cabinet{
pixel_x = -5;
pixel_y = 30
@@ -1850,9 +1891,6 @@
/obj/effect/turf_decal/tile/purple{
dir = 4
},
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Dv" = (
@@ -2695,17 +2733,12 @@
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Pp" = (
/obj/machinery/camera{
c_tag = "Public Shuttle Lobby";
network = list("mine")
},
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 4
/obj/structure/table,
/obj/item/gps/mining{
pixel_x = 3;
pixel_y = 5
},
/obj/item/gps/mining,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Pq" = (
@@ -2750,6 +2783,10 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/white,
/area/mine/laborcamp)
"Qd" = (
/obj/structure/displaycase,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Qi" = (
/obj/structure/table,
/obj/machinery/reagentgrinder,
@@ -2825,9 +2862,13 @@
/turf/open/floor/plasteel,
/area/mine/laborcamp)
"Ru" = (
/obj/structure/chair,
/obj/machinery/newscaster{
pixel_y = 32
},
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Rv" = (
@@ -3019,13 +3060,13 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/structure/cable{
icon_state = "1-2"
},
/mob/living/simple_animal/bot/secbot/beepsky{
desc = "Powered by the tears and sweat of laborers.";
name = "Prison Ofitser"
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel,
/area/mine/laborcamp/security)
"Un" = (
@@ -3241,10 +3282,6 @@
},
/turf/open/floor/plating,
/area/mine/living_quarters)
"XX" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/closed/wall,
/area/mine/living_quarters)
"Ya" = (
/turf/closed/wall/r_wall,
/area/mine/laborcamp)
@@ -4211,9 +4248,9 @@ VT
VT
VT
VT
VT
VT
VT
Lm
Lm
Lm
VT
VT
VT
@@ -4266,12 +4303,12 @@ VT
VT
VT
VT
VT
VT
VT
VT
VT
VT
Lm
Lm
Lm
Lm
Lm
Lm
VT
VT
VT
@@ -4322,15 +4359,15 @@ VT
VT
VT
VT
VT
VT
VT
VT
VT
VT
VT
VT
VT
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
VT
VT
VT
@@ -4379,16 +4416,16 @@ VT
VT
VT
VT
VT
VT
VT
VT
Lm
Lm
VT
VT
Lm
VT
Lm
Lm
Lm
Lm
Lm
Lm
Lm
VT
VT
VT
@@ -4435,17 +4472,17 @@ wz
wz
VT
VT
VT
VT
Lm
VT
VT
VT
Lm
VT
VT
VT
VT
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
VT
VT
@@ -4492,18 +4529,18 @@ wz
wz
Lm
VT
VT
VT
Lm
Lm
Lm
Lm
Lm
VT
VT
VT
VT
VT
Lm
Lm
Lm
Lm
Lm
Lm
Lm
VT
VT
VT
@@ -4549,7 +4586,6 @@ VT
wz
Lm
VT
VT
Lm
Lm
Lm
@@ -4558,8 +4594,9 @@ Lm
Lm
Lm
Lm
VT
VT
Lm
Lm
Lm
VT
VT
VT
@@ -4615,7 +4652,7 @@ Lm
Lm
Lm
Lm
VT
Lm
VT
VT
VT
@@ -4662,11 +4699,11 @@ VT
VT
VT
VT
VT
Lm
Lm
VT
VT
Lm
Lm
Lm
Lm
Lm
Lm
@@ -4722,10 +4759,10 @@ wz
Lm
Lm
Lm
VT
Lm
Lm
Lm
yZ
Lm
Lm
Lm
@@ -4772,18 +4809,18 @@ Gt
Dv
my
VT
ja
VT
VT
VT
wz
wz
Lm
Lm
Lm
VT
Lm
Lm
Lm
Lm
KV
he
KV
Lm
Lm
Lm
@@ -4833,14 +4870,14 @@ VT
VT
Lm
Lm
wz
wz
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
KV
Ag
KV
Lm
Lm
VT
@@ -4893,11 +4930,11 @@ Lm
VN
VN
VN
XX
VN
VN
VN
KV
VN
KV
AC
KV
VT
VT
VT
@@ -4949,12 +4986,12 @@ pu
bn
VN
zy
Ag
Ag
Ag
By
nS
By
Ag
qZ
VN
KV
VT
VT
VT
@@ -5010,8 +5047,8 @@ Ag
Ag
Ag
Ag
cX
VN
Ag
KV
VT
VT
VT
@@ -5067,8 +5104,8 @@ Ag
uG
uG
Ag
cX
VN
eS
KV
VT
VT
VT
@@ -5124,8 +5161,8 @@ KO
uG
uG
Ag
cX
VN
Ag
KV
VT
VT
VT
@@ -5181,7 +5218,7 @@ RP
Ag
Ag
Ag
nH
oy
VN
VT
VT
@@ -5235,10 +5272,10 @@ oy
VN
Pp
sx
eS
Ag
Ag
hH
Pp
wQ
Qd
Qd
VN
wz
Lm
+1 -1
View File
@@ -2710,7 +2710,7 @@
/obj/structure/cable{
icon_state = "4-8"
},
/obj/item/caution,
/obj/item/clothing/suit/caution,
/obj/effect/turf_decal/tile/green,
/obj/effect/turf_decal/tile/green{
dir = 4
@@ -312,7 +312,7 @@
/obj/structure/janitorialcart,
/obj/item/mop,
/obj/item/reagent_containers/glass/bucket,
/obj/item/caution,
/obj/item/clothing/suit/caution,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/awaymission/cabin)
+1 -1
View File
@@ -1 +1 @@
#define FORCE_MAP "_maps/cogstation.json"
#define FORCE_MAP "_maps/cogstation.json"
+1 -1
View File
@@ -1 +1 @@
#define FORCE_MAP "_maps/kilostation.json"
#define FORCE_MAP "_maps/kilostation.json"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -26,4 +26,4 @@
..()
MAP_JOB_CHECK
access += ACCESS_MAINT_TUNNELS
minimal_access += ACCESS_MAINT_TUNNELS
minimal_access += ACCESS_MAINT_TUNNELS
+235 -116
View File
@@ -660,6 +660,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"abr" = (
@@ -1308,6 +1309,45 @@
/obj/item/toy/poolnoodle/blue,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness/pool)
"acy" = (
/obj/machinery/conveyor_switch/oneway{
dir = 8;
id = "cargounload"
},
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 4
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"acz" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"acA" = (
/obj/machinery/conveyor{
dir = 9;
id = "cargounload"
},
/turf/open/floor/plating,
/area/quartermaster/storage)
"acB" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/machinery/light/floor,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"acF" = (
/obj/docking_port/stationary{
dir = 2;
@@ -1484,9 +1524,6 @@
/obj/machinery/light{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
/obj/machinery/camera{
c_tag = "Arrivals Dock - Fore";
dir = 8;
@@ -1495,6 +1532,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"acX" = (
@@ -3495,9 +3535,7 @@
dir = 4
},
/obj/effect/turf_decal/delivery,
/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/gear_painter,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"ajL" = (
@@ -3783,6 +3821,9 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/white/corner,
/area/hallway/secondary/entry)
"akn" = (
@@ -12917,18 +12958,6 @@
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aAH" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/conveyor_switch/oneway{
dir = 8;
id = "cargounload"
},
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 4
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aAI" = (
/obj/structure/cable/white,
/obj/structure/cable/white{
@@ -13615,14 +13644,6 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aBZ" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aCa" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/brown,
@@ -14263,23 +14284,6 @@
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aDf" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
/obj/machinery/door/airlock/external{
name = "Supply Dock Airlock";
req_access_txt = "31"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aDg" = (
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
@@ -32961,6 +32965,10 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/oil,
/obj/effect/turf_decal/bot,
/obj/item/stack/ore/silver{
amount = 2
},
/obj/item/stack/ore/iron,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"biu" = (
@@ -49387,7 +49395,7 @@
},
/obj/machinery/door/airlock/security/glass{
name = "Security E.V.A. Storage";
req_access_txt = "3"
req_access_txt = "1"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -66630,6 +66638,13 @@
/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/library)
"chT" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"chV" = (
/obj/machinery/newscaster{
pixel_x = -32
@@ -79370,6 +79385,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/machinery/gear_painter,
/turf/open/floor/plasteel{
heat_capacity = 1e+006
},
@@ -81561,12 +81577,12 @@
/turf/open/floor/plasteel,
/area/engine/storage)
"cHt" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/status_display/ai{
pixel_y = -32
},
/obj/effect/turf_decal/bot,
/obj/structure/reagent_dispensers/fueltank/high,
/turf/open/floor/plasteel,
/area/engine/storage)
"cHu" = (
@@ -110331,8 +110347,8 @@
},
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/components/binary/pump/on{
name = "Space Loop Out";
dir = 4
dir = 4;
name = "Space Loop Out"
},
/turf/open/floor/plasteel,
/area/science/mixing)
@@ -125416,6 +125432,12 @@
},
/turf/open/floor/plasteel/white,
/area/science/misc_lab)
"fer" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"fhE" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/medical{
@@ -125528,6 +125550,12 @@
},
/turf/open/floor/engine,
/area/science/mixing)
"gfJ" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"gmj" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/r_wall,
@@ -125630,14 +125658,6 @@
},
/turf/open/floor/plasteel,
/area/maintenance/department/electrical)
"hdH" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/conveyor{
dir = 9;
id = "cargoload"
},
/turf/open/floor/plating,
/area/quartermaster/storage)
"hic" = (
/obj/structure/table/reinforced,
/obj/item/integrated_electronics/analyzer,
@@ -125689,6 +125709,14 @@
/obj/effect/landmark/start/cyborg,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"hzR" = (
/obj/effect/turf_decal/delivery,
/obj/structure/table,
/obj/item/gps/mining{
gpstag = "MINE_PUB"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"hAf" = (
/obj/structure/cable/white{
icon_state = "4-8"
@@ -125847,6 +125875,21 @@
},
/turf/open/floor/plating,
/area/engine/atmos)
"iCO" = (
/obj/effect/turf_decal/delivery,
/obj/structure/chair{
dir = 8
},
/obj/machinery/camera{
c_tag = "Arrivals Dock - Public Mining";
dir = 8;
name = "arrivals camera"
},
/obj/machinery/light{
dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"iIl" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -125943,6 +125986,13 @@
},
/turf/open/floor/plasteel,
/area/maintenance/solars/port/aft)
"iUI" = (
/obj/effect/turf_decal/delivery,
/obj/structure/chair{
dir = 8
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"jdx" = (
/obj/structure/lattice,
/obj/structure/grille,
@@ -126193,6 +126243,10 @@
},
/turf/open/space,
/area/engine/atmos)
"kmz" = (
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"kqo" = (
/obj/structure/cable/white{
icon_state = "4-8"
@@ -126624,6 +126678,18 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"mVW" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/airlock/external{
name = "External Docking Port"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"mWZ" = (
/obj/machinery/atmospherics/components/binary/pump,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -126635,6 +126701,17 @@
},
/turf/open/floor/engine,
/area/science/mixing)
"naC" = (
/obj/docking_port/stationary{
dwidth = 3;
height = 5;
id = "commonmining_home";
name = "SS13: Common Mining Dock";
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
width = 7
},
/turf/open/space/basic,
/area/space)
"nbi" = (
/obj/effect/decal/cleanable/dirt,
/turf/closed/wall/r_wall,
@@ -126962,6 +127039,14 @@
/obj/effect/landmark/start/paramedic,
/turf/open/floor/plasteel/white,
/area/medical/storage)
"pIl" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"pQm" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -127061,6 +127146,13 @@
/obj/effect/spawner/lootdrop/keg,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"qEF" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/computer/shuttle/mining/common{
dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"qUn" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral{
@@ -127633,6 +127725,15 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/science/circuit)
"wlT" = (
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"wmL" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -127654,6 +127755,15 @@
},
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"wpx" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"wum" = (
/obj/machinery/atmospherics/pipe/simple/yellow/visible{
dir = 4
@@ -127738,6 +127848,15 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"xaL" = (
/obj/effect/turf_decal/delivery,
/obj/structure/table,
/obj/machinery/light{
dir = 8
},
/obj/item/flashlight,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"xcU" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
@@ -159602,13 +159721,13 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aad
aad
aaO
aaO
abf
aaO
aaO
aad
aad
aad
@@ -159859,13 +159978,13 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
qgU
aad
aaa
aaO
qEF
xaL
hzR
aaO
aad
aaa
aaa
@@ -160116,13 +160235,13 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
aaO
aaO
aaO
abe
abC
gfJ
aaO
abf
aaO
aaO
@@ -160372,18 +160491,18 @@ hZh
hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
aaO
abe
naC
mVW
kmz
mVW
acb
fer
aiT
abZ
abp
abC
abC
abZ
abC
abC
abC
acV
@@ -160630,19 +160749,19 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
aaO
aaO
aaO
vcs
wpx
pIl
wlT
abq
abD
abD
abZ
abD
abD
chT
chT
chT
chT
chT
acW
adr
adr
@@ -160887,12 +161006,12 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aad
aaa
aaO
agk
iCO
iUI
aaO
abf
aaO
@@ -161144,14 +161263,14 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
qgU
aad
aad
aaO
aaO
abf
aaO
aaO
aad
aaa
aaa
aad
@@ -161402,12 +161521,12 @@ hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aad
aad
aad
aad
aad
aad
aad
aad
aad
@@ -171733,7 +171852,7 @@ azy
aAG
aDb
aAG
aAG
acB
azy
azy
aAG
@@ -173015,7 +173134,7 @@ axk
ayB
azE
azE
aBZ
acz
azE
azE
azE
@@ -173271,9 +173390,9 @@ aoF
axl
ayC
azF
aAH
aCa
aCa
acy
aEf
aEf
aEf
aEf
aCa
@@ -173529,8 +173648,8 @@ axm
ayD
ayD
ayD
hdH
azD
acA
aEe
aaq
azD
kam
@@ -173787,7 +173906,7 @@ ayE
azG
aAI
aCb
aDf
aFk
avW
aFk
aGD
+33 -30
View File
@@ -14492,7 +14492,6 @@
/turf/open/floor/plating,
/area/maintenance/starboard)
"aym" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/effect/turf_decal/delivery,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -14503,6 +14502,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/reagent_dispensers/fueltank/high,
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"ayn" = (
@@ -48007,8 +48007,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/structure/closet/wardrobe/mixed,
/obj/machinery/light/small,
/obj/effect/turf_decal/delivery,
/obj/machinery/gear_painter,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/locker)
"bzo" = (
@@ -48767,7 +48768,6 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness/recreation)
"bAA" = (
/obj/structure/table,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -48777,11 +48777,6 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/item/storage/backpack{
pixel_x = 4;
pixel_y = 4
},
/obj/item/storage/backpack,
/obj/machinery/firealarm{
dir = 8;
pixel_x = 26
@@ -49398,6 +49393,7 @@
dir = 1;
name = "recreation camera"
},
/obj/structure/closet/wardrobe/mixed,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"bBy" = (
@@ -54797,11 +54793,6 @@
/area/hallway/secondary/exit/departure_lounge)
"bKn" = (
/obj/structure/table,
/obj/item/paper_bin{
pixel_x = -4;
pixel_y = 4
},
/obj/item/pen,
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -54810,6 +54801,11 @@
/obj/machinery/airalarm{
pixel_y = 22
},
/obj/item/storage/backpack{
pixel_x = 4;
pixel_y = 4
},
/obj/item/storage/backpack,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness/recreation)
"bKo" = (
@@ -55425,6 +55421,12 @@
pixel_x = 28;
pixel_y = 22
},
/obj/structure/table,
/obj/item/paper_bin{
pixel_x = -4;
pixel_y = 4
},
/obj/item/pen,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"bLd" = (
@@ -60844,6 +60846,11 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/structure/table,
/obj/item/toy/figure/assistant{
pixel_x = 8;
pixel_y = 6
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bTD" = (
@@ -61021,6 +61028,12 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 10
},
/obj/structure/table,
/obj/item/paper_bin{
pixel_x = -4;
pixel_y = 4
},
/obj/item/pen,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bTO" = (
@@ -61259,19 +61272,8 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/structure/table,
/obj/item/paper_bin{
pixel_x = -4;
pixel_y = 4
},
/obj/item/pen,
/obj/item/toy/figure/assistant{
pixel_x = 8;
pixel_y = 6
},
/obj/effect/turf_decal/loading_area{
dir = 1
},
/obj/effect/turf_decal/delivery,
/obj/machinery/gear_painter,
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/entry)
"bUi" = (
@@ -71325,15 +71327,16 @@
icon_gib = "magicarp_gib";
icon_living = "magicarp";
icon_state = "magicarp";
maxHealth = 200;
max_co2 = 5;
max_tox = 2;
maxHealth = 200;
melee_damage_lower = 15;
melee_damage_upper = 20;
min_oxy = 5;
name = "Lia";
real_name = "Lia";
response_help = "pets";
response_help_continuous = "pets";
response_help_simple = "pet";
turns_per_move = 10
},
/turf/open/floor/plasteel/dark,
@@ -85507,8 +85510,8 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/machinery/atmospherics/components/binary/pump/on{
name = "Space Loop Out";
dir = 8
dir = 8;
name = "Space Loop Out"
},
/turf/open/floor/plating{
icon_state = "panelscorched"
+3 -2
View File
@@ -10679,7 +10679,7 @@
light_color = "#e8eaff"
},
/obj/machinery/vending/wardrobe/jani_wardrobe{
products = list(/obj/item/clothing/under/rank/civilian/janitor = 2, /obj/item/cartridge/janitor = 2, /obj/item/clothing/gloves/color/black = 2, /obj/item/clothing/head/soft/purple = 2, /obj/item/paint/paint_remover = 2, /obj/item/melee/flyswatter = 2, /obj/item/flashlight = 2, /obj/item/caution = 10, /obj/item/holosign_creator = 2, /obj/item/lightreplacer = 2, /obj/item/soap/nanotrasen = 2, /obj/item/storage/bag/trash = 2, /obj/item/clothing/shoes/galoshes = 2, /obj/item/watertank/janitor = 2, /obj/item/storage/belt/janitor = 2)
products = list(/obj/item/clothing/under/rank/civilian/janitor = 2, /obj/item/cartridge/janitor = 2, /obj/item/clothing/gloves/color/black = 2, /obj/item/clothing/head/soft/purple = 2, /obj/item/paint/paint_remover = 2, /obj/item/melee/flyswatter = 2, /obj/item/flashlight = 2, /obj/item/clothing/suit/caution = 10, /obj/item/holosign_creator = 2, /obj/item/lightreplacer = 2, /obj/item/soap/nanotrasen = 2, /obj/item/storage/bag/trash = 2, /obj/item/clothing/shoes/galoshes = 2, /obj/item/watertank/janitor = 2, /obj/item/storage/belt/janitor = 2)
},
/turf/open/floor/plating,
/area/janitor)
@@ -13637,7 +13637,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"IX" = (
/obj/item/caution,
/obj/item/clothing/suit/caution,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
@@ -13764,6 +13764,7 @@
/obj/effect/turf_decal/trimline/neutral/filled/corner{
dir = 4
},
/obj/machinery/gear_painter,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"Jp" = (
+105 -53
View File
@@ -19827,6 +19827,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/item/stack/ore/silver{
amount = 2
},
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aJC" = (
@@ -20222,6 +20225,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/item/stack/ore/iron,
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"aKq" = (
@@ -53981,8 +53985,8 @@
pixel_y = -26
},
/obj/structure/cable,
/obj/structure/reagent_dispensers/fueltank,
/obj/effect/turf_decal/bot,
/obj/structure/reagent_dispensers/fueltank/high,
/turf/open/floor/plasteel,
/area/engine/storage_shared)
"cvh" = (
@@ -63034,6 +63038,19 @@
/obj/item/assembly/flash/handheld,
/turf/open/floor/plating,
/area/storage/tech)
"cYI" = (
/obj/docking_port/stationary{
dir = 2;
dwidth = 3;
height = 5;
icon_state = "pinonfar";
id = "commonmining_home";
name = "SS13: Common Mining Dock";
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
width = 7
},
/turf/open/space/basic,
/area/space)
"dcB" = (
/obj/effect/turf_decal/trimline/neutral/filled/line{
dir = 4
@@ -63774,6 +63791,14 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/maintenance/department/cargo)
"etv" = (
/obj/machinery/door/airlock/external/glass,
/obj/structure/fans/tiny,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"euD" = (
/obj/machinery/door/airlock/hatch{
name = "Telecomms Server Room"
@@ -67057,12 +67082,12 @@
/area/engine/atmos)
"kgv" = (
/obj/structure/railing{
icon_state = "railing";
dir = 4
dir = 4;
icon_state = "railing"
},
/obj/structure/railing{
icon_state = "railing";
dir = 8
dir = 8;
icon_state = "railing"
},
/turf/open/floor/plasteel/stairs/old,
/area/maintenance/department/medical)
@@ -68221,6 +68246,20 @@
/obj/machinery/power/grounding_rod,
/turf/open/floor/plating/airless,
/area/engine/engineering)
"mnL" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/obj/machinery/computer/shuttle/mining/common{
dir = 8
},
/obj/machinery/camera{
c_tag = "Arrivals Dock Public Mining";
dir = 1;
name = "arrivals camera"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"mqh" = (
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
@@ -69098,16 +69137,6 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/toilet/auxiliary)
"ohk" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/obj/structure/chair{
dir = 4
},
/obj/machinery/light,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"ojZ" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -69418,6 +69447,11 @@
},
/turf/open/floor/plating,
/area/maintenance/port)
"oTI" = (
/obj/machinery/door/airlock/external/glass,
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"oUp" = (
/obj/structure/closet/crate,
/obj/item/stack/sheet/metal/fifty,
@@ -69460,6 +69494,16 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/toilet/auxiliary)
"oVP" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/table,
/obj/item/gps/mining{
gpstag = "MINE_PUB"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"oXg" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -69905,6 +69949,14 @@
},
/turf/open/floor/plasteel,
/area/engine/break_room)
"pPG" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/table,
/obj/item/flashlight,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"pRv" = (
/obj/machinery/air_sensor{
id_tag = "tox_sensor"
@@ -71189,12 +71241,12 @@
"tcW" = (
/obj/structure/stairs/west,
/obj/structure/railing{
icon_state = "railing";
dir = 4
dir = 4;
icon_state = "railing"
},
/obj/structure/railing{
icon_state = "railing";
dir = 8
dir = 8;
icon_state = "railing"
},
/turf/open/floor/plating,
/area/maintenance/department/medical)
@@ -103741,10 +103793,10 @@ nNI
ngo
bQW
nNI
aav
aav
aab
aab
nNI
xMt
xMt
nNI
aab
aab
aab
@@ -103996,15 +104048,15 @@ gLI
ifC
jEO
uYv
ohk
uYv
uYv
jEO
jEO
cIu
nNI
xMt
xMt
nNI
aab
aav
aab
aab
aab
aab
aab
aab
aab
aab
@@ -104253,16 +104305,16 @@ rEw
iiC
jMW
rEw
rEw
rEw
rEw
rEw
cwD
xMt
aab
aav
aab
aab
aab
aab
aab
aab
oTI
cxe
cVf
etv
cYI
aab
aab
aab
@@ -104510,15 +104562,15 @@ cvp
iqD
jto
jto
cvI
jto
jto
pPG
oVP
mnL
nNI
xMt
aab
aav
aab
aab
aab
aab
aab
xMt
nNI
aab
aab
aab
@@ -104769,10 +104821,10 @@ xMt
cWd
nNI
nNI
aab
aav
aab
aab
nNI
xMt
xMt
nNI
aab
aab
aab
@@ -105027,7 +105079,7 @@ cJk
nNI
aab
aab
aav
aab
aab
aab
aab
File diff suppressed because it is too large Load Diff
@@ -15268,6 +15268,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/dorms)
"axG" = (
@@ -19618,9 +19621,6 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/dorms)
"aEL" = (
/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/status_display{
pixel_y = -32
},
@@ -19635,6 +19635,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/machinery/gear_painter,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/dorms)
"aEM" = (
@@ -24502,10 +24503,6 @@
/obj/effect/turf_decal/loading_area{
dir = 1
},
/obj/effect/turf_decal/stripes/corner,
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
@@ -25146,13 +25143,13 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"aNg" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/structure/sign/warning/nosmoking{
pixel_y = -32
},
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/obj/structure/reagent_dispensers/fueltank/high,
/turf/open/floor/plasteel,
/area/engine/engineering)
"aNh" = (
+156 -88
View File
@@ -511,10 +511,10 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"abi" = (
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk{
dir = 8
/obj/structure/disposalpipe/segment{
dir = 10
},
/obj/machinery/gear_painter,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"abj" = (
@@ -807,6 +807,11 @@
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/fitness/pool)
"abU" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/landmark/xmastree,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/bar)
"abV" = (
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plasteel/white,
@@ -824,6 +829,13 @@
"abY" = (
/turf/open/floor/plasteel/white,
/area/ai_monitored/turret_protected/ai)
"abZ" = (
/obj/structure/flora/ausbushes/ywflowers,
/obj/structure/flora/ausbushes/ppflowers,
/obj/structure/flora/ausbushes/sparsegrass,
/obj/effect/landmark/xmastree,
/turf/open/floor/grass,
/area/hydroponics/garden/monastery)
"acc" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -24591,7 +24603,7 @@
/turf/open/floor/plating,
/area/maintenance/department/cargo)
"beS" = (
/obj/item/caution,
/obj/item/clothing/suit/caution,
/turf/open/floor/plating,
/area/maintenance/department/cargo)
"beU" = (
@@ -32021,23 +32033,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"bwq" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
name = "Monastery Transit"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bwr" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
name = "Monastery Transit"
},
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bws" = (
/obj/structure/closet,
/obj/item/stack/cable_coil/random,
@@ -32812,9 +32807,6 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bxY" = (
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plasteel/white,
/area/hallway/secondary/entry)
"bxZ" = (
@@ -33559,6 +33551,9 @@
network = list("monastery");
pixel_x = 28
},
/obj/machinery/light{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/hallway/secondary/entry)
"bzC" = (
@@ -46854,7 +46849,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
/obj/structure/reagent_dispensers/fueltank,
/obj/structure/reagent_dispensers/fueltank/high,
/turf/open/floor/plasteel,
/area/engine/engineering)
"cdL" = (
@@ -47506,12 +47501,6 @@
},
/turf/open/floor/plasteel/dark,
/area/chapel/main/monastery)
"cgj" = (
/obj/structure/flora/ausbushes/ywflowers,
/obj/structure/flora/ausbushes/ppflowers,
/obj/structure/flora/ausbushes/sparsegrass,
/turf/open/floor/grass,
/area/hydroponics/garden/monastery)
"cgk" = (
/obj/structure/flora/ausbushes/ywflowers,
/obj/structure/flora/ausbushes/sparsegrass,
@@ -53109,6 +53098,16 @@
/obj/structure/barricade/wooden,
/turf/open/floor/plating,
/area/maintenance/department/security/brig)
"deJ" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/table,
/obj/item/gps/mining{
gpstag = "MINE_PUB"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"dgg" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -54469,8 +54468,8 @@
/area/maintenance/department/security/brig)
"gjv" = (
/obj/machinery/atmospherics/components/binary/pump/on{
name = "Space Loop In";
dir = 1
dir = 1;
name = "Space Loop In"
},
/turf/open/floor/plating,
/area/maintenance/department/science)
@@ -56534,12 +56533,6 @@
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"kIc" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plasteel/white{
heat_capacity = 1e+006
},
/area/hallway/secondary/entry)
"kIo" = (
/obj/structure/table,
/obj/item/paper_bin{
@@ -58350,6 +58343,18 @@
},
/turf/open/floor/plating,
/area/quartermaster/miningdock)
"oQm" = (
/obj/docking_port/stationary{
dir = 8;
dwidth = 3;
height = 5;
id = "commonmining_home";
name = "SS13: Common Mining Dock";
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
width = 7
},
/turf/open/space/basic,
/area/space)
"oRX" = (
/obj/structure/closet,
/turf/open/floor/plating,
@@ -58645,6 +58650,15 @@
},
/turf/open/floor/plasteel/white/corner,
/area/hallway/secondary/exit/departure_lounge)
"pqP" = (
/obj/machinery/door/airlock/external{
name = "Port Docking Bay 2"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"prQ" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -58707,9 +58721,6 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/medical/chemistry)
"pyw" = (
/turf/open/space/basic,
/area/hallway/secondary/entry)
"pzF" = (
/mob/living/simple_animal/opossum,
/turf/open/floor/wood,
@@ -58751,6 +58762,15 @@
},
/turf/open/floor/plasteel/dark,
/area/science/explab)
"pEH" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/chair/comfy{
dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"pEL" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -59118,6 +59138,13 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
/area/maintenance/department/engine)
"qAx" = (
/obj/structure/disposalpipe/trunk{
dir = 1
},
/obj/machinery/disposal/bin,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"qAM" = (
/obj/effect/spawner/lootdrop/maintenance,
/obj/item/cigbutt,
@@ -59281,6 +59308,15 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"qRm" = (
/obj/machinery/door/airlock/external{
name = "Port Docking Bay 2"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"qTV" = (
/obj/item/radio/intercom{
name = "Station Intercom (General)";
@@ -59997,6 +60033,14 @@
},
/turf/open/floor/plating,
/area/maintenance/department/security/brig)
"sIK" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/table,
/obj/item/flashlight,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"sJp" = (
/obj/machinery/atmospherics/pipe/simple/general/visible,
/obj/effect/turf_decal/stripes/line,
@@ -60896,6 +60940,10 @@
/obj/effect/turf_decal/plaque,
/turf/open/floor/plating,
/area/maintenance/department/engine)
"uNA" = (
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"uQR" = (
/obj/item/ammo_casing/shotgun/beanbag,
/turf/open/floor/plating,
@@ -61178,6 +61226,14 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"vzp" = (
/obj/effect/turf_decal/tile/brown,
/obj/item/stack/ore/iron,
/obj/item/stack/ore/silver{
amount = 2
},
/turf/open/floor/plasteel,
/area/quartermaster/miningdock)
"vzz" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
@@ -61493,6 +61549,18 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"wjQ" = (
/obj/machinery/computer/shuttle/mining/common{
dir = 4
},
/obj/machinery/light{
dir = 8
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"wkZ" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -79749,7 +79817,7 @@ cuE
cgK
cgJ
cgH
cgj
abZ
cvj
bWV
cfn
@@ -80466,7 +80534,7 @@ aaa
aaa
aaa
aaa
pyw
aaa
bsl
btL
aZx
@@ -80723,7 +80791,7 @@ aaa
aaa
aaa
aaa
pyw
aaa
aZx
bcX
aZx
@@ -81759,7 +81827,7 @@ aaa
aaa
aaa
aaa
aaa
oQm
aaa
aaa
aaa
@@ -82015,9 +82083,9 @@ aZx
aaa
aaa
aaa
aaa
aaa
aaa
aZx
pqP
aZx
aaa
aaa
aaa
@@ -82272,9 +82340,9 @@ aZx
aaa
aaa
aaa
aaa
aaa
aaa
aZx
bcX
aZx
aaa
aaa
aaa
@@ -82526,12 +82594,12 @@ aZx
bno
bon
aZx
aaa
aaa
aaa
aaa
aaa
aaa
aZx
aZx
aZx
aZx
qRm
aZx
aaa
aaa
aht
@@ -82781,15 +82849,15 @@ bbQ
bcX
bdV
bnp
bon
baK
pEH
deJ
sIK
wjQ
pEH
bbR
aZx
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aht
bBV
bDf
@@ -83038,15 +83106,15 @@ jzz
aZx
jzz
bnp
bon
aZx
aZx
aZx
aZx
aZx
baK
baK
baK
baK
baK
baK
baK
aZx
aaa
aht
bAI
abI
abI
@@ -83296,14 +83364,14 @@ bbR
bbR
bnp
baK
bbR
bbR
bbR
bbR
bbR
baK
baK
baK
baK
baK
baK
aZx
aZx
kIc
kIc
bAJ
bBX
bBX
@@ -83558,7 +83626,7 @@ baK
baK
baK
baK
aZx
baK
bxY
bzz
kGe
@@ -83815,7 +83883,7 @@ bbT
bbT
bbT
bbT
bwq
bbT
bxZ
bzA
bAK
@@ -84072,7 +84140,7 @@ bqS
bsm
btN
bfY
bwr
bfY
bya
bzB
bAL
@@ -94847,7 +94915,7 @@ aYg
aZd
beB
bbq
beB
abU
bdx
beB
bft
@@ -103588,7 +103656,7 @@ bbI
bcG
bdM
beP
bfH
vzp
bfH
bhv
bbI
@@ -104069,8 +104137,8 @@ aaY
awB
abe
abi
axw
axw
uNA
qAx
axw
axw
aBX
@@ -110784,7 +110852,7 @@ bcQ
aaa
aaa
aaa
abN
bBW
aaa
aEj
aEj
@@ -111041,7 +111109,7 @@ bcQ
aaa
aaa
aaa
aaa
cFB
aaa
aEl
bnl
+1 -1
View File
@@ -14395,7 +14395,6 @@
/obj/machinery/light{
dir = 1
},
/obj/structure/reagent_dispensers/fueltank,
/obj/machinery/camera{
c_tag = "Engineering Access"
},
@@ -14403,6 +14402,7 @@
name = "Station Intercom (General)";
pixel_y = 20
},
/obj/structure/reagent_dispensers/fueltank/high,
/turf/open/floor/plasteel/dark/corner{
dir = 1
},
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1 +1 @@
#define FORCE_MAP "_maps/multiz_debug.json"
#define FORCE_MAP "_maps/multiz_debug.json"
+14 -12
View File
@@ -33,8 +33,8 @@
"bg" = (
/obj/structure/table/reinforced,
/obj/item/storage/toolbox/mechanical{
pixel_y = 8;
pixel_x = -2
pixel_x = -2;
pixel_y = 8
},
/obj/item/storage/toolbox/electrical,
/obj/effect/turf_decal/stripes/line,
@@ -43,8 +43,8 @@
"bS" = (
/obj/structure/table/reinforced,
/obj/item/storage/box/lights/mixed{
pixel_y = 9;
pixel_x = -5
pixel_x = -5;
pixel_y = 9
},
/obj/item/storage/box/matches{
pixel_y = 5
@@ -413,8 +413,8 @@
pixel_y = 4
},
/obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy{
pixel_y = 5;
pixel_x = 6
pixel_x = 6;
pixel_y = 5
},
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
@@ -494,8 +494,8 @@
/area/shuttle/escape)
"rg" = (
/obj/item/clothing/glasses/welding{
pixel_y = 8;
pixel_x = 3
pixel_x = 3;
pixel_y = 8
},
/obj/item/weldingtool/largetank{
pixel_x = -3
@@ -882,8 +882,8 @@
},
/obj/structure/table/glass,
/obj/item/storage/box/monkeycubes{
pixel_y = 10;
pixel_x = 5
pixel_x = 5;
pixel_y = 10
},
/obj/item/reagent_containers/food/snacks/cube/monkey{
pixel_x = 5
@@ -1156,8 +1156,8 @@
},
/obj/structure/table/glass,
/obj/item/clothing/suit/monkeysuit{
pixel_y = 4;
pixel_x = -2
pixel_x = -2;
pixel_y = 4
},
/obj/item/clothing/mask/gas/monkeymask{
pixel_x = 5;
@@ -1169,6 +1169,7 @@
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"ST" = (
@@ -1319,6 +1320,7 @@
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency,
/obj/structure/fans/tiny,
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"Yu" = (
+180
View File
@@ -0,0 +1,180 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/wall/mineral/titanium,
/area/shuttle/mining)
"b" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plating,
/area/shuttle/mining)
"c" = (
/obj/structure/table,
/obj/item/storage/toolbox/emergency,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"d" = (
/obj/machinery/computer/shuttle/mining/common,
/obj/effect/turf_decal/bot,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"e" = (
/obj/structure/table,
/obj/item/radio,
/obj/item/radio/intercom{
pixel_y = 22
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"f" = (
/obj/effect/turf_decal/stripes/end{
dir = 8
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"g" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/turf_decal/stripes/corner{
dir = 8
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"h" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"i" = (
/obj/structure/sign/nanotrasen,
/turf/closed/wall/mineral/titanium,
/area/shuttle/mining)
"j" = (
/obj/machinery/light{
dir = 8
},
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"k" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"l" = (
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
/obj/machinery/atmospherics/components/binary/valve{
dir = 8
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"m" = (
/obj/machinery/door/airlock/titanium{
name = "Lavaland Shuttle Airlock"
},
/obj/docking_port/mobile{
dir = 8;
dwidth = 3;
height = 5;
id = "mining_shuttle_common";
name = "lavaland shuttle";
port_direction = 4;
width = 7
},
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
},
/turf/open/floor/plating,
/area/shuttle/mining)
"n" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
},
/obj/effect/turf_decal/bot,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"o" = (
/obj/structure/closet/crate,
/obj/effect/turf_decal/delivery,
/obj/machinery/airalarm{
dir = 4;
pixel_x = -22
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"p" = (
/obj/effect/spawner/structure/window/shuttle,
/obj/structure/shuttle/engine/heater,
/turf/open/floor/plating,
/area/shuttle/mining)
"q" = (
/obj/structure/ore_box,
/obj/effect/turf_decal/delivery,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"r" = (
/obj/structure/sign/warning/fire,
/turf/closed/wall/mineral/titanium,
/area/shuttle/mining)
"s" = (
/obj/structure/shuttle/engine/propulsion/burst,
/turf/open/floor/plating/airless,
/area/shuttle/mining)
(1,1,1) = {"
a
a
b
i
b
a
a
"}
(2,1,1) = {"
a
c
f
j
n
o
r
"}
(3,1,1) = {"
b
d
g
k
n
p
s
"}
(4,1,1) = {"
a
e
h
l
n
q
r
"}
(5,1,1) = {"
a
a
b
m
b
a
a
"}
+124
View File
@@ -0,0 +1,124 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/wall/mineral/titanium,
/area/shuttle/mining)
"b" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plating,
/area/shuttle/mining)
"c" = (
/obj/structure/table,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/mining)
"d" = (
/obj/machinery/computer/shuttle/mining/common,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/mining)
"e" = (
/turf/open/floor/mineral/titanium,
/area/shuttle/mining)
"f" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/mining)
"g" = (
/obj/machinery/light{
dir = 8
},
/turf/open/floor/mineral/titanium,
/area/shuttle/mining)
"h" = (
/obj/machinery/door/airlock/titanium{
name = "Lavaland Shuttle Airlock"
},
/obj/docking_port/mobile{
dir = 8;
dwidth = 3;
height = 5;
id = "mining_shuttle_common";
name = "lavaland shuttle";
port_direction = 4;
width = 7
},
/turf/open/floor/plating,
/area/shuttle/mining)
"i" = (
/obj/structure/closet/crate,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/mining)
"j" = (
/obj/structure/shuttle/engine/heater,
/obj/structure/window/reinforced{
dir = 1;
layer = 2.9
},
/obj/structure/window/reinforced{
dir = 8
},
/obj/structure/window/reinforced{
dir = 4
},
/turf/open/floor/plating,
/area/shuttle/mining)
"k" = (
/obj/structure/ore_box,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/mining)
"l" = (
/obj/structure/shuttle/engine/propulsion/burst,
/turf/open/floor/plating/airless,
/area/shuttle/mining)
"Q" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/open/floor/mineral/titanium,
/area/shuttle/mining)
(1,1,1) = {"
a
a
b
a
b
a
a
"}
(2,1,1) = {"
a
c
e
g
f
i
a
"}
(3,1,1) = {"
b
d
Q
e
f
j
l
"}
(4,1,1) = {"
a
c
e
e
f
k
a
"}
(5,1,1) = {"
a
a
b
h
b
a
a
"}
+1
View File
@@ -1560,6 +1560,7 @@
/area/shuttle/abandoned/bridge)
"cc" = (
/obj/machinery/door/airlock/external,
/obj/structure/fans/tiny,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
+1 -1
View File
@@ -72,7 +72,7 @@
/turf/open/indestructible/hotelwood,
/area/hilbertshotel)
"n" = (
/obj/effect/landmark/xmastree,
/obj/effect/landmark/xmastree/hilbert,
/turf/open/indestructible/hotelwood,
/area/hilbertshotel)
"o" = (
+1
View File
@@ -171,6 +171,7 @@
#define ORGAN_SLOT_HEART_AID "heartdrive"
#define ORGAN_SLOT_BRAIN_ANTIDROP "brain_antidrop"
#define ORGAN_SLOT_BRAIN_ANTISTUN "brain_antistun"
#define ORGAN_SLOT_BRAIN_ROBOT_RADSHIELDING "brain_robot_radshielding"
#define ORGAN_SLOT_TAIL "tail"
#define ORGAN_SLOT_PENIS "penis"
#define ORGAN_SLOT_WOMB "womb"
+3
View File
@@ -162,3 +162,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
REMOVE_TRAIT(x, TRAIT_KEEP_TOGETHER, KEEP_TOGETHER_ORIGINAL);\
else if(!HAS_TRAIT(x, TRAIT_KEEP_TOGETHER))\
x.appearance_flags &= ~KEEP_TOGETHER
/// 33554431 (2^24 - 1) is the maximum value our bitflags can reach.
#define MAX_BITFLAG_DIGITS 8
+1 -1
View File
@@ -7,4 +7,4 @@
}\
##Path/CanProcCall(procname){\
return FALSE;\
}
}
+1 -1
View File
@@ -11,4 +11,4 @@
and most importantly,
how to undo your changes if you screw it up.
- Sayu
*/
*/
+2 -1
View File
@@ -35,8 +35,9 @@
#define R_SPAWN (1<<12)
#define R_AUTOLOGIN (1<<13)
#define R_DBRANKS (1<<14)
#define R_SENSITIVE (1<<15)
#define R_DEFAULT R_AUTOLOGIN
#define R_DEFAULT R_AUTOLOGIN | R_SENSITIVE
#define R_EVERYTHING ALL //the sum of all other rank permissions, used for +EVERYTHING
+1
View File
@@ -70,6 +70,7 @@
///Heretics --
#define IS_HERETIC(mob) (mob.mind?.has_antag_datum(/datum/antagonist/heretic))
#define IS_HERETIC_MONSTER(mob) (mob.mind?.has_antag_datum(/datum/antagonist/heretic_monster))
#define PATH_SIDE "Side"
+1 -1
View File
@@ -115,7 +115,7 @@
#define MAX_HIGH_PRESSURE_DAMAGE 16 // CITADEL CHANGES Max to 16, low to 8.
#define LOW_PRESSURE_DAMAGE 8 //The amount of damage someone takes when in a low pressure area (The pressure threshold is so low that it doesn't make sense to do any calculations, so it just applies this flat value).
#define COLD_SLOWDOWN_FACTOR 20 //Humans are slowed by the difference between bodytemp and BODYTEMP_COLD_DAMAGE_LIMIT divided by this
#define COLD_SLOWDOWN_FACTOR 35 //Humans are slowed by the difference between bodytemp and BODYTEMP_COLD_DAMAGE_LIMIT divided by this
//PIPES
//Atmos pipe limits
+1 -1
View File
@@ -10,4 +10,4 @@
#define CINEMATIC_NUKE_NO_CORE 10
#define CINEMATIC_NUKE_FAR 11
#define CINEMATIC_NUKE_CLOWNOP 12
#define CINEMATIC_CULT_NUKE 13
#define CINEMATIC_CULT_NUKE 13
+14
View File
@@ -114,3 +114,17 @@
//special species definitions
#define MINIMUM_MUTANT_COLOR "#202020" //this is how dark players mutant parts and skin can be
//defines for different matrix sections
#define MATRIX_RED "red"
#define MATRIX_GREEN "green"
#define MATRIX_BLUE "blue"
#define MATRIX_RED_GREEN "red_green"
#define MATRIX_RED_BLUE "red_blue"
#define MATRIX_GREEN_BLUE "green_blue"
#define MATRIX_ALL "red_green_blue"
#define MATRIX_NONE "none"
//defines for the two colour schemes, advanced and old
#define OLD_CHARACTER_COLORING "old_color_system"
#define ADVANCED_CHARACTER_COLORING "advanced_color_system"
+1 -1
View File
@@ -96,4 +96,4 @@ GLOBAL_LIST_EMPTY(all_clockwork_rites) //a list containing all clockwork rites.
#define ARK_SCREAM_COOLDOWN 300 //This much time has to pass between instances of the Ark taking damage before it will "scream" again
#define PRISM_DELAY_DURATION 1200 //how long prolonging prisms delay the shuttle for; defaults to 2 minutes
#define PRISM_DELAY_DURATION 1200 //how long prolonging prisms delay the shuttle for; defaults to 2 minutes
+8
View File
@@ -11,6 +11,12 @@
#define STAMINA "stamina"
#define BRAIN "brain"
//Toxins damage 'typeflag' - is this normal toxins damage or does it have to do with systems corruption (ROBOTIC_ORGANISM species trait)
#define TOX_DEFAULT 1 //For normal toxins damage / healing (toxins, etc), adjustToxLoss() defaults to this
#define TOX_SYSCORRUPT 2 //For toxins damage causing adverse effects to robotic organisms, up to and including fatal corruption, or healing that damage
#define TOX_OMNI 3 //For tox damage / healing that affects both organics and robotic organisms. Used by very few things, e.g. aheals / by default setToxLoss()
//bitflag damage defines used for suicide_act
#define BRUTELOSS (1<<0)
#define FIRELOSS (1<<1)
@@ -75,6 +81,8 @@
//stamina stuff
/// crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit
#define STAMINA_CRIT 140
/// Threshold for leaving stamina critical
#define STAMINA_CRIT_REMOVAL_THRESHOLD 100
/// Threshold under for which you are unable to draw from stamina health to replace stamina buffer
#define STAMINA_NO_OVERDRAW_THRESHOLD 100
+1 -1
View File
@@ -10,7 +10,7 @@
/// Usage for eyestabbing with a screwdriver
#define STAMINA_COST_ITEM_EYESTAB 7.5
/// Usage for shoving yourself off the ground instantly
#define STAMINA_COST_SHOVE_UP 10
#define STAMINA_COST_SHOVE_UP 15
//items total mass, used to calculate their attacks' stamina costs. If not defined, the cost will be (w_class * 1.25)
#define TOTAL_MASS_TINY_ITEM 1.25
+1 -1
View File
@@ -41,4 +41,4 @@
#define BANISH_FUNERAL_GARB "funeral"
#define LORE 1
#define LAW 2
#define LAW 2
+1 -1
View File
@@ -20,4 +20,4 @@
#define DEFAULT_TOOLTIP "6:-29,5:-2"
//misc
#define SOULS_TO_REVIVE 3
#define BLOODCULT_EYE "f00"
#define BLOODCULT_EYE "f00"
+1 -1
View File
@@ -82,4 +82,4 @@
/// combat mode is active.
#define COMBAT_MODE_ACTIVE (1<<1)
/// combat mode is not active
#define COMBAT_MODE_INACTIVE (1<<2)
#define COMBAT_MODE_INACTIVE (1<<2)
+1 -1
View File
@@ -13,4 +13,4 @@
#define RemoveElement(arguments...) _RemoveElement(list(##arguments))
/// A wrapper for _AddComponent that allows us to pretend we're using normal named arguments
#define AddComponent(arguments...) _AddComponent(list(##arguments))
#define AddComponent(arguments...) _AddComponent(list(##arguments))
+21 -2
View File
@@ -136,11 +136,15 @@
#define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" //from base of atom/attack_hand(): (mob/user)
#define COMSIG_ATOM_ATTACK_PAW "atom_attack_paw" //from base of atom/attack_paw(): (mob/user)
#define COMPONENT_NO_ATTACK_HAND 1 //works on all 3.
/////////////////
//This signal return value bitflags can be found in __DEFINES/misc.dm
#define COMSIG_ATOM_INTERCEPT_Z_FALL "movable_intercept_z_impact" //called for each movable in a turf contents on /turf/zImpact(): (atom/movable/A, levels)
/////////////////
/// Called from orbit component: (atom/movable/orbiter, radius, clockwise, rotation_speed, rotation_segments, pre_rotation)
#define COMSIG_ATOM_ORBIT_BEGIN "atom_orbit_begin"
/// Called from orbit component: (atom/movable/orbiter, refreshing)
#define COMSIG_ATOM_ORBIT_END "atom_orbit_end"
#define COMSIG_ENTER_AREA "enter_area" //from base of area/Entered(): (/area)
#define COMSIG_EXIT_AREA "exit_area" //from base of area/Exited(): (/area)
@@ -490,6 +494,17 @@
#define COMPONENT_PROGRAM_INSTALLED 1 //Installation successful
#define COMPONENT_PROGRAM_NOT_INSTALLED 2 //Installation failed, but there are still nanites
#define COMSIG_NANITE_SYNC "nanite_sync" //(datum/component/nanites, full_overwrite, copy_activation) Called to sync the target's nanites to a given nanite component
/// Checks if a nanite component is able to be controlled by console
#define COMSIG_NANITE_CHECK_CONSOLE_LOCK "is_console_locked"
/// Checks if a nanite component is able to be interfaced with by a host with innate nanite control
#define COMSIG_NANITE_CHECK_HOST_LOCK "is_host_locked"
/// Checks if a nanite component is able to be overwritten by viral replica
#define COMSIG_NANITE_CHECK_VIRAL_PREVENTION "is_virus_locked"
#define NANITE_CHANGES_LOCKED 1
// Internal signals that programs register to and respond with to not require for loops
#define COMSIG_NANITE_INTERNAL_CONSOLE_LOCK_CHECK "naniteiconsolelocked"
#define COMSIG_NANITE_INTERNAL_HOST_LOCK_CHECK "naniteihostlocked"
#define COMSIG_NANITE_INTERNAL_VIRAL_PREVENTION_CHECK "naniteiviruslocked"
// /datum/component/storage signals
#define COMSIG_CONTAINS_STORAGE "is_storage" //() - returns bool.
@@ -525,3 +540,7 @@
#define COMSIG_XENO_TURF_CLICK_SHIFT "xeno_turf_click_shift" //from turf ShiftClickOn(): (/mob)
#define COMSIG_XENO_TURF_CLICK_CTRL "xeno_turf_click_alt" //from turf AltClickOn(): (/mob)
#define COMSIG_XENO_MONKEY_CLICK_CTRL "xeno_monkey_click_ctrl" //from monkey CtrlClickOn(): (/mob)
// twitch plays
/// Returns direction: (wipe_votes)
#define COMSIG_TWITCH_PLAYS_MOVEMENT_DATA "twitch_plays_movement_data"
+1 -1
View File
@@ -1,4 +1,4 @@
#define EXPORT_CARGO 1
#define EXPORT_EMAG 2
#define EXPORT_CONTRABAND 4
#define EXPORT_PIRATE 8
#define EXPORT_PIRATE 8
+1 -1
View File
@@ -2,4 +2,4 @@
#define AFFIX_SUFFIX (1 << 1)
#define AFFIX_GOOD (1 << 0)
#define AFFIX_EVIL (1 << 1)
#define AFFIX_EVIL (1 << 1)
+2
View File
@@ -188,6 +188,8 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define islandmine(A) (istype(A, /obj/effect/mine))
#define issupplypod(A) (istype(A, /obj/structure/closet/supplypod))
#define isammocasing(A) (istype(A, /obj/item/ammo_casing))
#define isidcard(I) (istype(I, /obj/item/card/id))
+14 -1
View File
@@ -55,6 +55,9 @@
//donator items
#define LOADOUT_CATEGORY_DONATOR "Donator"
//unlockable items
#define LOADOUT_CATEGORY_UNLOCKABLE "Unlockable"
//how many prosthetics can we have
#define MAXIMUM_LOADOUT_PROSTHETICS 2
@@ -66,4 +69,14 @@
#define LOADOUT_LIMB_PROSTHETIC "Prosthetic"
#define LOADOUT_LIMB_AMPUTATED "Amputated"
#define LOADOUT_LIMBS list(LOADOUT_LIMB_NORMAL,LOADOUT_LIMB_PROSTHETIC,LOADOUT_LIMB_AMPUTATED) //you can amputate your legs/arms though
#define LOADOUT_LIMBS list(LOADOUT_LIMB_NORMAL,LOADOUT_LIMB_PROSTHETIC,LOADOUT_LIMB_AMPUTATED) //you can amputate your legs/arms though
//loadout saving/loading specific defines
#define MAXIMUM_LOADOUT_SAVES 5
#define LOADOUT_ITEM "loadout_item"
#define LOADOUT_COLOR "loadout_color"
//loadout item flags
#define LOADOUT_CAN_NAME (1<<0) //renaming items
#define LOADOUT_CAN_DESCRIPTION (1<<1) //adding a custom description to items
#define LOADOUT_CAN_COLOR_POLYCHROMIC (1<<2)
+1 -1
View File
@@ -120,4 +120,4 @@
#define CLONEPOD_GET_MIND 1
#define CLONEPOD_POLL_MIND 2
#define CLONEPOD_NO_MIND 3
#define CLONEPOD_NO_MIND 3
+1 -1
View File
@@ -12,4 +12,4 @@
#define MATERIAL_ADD_PREFIX (1<<1)
#define MATERIAL_AFFECT_STATISTICS (1<<2)
#define MATERIAL_SOURCE(mat) "[mat.name]_material"
#define MATERIAL_SOURCE(mat) "[mat.name]_material"
+1 -1
View File
@@ -26,4 +26,4 @@
//Misc medals
#define MEDAL_METEOR "Your Life Before Your Eyes"
#define MEDAL_PULSE "Jackpot"
#define MEDAL_TIMEWASTE "Overextended The Joke"
#define MEDAL_TIMEWASTE "Overextended The Joke"
+1 -1
View File
@@ -8,4 +8,4 @@
#define MARTIALART_KRAVMAGA "krav maga"
#define MARTIALART_CQC "CQC"
#define MARTIALART_PLASMAFIST "plasma fist"
#define MARTIALART_RISINGBASS "rising bass"
#define MARTIALART_RISINGBASS "rising bass"
+1 -1
View File
@@ -1,3 +1,3 @@
#define CHECKBOX_NONE 0
#define CHECKBOX_GROUP 1
#define CHECKBOX_TOGGLE 2
#define CHECKBOX_TOGGLE 2
+1
View File
@@ -159,6 +159,7 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache)
#define BLOOD_COLOR_LIZARD "#db004D"
#define BLOOD_COLOR_UNIVERSAL "#db3300"
#define BLOOD_COLOR_BUG "#a37c0f"
#define BLOOD_COLOR_PLANT "#3d610e"
//suit sensors: sensor_mode defines
+4 -1
View File
@@ -48,6 +48,8 @@
#define MOB_EPIC (1 << 7) // Megafauna
#define MOB_REPTILE (1 << 8)
#define MOB_SPIRIT (1 << 9)
/// Mobs that otherwise support nanites
#define MOB_NANITES (1 << 10)
// Organ defines for carbon mobs
#define ORGAN_ORGANIC 1
@@ -56,9 +58,10 @@
#define BODYPART_ORGANIC 1
#define BODYPART_ROBOTIC 2
#define BODYPART_HYBRID 3
#define BODYPART_NANITES 4
#define HYBRID_BODYPART_DAMAGE_THRESHHOLD 25 //How much damage has to be suffered until the damage threshhold counts as passed
#define HYBRID_BODYPART_THESHHOLD_MINDAMAGE 15 //Which damage value this limb cannot be healed out of via easy nonsurgical means if the threshhold has been passed, state resets if damage value goes below mindamage.
#define HYBRID_BODYPART_THESHHOLD_MINDAMAGE 10 //Which damage value this limb cannot be healed out of via easy nonsurgical means if the threshhold has been passed, state resets if damage value goes below mindamage.
#define BODYPART_NOT_DISABLED 0
#define BODYPART_DISABLED_DAMAGE 1
+29
View File
@@ -0,0 +1,29 @@
// helpers
// sources
/// Species
#define ABILITY_SOURCE_SPECIES "species"
/// Changeling
#define ABILITY_SOURCE_CHANGELING "changeling"
// abilities
/// Full customization and transformation of mutantparts/hair/sprite accessories/etc - excludes name by default
#define INNATE_ABILITY_HUMANOID_CUSTOMIZATION "humanoid_customization"
/// Slime blobform
#define INNATE_ABILITY_SLIME_BLOBFORM "slime_blobform"
/// limb regrowth
#define INNATE_ABILITY_LIMB_REGROWTH "limb_regrowth"
/// ability properties
// customization/body change
/// is this silent?
#define PROPERTY_CUSTOMIZATION_SILENT "silent"
// blobform
/// Blobform color
#define PROPERTY_BLOBFORM_COLOR "color"
// limb regrwoth
/// limb regrowth usage type
#define PROPERTY_LIMB_REGROWTH_USAGE_TYPE "cost"
/// blood
#define REGROWTH_USES_BLOOD "blood"
+2
View File
@@ -18,6 +18,8 @@ Ask ninjanomnom if they're around
#define RAD_BURN_THRESHOLD 1000 // Applied radiation must be over this to burn
#define RAD_MOB_SAFE 500 // How much stored radiation in a mob with no ill effects
#define RAD_DEFAULT_ROBOT_SAFE 250 // Like above, except for robotic carbons. Far more susceptible to corruption from radiation.
#define RAD_UPGRADED_ROBOT_SAFE 750 // If the robot has been upgraded via an implant, their radiation threshold is raised to be somewhat above that of organics.
#define RAD_MOB_HAIRLOSS 800 // How much stored radiation to check for hair loss
+1 -1
View File
@@ -4,4 +4,4 @@
#define ROCKPAPERSCISSORS_LOSE "lose"
#define ROCKPAPERSCISSORS_WIN "win"
#define ROCKPAPERSCISSORS_TIE "tie"
#define ROCKPAPERSCISSORS_NOT_DECIDED "not_decided"
#define ROCKPAPERSCISSORS_NOT_DECIDED "not_decided"
+1
View File
@@ -40,6 +40,7 @@
//#define ROLE_MONSTERHUNTER "monster hunter" Disabled for now
#define ROLE_GHOSTCAFE "ghostcafe"
#define ROLE_MINOR_ANTAG "minorantag"
#define ROLE_RESPAWN "respawnsystem"
//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
+1
View File
@@ -5,6 +5,7 @@
#define SPECIES_ANDROID "android"
#define SPECIES_ANGEL "angel"
#define SPECIES_MAMMAL "mammal"
#define SPECIES_MAMMAL_SYNTHETIC "mammal_synthetic"
#define SPECIES_ARACHNID "arachnid"
#define SPECIES_INSECT "insect"
#define SPECIES_DULLAHAN "dullahan"
+3 -4
View File
@@ -40,6 +40,9 @@
#define STATUS_EFFECT_DETERMINED /datum/status_effect/determined //currently in a combat high from being seriously wounded
#define STATUS_EFFECT_MANTRA /datum/status_effect/mantra // a toggled self buff that makes you stronger and more resilient, but drains stamina over time
#define STATUS_EFFECT_ASURA /datum/status_effect/asura // like a weaker version of mantra, drains HP instead of stamina and has no armor
/////////////
// DEBUFFS //
/////////////
@@ -102,10 +105,6 @@
#define STATUS_EFFECT_FAKE_VIRUS /datum/status_effect/fake_virus //gives you fluff messages for cough, sneeze, headache, etc but without an actual virus
#define STATUS_EFFECT_BREASTS_ENLARGEMENT /datum/status_effect/chem/breast_enlarger //Applied slowdown due to the ominous bulk.
#define STATUS_EFFECT_PENIS_ENLARGEMENT /datum/status_effect/chem/penis_enlarger //More applied slowdown, just like the above.
#define STATUS_EFFECT_NO_COMBAT_MODE /datum/status_effect/no_combat_mode //Wont allow combat mode and will disable it
#define STATUS_EFFECT_MESMERIZE /datum/status_effect/mesmerize //Just reskinned no_combat_mode
+61 -61
View File
@@ -1,6 +1,6 @@
// tgstation-server DMAPI
#define TGS_DMAPI_VERSION "5.2.7"
#define TGS_DMAPI_VERSION "5.2.10"
// All functions and datums outside this document are subject to change with any version and should not be relied on.
@@ -67,7 +67,7 @@
#define TGS_EVENT_REPO_CHECKOUT 1
/// When the repository performs a fetch operation. No parameters
#define TGS_EVENT_REPO_FETCH 2
/// When the repository merges a pull request. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user
/// When the repository test merges. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user
#define TGS_EVENT_REPO_MERGE_PULL_REQUEST 3
/// Before the repository makes a sychronize operation. Parameters: Absolute repostiory path
#define TGS_EVENT_REPO_PRE_SYNCHRONIZE 4
@@ -117,22 +117,22 @@
//REQUIRED HOOKS
/**
* Call this somewhere in [/world/proc/New] that is always run. This function may sleep!
*
* * event_handler - Optional user defined [/datum/tgs_event_handler].
* * minimum_required_security_level: The minimum required security level to run the game in which the DMAPI is integrated. Can be one of [TGS_SECURITY_ULTRASAFE], [TGS_SECURITY_SAFE], or [TGS_SECURITY_TRUSTED].
*/
* Call this somewhere in [/world/proc/New] that is always run. This function may sleep!
*
* * event_handler - Optional user defined [/datum/tgs_event_handler].
* * minimum_required_security_level: The minimum required security level to run the game in which the DMAPI is integrated. Can be one of [TGS_SECURITY_ULTRASAFE], [TGS_SECURITY_SAFE], or [TGS_SECURITY_TRUSTED].
*/
/world/proc/TgsNew(datum/tgs_event_handler/event_handler, minimum_required_security_level = TGS_SECURITY_ULTRASAFE)
return
/**
* Call this when your initializations are complete and your game is ready to play before any player interactions happen.
*
* This may use [/world/var/sleep_offline] to make this happen so ensure no changes are made to it while this call is running.
* Afterwards, consider explicitly setting it to what you want to avoid this BYOND bug: http://www.byond.com/forum/post/2575184
* Before this point, note that any static files or directories may be in use by another server. Your code should account for this.
* This function should not be called before ..() in [/world/proc/New].
*/
* Call this when your initializations are complete and your game is ready to play before any player interactions happen.
*
* This may use [/world/var/sleep_offline] to make this happen so ensure no changes are made to it while this call is running.
* Afterwards, consider explicitly setting it to what you want to avoid this BYOND bug: http://www.byond.com/forum/post/2575184
* Before this point, note that any static files or directories may be in use by another server. Your code should account for this.
* This function should not be called before ..() in [/world/proc/New].
*/
/world/proc/TgsInitializationComplete()
return
@@ -140,8 +140,8 @@
#define TGS_TOPIC var/tgs_topic_return = TgsTopic(args[1]); if(tgs_topic_return) return tgs_topic_return
/**
* Call this at the beginning of [world/proc/Reboot].
*/
* Call this at the beginning of [world/proc/Reboot].
*/
/world/proc/TgsReboot()
return
@@ -175,36 +175,36 @@
var/deprefixed_parameter
/**
* Returns [TRUE]/[FALSE] based on if the [/datum/tgs_version] contains wildcards.
*/
* Returns [TRUE]/[FALSE] based on if the [/datum/tgs_version] contains wildcards.
*/
/datum/tgs_version/proc/Wildcard()
return
/**
* Returns [TRUE]/[FALSE] based on if the [/datum/tgs_version] equals some other version.
*
* other_version - The [/datum/tgs_version] to compare against.
*/
* Returns [TRUE]/[FALSE] based on if the [/datum/tgs_version] equals some other version.
*
* other_version - The [/datum/tgs_version] to compare against.
*/
/datum/tgs_version/proc/Equals(datum/tgs_version/other_version)
return
/// Represents a merge of a GitHub pull request.
/datum/tgs_revision_information/test_merge
/// The pull request number.
/// The test merge number.
var/number
/// The pull request title when it was merged.
/// The test merge source's title when it was merged.
var/title
/// The pull request body when it was merged.
/// The test merge source's body when it was merged.
var/body
/// The GitHub username of the pull request's author.
/// The Username of the test merge source's author.
var/author
/// An http URL to the pull request.
/// An http URL to the test merge source.
var/url
/// The SHA of the pull request when that was merged.
/// The SHA of the test merge when that was merged.
var/pull_request_commit
/// ISO 8601 timestamp of when the pull request was merged.
/// ISO 8601 timestamp of when the test merge was created on TGS.
var/time_merged
/// (Nullable) Comment left by the TGS user who initiated the merge..
/// Optional comment left by the TGS user who initiated the merge.
var/comment
/// Represents a connected chat channel.
@@ -234,10 +234,10 @@
var/datum/tgs_chat_channel/channel
/**
* User definable callback for handling TGS events.
*
* event_code - One of the TGS_EVENT_ defines. Extra parameters will be documented in each
*/
* User definable callback for handling TGS events.
*
* event_code - One of the TGS_EVENT_ defines. Extra parameters will be documented in each
*/
/datum/tgs_event_handler/proc/HandleEvent(event_code, ...)
set waitfor = FALSE
return
@@ -252,11 +252,11 @@
var/admin_only = FALSE
/**
* Process command activation. Should return a string to respond to the issuer with.
*
* sender - The [/datum/tgs_chat_user] who issued the command.
* params - The trimmed string following the command `/datum/tgs_chat_command/var/name].
*/
* Process command activation. Should return a string to respond to the issuer with.
*
* sender - The [/datum/tgs_chat_user] who issued the command.
* params - The trimmed string following the command `/datum/tgs_chat_command/var/name].
*/
/datum/tgs_chat_command/proc/Run(datum/tgs_chat_user/sender, params)
CRASH("[type] has no implementation for Run()")
@@ -271,48 +271,48 @@
return
/**
* Returns [TRUE] if DreamDaemon was launched under TGS, the API matches, and was properly initialized. [FALSE] will be returned otherwise.
*/
* Returns [TRUE] if DreamDaemon was launched under TGS, the API matches, and was properly initialized. [FALSE] will be returned otherwise.
*/
/world/proc/TgsAvailable()
return
// No function below this succeeds if it TgsAvailable() returns FALSE or if TgsNew() has yet to be called.
/**
* Forces a hard reboot of DreamDaemon by ending the process.
*
* Unlike del(world) clients will try to reconnect.
* If TGS has not requested a [TGS_REBOOT_MODE_SHUTDOWN] DreamDaemon will be launched again
*/
* Forces a hard reboot of DreamDaemon by ending the process.
*
* Unlike del(world) clients will try to reconnect.
* If TGS has not requested a [TGS_REBOOT_MODE_SHUTDOWN] DreamDaemon will be launched again
*/
/world/proc/TgsEndProcess()
return
/**
* Send a message to connected chats.
*
* message - The string to send.
* admin_only: If [TRUE], message will be sent to admin connected chats. Vice-versa applies.
*/
* Send a message to connected chats.
*
* message - The string to send.
* admin_only: If [TRUE], message will be sent to admin connected chats. Vice-versa applies.
*/
/world/proc/TgsTargetedChatBroadcast(message, admin_only = FALSE)
return
/**
* Send a private message to a specific user.
*
* message - The string to send.
* user: The [/datum/tgs_chat_user] to PM.
*/
* Send a private message to a specific user.
*
* message - The string to send.
* user: The [/datum/tgs_chat_user] to PM.
*/
/world/proc/TgsChatPrivateMessage(message, datum/tgs_chat_user/user)
return
// The following functions will sleep if a call to TgsNew() is sleeping
/**
* Send a message to connected chats that are flagged as game-related in TGS.
*
* message - The string to send.
* channels - Optional list of [/datum/tgs_chat_channel]s to restrict the message to.
*/
* Send a message to connected chats that are flagged as game-related in TGS.
*
* message - The string to send.
* channels - Optional list of [/datum/tgs_chat_channel]s to restrict the message to.
*/
/world/proc/TgsChatBroadcast(message, list/channels = null)
return
+1 -1
View File
@@ -32,4 +32,4 @@
url_encode(json_encode(list( \
"type" = type, \
"payload" = payload, \
))))
))))
+9 -1
View File
@@ -118,6 +118,8 @@
#define TRAIT_NOLIMBDISABLE "no_limb_disable"
#define TRAIT_EASYLIMBDISABLE "easy_limb_disable"
#define TRAIT_TOXINLOVER "toxinlover"
#define TRAIT_ROBOTIC_ORGANISM "robotic_organism"
#define TRAIT_ROBOT_RADSHIELDING "robot_radshielding"
#define TRAIT_NOBREATH "no_breath"
#define TRAIT_ANTIMAGIC "anti_magic"
#define TRAIT_HOLY "holy"
@@ -203,7 +205,7 @@
#define TRAIT_THERMAL_VISION "thermal_vision"
#define TRAIT_NO_TELEPORT "no-teleport" //you just can't
#define TRAIT_NO_INTERNALS "no-internals"
#define TRAIT_NO_ALCOHOL "alcohol_intolerance"
#define TRAIT_TOXIC_ALCOHOL "alcohol_intolerance"
#define TRAIT_MUTATION_STASIS "mutation_stasis" //Prevents processed genetics mutations from processing.
#define TRAIT_FAST_PUMP "fast_pump"
#define TRAIT_NO_PROCESS_FOOD "no-process-food" // You don't get benefits from nutriment, nor nutrition from reagent consumables
@@ -211,6 +213,10 @@
#define TRAIT_NO_STAMINA_BUFFER_REGENERATION "block_stamina_buffer_regen" /// Prevents stamina buffer regeneration
#define TRAIT_NO_STAMINA_REGENERATION "block_stamina_regen" /// Prevents stamina regeneration
#define TRAIT_ARMOR_BROKEN "armor_broken" //acts as if you are wearing no clothing when taking damage, does not affect non-clothing sources of protection
/// forces update_density to make us not dense
#define TRAIT_LIVING_NO_DENSITY "living_no_density"
/// forces us to not render our overlays
#define TRAIT_HUMAN_NO_RENDER "human_no_render"
// mobility flag traits
// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it)
@@ -307,6 +313,7 @@
#define LOCKED_HELMET_TRAIT "locked-helmet"
#define NINJA_SUIT_TRAIT "ninja-suit"
#define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant"
#define ROBOT_RADSHIELDING_IMPLANT_TRAIT "robot-radshielding-implant"
#define MARTIAL_ARTIST_TRAIT "martial_artist"
#define SLEEPING_CARP_TRAIT "sleeping_carp"
#define RISING_BASS_TRAIT "rising_bass"
@@ -318,6 +325,7 @@
#define MEGAFAUNA_TRAIT "megafauna"
#define DEATHSQUAD_TRAIT "deathsquad"
#define SLIMEPUDDLE_TRAIT "slimepuddle"
#define CORRUPTED_SYSTEM "corrupted-system"
/// This trait is added by the active directional block system.
#define ACTIVE_BLOCK_TRAIT "active_block"
/// This trait is added by the parry system.
+1 -1
View File
@@ -3,4 +3,4 @@
#define CHANGETURF_FORCEOP 4
#define CHANGETURF_SKIP 8 // A flag for PlaceOnTop to just instance the new turf instead of calling ChangeTurf. Used for uninitialized turfs NOTHING ELSE
#define CHANGETURF_INHERIT_AIR 16 // Inherit air from previous turf. Implies CHANGETURF_IGNORE_AIR
#define CHANGETURF_RECALC_ADJACENT 32 //Immediately recalc adjacent atmos turfs instead of queuing.
#define CHANGETURF_RECALC_ADJACENT 32 //Immediately recalc adjacent atmos turfs instead of queuing.
+1 -1
View File
@@ -6,4 +6,4 @@
//Car trait flags
#define CAN_KIDNAP 1
#define CAN_KIDNAP 1
-4
View File
@@ -86,10 +86,6 @@
if (CONFIG_GET(flag/log_attack))
WRITE_LOG(GLOB.world_attack_log, "ATTACK: [text]")
/proc/log_wounded(text)
if (CONFIG_GET(flag/log_attack))
WRITE_LOG(GLOB.world_attack_log, "WOUND: [text]")
/proc/log_manifest(ckey, datum/mind/mind,mob/body, latejoin = FALSE)
if (CONFIG_GET(flag/log_manifest))
WRITE_LOG(GLOB.world_manifest_log, "[ckey] \\ [body.real_name] \\ [mind.assigned_role] \\ [mind.special_role ? mind.special_role : "NONE"] \\ [latejoin ? "LATEJOIN":"ROUNDSTART"]")
+27 -7
View File
@@ -46,6 +46,33 @@
I = getPAIHologramIcon(I)
return I
//Prompts this client for custom holoform parameters.
/proc/user_interface_custom_holoform(client/C)
var/datum/preferences/target_prefs = C.prefs
if(target_prefs.path)
var/list/characters = list()
var/savefile/S = new /savefile(target_prefs.path)
if(S)
var/name
var/max_save_slots = C.prefs.max_save_slots
for(var/i=1, i<=max_save_slots, i++)
S.cd = "/character[i]"
S["real_name"] >> name
if(name)
characters[name] = i
var/chosen_name = input(C, "Which character do you wish to use as your appearance.") as anything in characters
if(chosen_name)
if(C.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY)
to_chat(C.mob, "<span class='boldwarning'>You are attempting to set your custom holoform too fast!</span>")
return
target_prefs = new(C)
if(!target_prefs.load_character(characters[chosen_name], TRUE))
target_prefs = C.prefs
ASSERT(target_prefs)
//In the future, maybe add custom path allowances a la admin create outfit but for now..
return generate_custom_holoform_from_prefs(target_prefs, null, null, TRUE, TRUE)
//Errors go to user.
/proc/generate_custom_holoform_from_prefs_safe(datum/preferences/prefs, mob/user)
if(user)
@@ -53,10 +80,3 @@
to_chat(user, "<span class='boldwarning'>You are attempting to set your custom holoform too fast!</span>")
return
return generate_custom_holoform_from_prefs(prefs, null, null, TRUE, TRUE)
//Prompts this client for custom holoform parameters.
/proc/user_interface_custom_holoform(client/C)
var/datum/preferences/target_prefs = C.prefs
ASSERT(target_prefs)
//In the future, maybe add custom path allowances a la admin create outfit but for now..
return generate_custom_holoform_from_prefs_safe(target_prefs, C.mob)
+15
View File
@@ -1235,3 +1235,18 @@ GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of ico
var/icon/I = getFlatIcon(thing)
return icon2html(I, target, sourceonly = sourceonly)
/* Gives the result RGB of a RGB string after a matrix transformation. No alpha.
* Input: rr, rg, rb, gr, gg, gb, br, bg, bb, cr, cg, cb
* Output: RGB string
*/
/proc/RGBMatrixTransform(list/color, list/cm)
ASSERT(cm.len >= 9)
if(cm.len < 12) // fill in the rest
for(var/i in 1 to (12 - cm.len))
cm += 0
if(!islist(color))
color = ReadRGB(color)
color[1] = color[1] * cm[1] + color[2] * cm[2] + color[3] * cm[3] + cm[10] * 255
color[2] = color[1] * cm[4] + color[2] * cm[5] + color[3] * cm[6] + cm[11] * 255
color[3] = color[1] * cm[7] + color[2] * cm[8] + color[3] * cm[9] + cm[12] * 255
return rgb(color[1], color[2], color[3])
+7 -1
View File
@@ -176,4 +176,10 @@ round(cos_inv_third+sqrt3_sin, 0.001), round(cos_inv_third-sqrt3_sin, 0.001), ro
offset = (y-1)*4
for(x in 1 to 4)
output[offset+x] = round(A[offset+1]*B[x] + A[offset+2]*B[x+4] + A[offset+3]*B[x+8] + A[offset+4]*B[x+12]+(y==5?B[x+16]:0), 0.001)
return output
return output
/**
* Assembles a color matrix, defaulting to identity
*/
/proc/rgb_construct_color_matrix(rr = 1, rg, rb, gr, gg = 1, gb, br, bg, bb = 1, cr, cg, cb)
return list(rr, rg, rb, gr, gg, gb, br, bg, bb, cr, cg, cb)
+1 -1
View File
@@ -94,4 +94,4 @@
chosen_id = input(user, "Choose a reagent to add.", "Choose a reagent.") as null|anything in subtypesof(/datum/reagent)
if("I'm feeling lucky")
chosen_id = pick(subtypesof(/datum/reagent))
return chosen_id
return chosen_id
+5 -2
View File
@@ -238,8 +238,11 @@
CHECK_TICK
SSdbcore.SetRoundEnd()
//Collects persistence features
if(mode.allow_persistence_save)
SSpersistence.CollectData()
if(mode.station_was_nuked)
SSpersistence.station_was_destroyed = TRUE
if(!mode.allow_persistence_save)
SSpersistence.station_persistence_save_disabled = TRUE
SSpersistence.CollectData()
//stop collecting feedback during grifftime
SSblackbox.Seal()
+2
View File
@@ -13,6 +13,7 @@
var/err_file = ""
var/static/list/interpreters = list("[MS_WINDOWS]" = "cmd /c", "[UNIX]" = "sh -c")
var/interpreter = interpreters["[world.system_type]"]
log_subsystem("SHELL", "Executing command [command]")
if(interpreter)
for(var/seo_id in shelleo_ids)
if(!shelleo_ids[seo_id])
@@ -36,6 +37,7 @@
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)
log_subsystem("SHELL", "Finished execution: [errorcode], [stdout], [stderr]")
#undef SHELLEO_NAME
#undef SHELLEO_ERR
#undef SHELLEO_OUT
+1 -1
View File
@@ -16,4 +16,4 @@
SI.associative = associative
SI.binarySort(fromIndex, toIndex, fromIndex)
return L
return L
+1 -1
View File
@@ -16,4 +16,4 @@
SI.associative = associative
SI.mergeSort(fromIndex, toIndex)
return L
return L
+1 -1
View File
@@ -17,4 +17,4 @@
SI.associative = associative
SI.timSort(fromIndex, toIndex)
return L
return L
+1 -1
View File
@@ -29,4 +29,4 @@ GLOBAL_LIST_EMPTY(whitelisted_species_list)
/proc/log_looc(text)
if (CONFIG_GET(flag/log_ooc))
WRITE_FILE(GLOB.world_game_log, "\[[TIME_STAMP("hh:mm:ss", FALSE)]]LOOC: [text]")
WRITE_FILE(GLOB.world_game_log, "\[[TIME_STAMP("hh:mm:ss", FALSE)]]LOOC: [text]")
+2
View File
@@ -225,6 +225,8 @@
. += "[seperator]AUTOLOGIN"
if(rights & R_DBRANKS)
. += "[seperator]DBRANKS"
if(rights & R_SENSITIVE)
. += "[seperator]SENSITIVE"
if(!.)
. = "NONE"
return .
+1 -1
View File
@@ -40,4 +40,4 @@ GLOBAL_LIST_EMPTY(typelistkeys)
for (var/saving in savings)
to_chat(world, "Savings for [saving]: [savings[saving]] lists, [saveditems[saving]] items")
#endif
#endif
+1 -1
View File
@@ -54,4 +54,4 @@
return locate(T.x + V.x, T.y + V.y, z)
/proc/atoms2vector(var/atom/A, var/atom/B)
return new /datum/vector((B.x - A.x), (B.y - A.y)) // Vector from A -> B
return new /datum/vector((B.x - A.x), (B.y - A.y)) // Vector from A -> B
+2 -1
View File
@@ -67,7 +67,8 @@ GLOBAL_LIST_INIT(bitfields, list(
"SOUNDS" = R_SOUNDS,
"SPAWN" = R_SPAWN,
"AUTOLOGIN" = R_AUTOLOGIN,
"DBRANKS" = R_DBRANKS
"DBRANKS" = R_DBRANKS,
"SENSITIVE" = R_SENSITIVE
),
"interaction_flags_atom" = list(
"INTERACT_ATOM_REQUIRES_ANCHORED" = INTERACT_ATOM_REQUIRES_ANCHORED,
+1 -1
View File
@@ -275,7 +275,7 @@ GLOBAL_LIST_INIT(wisdoms, world.file2list("strings/wisdoms.txt"))
//LANGUAGE CHARACTER CUSTOMIZATION
GLOBAL_LIST_INIT(speech_verbs, list("default","says","gibbers", "states", "chitters", "chimpers", "declares", "bellows", "buzzes" ,"beeps", "chirps", "clicks", "hisses" ,"poofs" , "puffs", "rattles", "mewls" ,"barks", "blorbles", "squeaks", "squawks", "flutters", "warbles"))
GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/organ/tongue, "lizard tongue" = /obj/item/organ/tongue/lizard, "skeleton tongue" = /obj/item/organ/tongue/bone, "fly tongue" = /obj/item/organ/tongue/fly, "ipc tongue" = /obj/item/organ/tongue/robot/ipc))
GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/organ/tongue, "lizard tongue" = /obj/item/organ/tongue/lizard, "skeleton tongue" = /obj/item/organ/tongue/bone, "fly tongue" = /obj/item/organ/tongue/fly, "ipc tongue" = /obj/item/organ/tongue/robot/ipc, "xeno tongue" = /obj/item/organ/tongue/alien))
//SPECIES BODYPART LISTS
//locked parts are those that your picked species requires to have
+2 -1
View File
@@ -9,5 +9,6 @@ GLOBAL_LIST_INIT(loadout_categories, list(
LOADOUT_CATEGORY_SHOES = LOADOUT_SUBCATEGORIES_NONE,
LOADOUT_CATEGORY_GLOVES = LOADOUT_SUBCATEGORIES_NONE,
LOADOUT_CATEGORY_GLASSES = LOADOUT_SUBCATEGORIES_NONE,
LOADOUT_CATEGORY_DONATOR = LOADOUT_SUBCATEGORIES_NONE
LOADOUT_CATEGORY_DONATOR = LOADOUT_SUBCATEGORIES_NONE,
LOADOUT_CATEGORY_UNLOCKABLE = LOADOUT_SUBCATEGORIES_NONE
))
+1 -1
View File
@@ -131,4 +131,4 @@ GLOBAL_LIST_INIT(ratking_coins, list(//Coins: Used by the regal rat mob when spa
/obj/item/coin/iron,
/obj/item/coin/silver,
/obj/item/coin/plastic,
/obj/item/coin/titanium))
/obj/item/coin/titanium))
+1 -1
View File
@@ -1 +1 @@
GLOBAL_LIST_EMPTY(commendations)
GLOBAL_LIST_EMPTY(commendations)
+3 -1
View File
@@ -52,6 +52,8 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_NOLIMBDISABLE" = TRAIT_NOLIMBDISABLE,
"TRAIT_EASYLIMBDISABLE" = TRAIT_EASYLIMBDISABLE,
"TRAIT_TOXINLOVER" = TRAIT_TOXINLOVER,
"TRAIT_ROBOTIC_ORGANISM" = TRAIT_ROBOTIC_ORGANISM,
"TRAIT_ROBOT_RADSHIELDING" = TRAIT_ROBOT_RADSHIELDING,
"TRAIT_NOBREATH" = TRAIT_NOBREATH,
"TRAIT_ANTIMAGIC" = TRAIT_ANTIMAGIC,
"TRAIT_HOLY" = TRAIT_HOLY,
@@ -102,7 +104,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_AUTO_CATCH_ITEM" = TRAIT_AUTO_CATCH_ITEM,
"TRAIT_FREESPRINT" = TRAIT_FREESPRINT,
"TRAIT_NO_INTERNALS" = TRAIT_NO_INTERNALS,
"TRAIT_NO_ALCOHOL" = TRAIT_NO_ALCOHOL,
"TRAIT_TOXIC_ALCOHOL" = TRAIT_TOXIC_ALCOHOL,
"TRAIT_MUTATION_STASIS" = TRAIT_MUTATION_STASIS,
"TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER,
"TRAIT_LIGHT_STEP" = TRAIT_LIGHT_STEP,
+1 -1
View File
@@ -34,4 +34,4 @@ function dropdowns() {
}
}
}
"}
"}
+2 -3
View File
@@ -24,7 +24,7 @@
* Common mob click code
*/
/mob/proc/CommonClickOn(atom/A, params)
SHOULD_NOT_SLEEP(TRUE)
//SHOULD_NOT_SLEEP(TRUE)
if(mob_transforming)
return
if(SEND_SIGNAL(src, COMSIG_MOB_CLICKON, A, params) & COMSIG_MOB_CANCEL_CLICKON)
@@ -34,7 +34,7 @@
FlushCurrentAction()
else
DiscardCurrentAction()
/*
Standard mob ClickOn()
Handles exceptions: Buildmode, middle click, modified clicks, mech actions
@@ -49,7 +49,6 @@
* mob/RangedAttack(atom,params) - used only ranged, only used for tk and laser eyes but could be changed
*/
/mob/proc/ClickOn(atom/A, params)
SHOULD_NOT_SLEEP(TRUE)
if(check_click_intercept(params,A))
return
+1 -1
View File
@@ -87,4 +87,4 @@
S.screen_loc = screen_l
screen += S
screen += S
+1 -1
View File
@@ -36,7 +36,7 @@
return . | A.attack_hand(src, intent, .)
/atom/proc/attack_hand(mob/user, act_intent = user.a_intent, attackchain_flags)
SHOULD_NOT_SLEEP(TRUE)
//SHOULD_NOT_SLEEP(TRUE)
if(!(interaction_flags_atom & INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND))
add_fingerprint(user)
if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_HAND, user) & COMPONENT_NO_ATTACK_HAND)
@@ -388,15 +388,26 @@ Example config:
var/list/probabilities = Get(/datum/config_entry/keyed_list/storyteller_weight)
var/list/repeated_mode_adjust = Get(/datum/config_entry/number_list/repeated_mode_adjust)
var/list/min_player_counts = Get(/datum/config_entry/keyed_list/storyteller_min_players)
var/list/storyteller_min_chaos = Get(/datum/config_entry/keyed_list/storyteller_min_chaos)
var/list/storyteller_max_chaos = Get(/datum/config_entry/keyed_list/storyteller_max_chaos)
for(var/T in storyteller_cache)
var/datum/dynamic_storyteller/S = T
var/config_tag = initial(S.config_tag)
if(!config_tag)
continue
var/probability = (config_tag in probabilities) ? probabilities[config_tag] : initial(S.weight)
var/min_players = (config_tag in min_player_counts) ? min_player_counts[config_tag] : initial(S.min_players)
if(probability <= 0)
continue
if(length(GLOB.player_list) < min_players)
continue
if(!Get(/datum/config_entry/flag/no_storyteller_threat_removal))
var/min_chaos = (probabilities in storyteller_min_chaos) ? storyteller_min_chaos[config_tag] : initial(S.min_chaos)
var/max_chaos = (probabilities in storyteller_max_chaos) ? storyteller_max_chaos[config_tag] : initial(S.max_chaos)
if(SSpersistence.average_dynamic_threat < min_chaos)
continue
if(SSpersistence.average_dynamic_threat > max_chaos)
continue
if(SSpersistence.saved_storytellers.len == repeated_mode_adjust.len)
var/name = initial(S.name)
var/recent_round = min(SSpersistence.saved_storytellers.Find(name),3)
@@ -1,5 +1,7 @@
/datum/config_entry/flag/dynamic_voting
/datum/config_entry/flag/no_storyteller_threat_removal
/datum/config_entry/number/dynamic_high_pop_limit
config_entry_value = 55
min_val = 1
@@ -67,6 +69,9 @@
/datum/config_entry/number/dynamic_third_rule_high_pop_requirement
config_entry_value = 70
/datum/config_entry/number/dynamic_threat_baseline
config_entry_value = 50
/datum/config_entry/number_list/dynamic_hijack_requirements
/datum/config_entry/number/dynamic_hijack_high_population_requirement
@@ -74,7 +79,7 @@
/datum/config_entry/number/dynamic_hijack_cost
config_entry_value = 5
/datum/config_entry/number/dynamic_glorious_death_cost
config_entry_value = 5
@@ -96,3 +101,11 @@
/datum/config_entry/keyed_list/storyteller_min_players
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_NUM
/datum/config_entry/keyed_list/storyteller_min_chaos
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_NUM
/datum/config_entry/keyed_list/storyteller_max_chaos
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_NUM
@@ -566,3 +566,20 @@
config_entry_value = 0.333
min_val = 0
integer = FALSE
/// Amount of dirtyness tiles need to spawn dirt.
/datum/config_entry/number/turf_dirt_threshold
config_entry_value = 100
min_val = 1
integer = TRUE
/// Alpha dirt starts at
/datum/config_entry/number/dirt_alpha_starting
config_entry_value = 127
max_val = 255
min_val = 0
integer = TRUE
/// Dirtyness multiplier for making turfs dirty
/datum/config_entry/number/turf_dirty_multiplier
config_entry_value = 1
@@ -172,8 +172,6 @@
/datum/config_entry/string/hostedby
/datum/config_entry/flag/norespawn
/datum/config_entry/flag/guest_jobban
/datum/config_entry/flag/usewhitelist
@@ -0,0 +1,20 @@
/// Whether or not to use the persistence system for cleanable objects
/datum/config_entry/flag/persistent_debris
config_entry_value = FALSE
/// Whether or not to nuke all roundstart debris that isn't due to persistence if the above is true
/datum/config_entry/flag/persistent_debris_only
config_entry_value = TRUE
/// Max amount of objects to store, total
/datum/config_entry/number/persistent_debris_global_max
config_entry_value = 10000
integer = TRUE
/// Max amount of objects to store per type
/datum/config_entry/number/persistent_debris_type_max
config_entry_value = 2000
integer = TRUE
/// Wipe dirty stuff on nuke
/datum/config_entry/flag/persistent_debris_wipe_on_nuke
@@ -0,0 +1,47 @@
/// Allows usage of respawn system
/datum/config_entry/flag/respawns_enabled
config_entry_value = FALSE
/// Minutes before allowing respawns.
/datum/config_entry/number/respawn_delay
config_entry_value = 15.0
integer = FALSE
/// Minutes before allowing respawn, if user cryo'd.
/datum/config_entry/number/respawn_delay_cryo
config_entry_value = 5.0
integer = FALSE
/// Allows respawning as non-assistant. Overrides all others of this type.
/datum/config_entry/flag/allow_non_assistant_respawn
config_entry_value = FALSE
/// Allows respawning as a combat role, defined as security/head.
/datum/config_entry/flag/allow_combat_role_respawn
config_entry_value = FALSE
/// Allows respawning as the same character as a previous life
/datum/config_entry/flag/allow_same_character_respawn
config_entry_value = FALSE
/// Observing penalizes for respawns, not just joining.
/datum/config_entry/flag/respawn_penalty_includes_observe
config_entry_value = FALSE
/// Minutes from roundstart before someone can respawn
/datum/config_entry/number/respawn_minimum_delay_roundstart
config_entry_value = 30.0
integer = FALSE
/// Gamemode config tags that are banned from respawning
/datum/config_entry/keyed_list/respawn_chaos_gamemodes
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_FLAG
/datum/config_entry/keyed_list/respawn_chaos_gamemodes/ValidateListEntry(key_name, key_value)
. = ..()
return . && (key_name in config.modes)
/datum/config_entry/keyed_list/respawn_chaos_gamemodes/preprocess_key(key)
. = ..()
return lowertext(key)
+1 -1
View File
@@ -5,4 +5,4 @@
var/discord_url = "hfdksjhfa.com"
var/discord_password
var/announce_watchlist = 0
var/announce_adminhelps = 0
var/announce_adminhelps = 0
+1 -1
View File
@@ -97,4 +97,4 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe)
/datum/controller/failsafe/stat_entry(msg)
msg = "Defcon: [defcon_pretty()] (Interval: [Failsafe.processing_interval] | Iteration: [Failsafe.master_iteration])"
return msg
return msg
+1 -1
View File
@@ -33,4 +33,4 @@ SUBSYSTEM_DEF(adjacent_air)
if(MC_TICK_CHECK)
break
else
CHECK_TICK
CHECK_TICK

Some files were not shown because too many files have changed in this diff Show More