This commit is contained in:
Putnam
2021-05-30 00:40:08 -07:00
2876 changed files with 441407 additions and 369001 deletions
+2 -5
View File
@@ -1,6 +1,5 @@
.dockerignore
.editorconfig
.travis.yml
GPLv3.txt
LICENSE
README.md
@@ -23,8 +22,6 @@ tgstation.int
tgstation.rsc
tgstation.lk
tgstation.dyn.rsc
libmariadb.dll
rust_g.dll
BSQL.dll
appveyor.yml
*.dll
Dockerfile
tools/bootstrap/.cache
+12 -3
View File
@@ -1,11 +1,20 @@
[*]
insert_final_newline = true
indent_style = tab
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
# end_of_line = lf
[*.yml]
indent_style = space
indent_size = 2
[*.txt]
insert_final_newline = false
[*.py]
indent_style = space
[*.md]
trim_trailing_whitespace = false
[Dockerfile]
indent_style = space
+43 -8
View File
@@ -1,9 +1,44 @@
# merger hooks, run tools/hooks/install.bat or install.sh to set up
*.dmm merge=dmm
*.dmi merge=dmi
# force changelog merging to use union
html/changelog.html merge=union
# force all files to be LF
* text=auto
## Enforce text mode and LF line breaks
*.bat text eol=lf
*.css text eol=lf
# *.dm text eol=lf
# *.dme text eol=lf
# *.dmf text eol=lf
*.htm text eol=lf
*.html text eol=lf
*.js text eol=lf
*.json text eol=lf
*.jsx text eol=lf
*.md text eol=lf
*.py text eol=lf
*.scss text eol=lf
*.sh text eol=lf
*.sql text eol=lf
*.svg text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.txt text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
## Enforce binary mode
*.bmp binary
*.dll binary
*.dmb binary
*.exe binary
*.gif binary
*.jpg binary
*.png binary
*.so binary
## Merger hooks, run tools/hooks/install.bat or install.sh to set up
*.dmm text eol=lf merge=dmm
*.dmi binary merge=dmi
##Force tab indents on dm files
*.dm whitespace=indent-with-non-tab
## Force changelog merging to use union
html/changelog.html text eol=lf merge=union
-36
View File
@@ -1,36 +0,0 @@
name: Autobuild TGUI
on:
push:
branches:
- 'master'
paths:
- 'tgui/**.js'
- 'tgui/**.scss'
jobs:
build:
name: Rebuild TGUI
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
with:
fetch-depth: 25
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: '>=12.13'
- name: Build TGUI
run: bin/tgui --ci
working-directory: ./tgui
- name: Commit Artifacts
run: |
git config --local user.email "action@github.com"
git config --local user.name "TGUI"
git pull origin master
git commit -m "Automatic TGUI Rebuild [ci skip]" -a || true
- name: Push Artifacts
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_MASTER_KEY }}
+120
View File
@@ -0,0 +1,120 @@
name: CI Suite
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
run_linters:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
name: Run Linters
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Setup cache
uses: actions/cache@v2
with:
path: $HOME/SpacemanDMM
key: ${{ runner.os }}-spacemandmm
- name: Install Tools
run: |
pip3 install setuptools
bash tools/ci/install_node.sh
bash tools/ci/install_spaceman_dmm.sh dreamchecker
tools/bootstrap/python -c ''
- name: Run Linters
run: |
bash tools/ci/check_filedirs.sh tgstation.dme
bash tools/ci/check_changelogs.sh
find . -name "*.php" -print0 | xargs -0 -n1 php -l
find . -name "*.json" -not -path "*/node_modules/*" -print0 | xargs -0 python3 ./tools/json_verifier.py
tgui/bin/tgui --lint
tgui/bin/tgui --test
bash tools/ci/check_grep.sh
tools/bootstrap/python -m dmi.test
tools/bootstrap/python -m mapmerge2.dmm_test
~/dreamchecker > ${GITHUB_WORKSPACE}/output-annotations.txt 2>&1
- name: Annotate Lints
uses: yogstation13/DreamAnnotate@v1
if: always()
with:
outputFile: output-annotations.txt
compile_all_maps:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
name: Compile Maps
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Setup cache
uses: actions/cache@v2
with:
path: $HOME/BYOND
key: ${{ runner.os }}-byond
- name: Compile All Maps
run: |
bash tools/ci/install_byond.sh
source $HOME/BYOND/byond/bin/byondsetup
python3 tools/ci/template_dm_generator.py
tgui/bin/tgui --build
bash tools/ci/dm.sh -DCIBUILDING -DCITESTING -DALL_MAPS tgstation.dme
run_all_tests:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
name: Integration Tests
runs-on: ubuntu-20.04
services:
mysql:
image: mysql:latest
env:
MYSQL_ROOT_PASSWORD: root
ports:
- 3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/checkout@v2
- name: Setup cache
uses: actions/cache@v2
with:
path: $HOME/BYOND
key: ${{ runner.os }}-byond
- name: Setup database
run: |
sudo systemctl start mysql
mysql -u root -proot -e 'CREATE DATABASE tg_ci;'
mysql -u root -proot tg_ci < SQL/tgstation_schema.sql
mysql -u root -proot -e 'CREATE DATABASE tg_ci_prefixed;'
mysql -u root -proot tg_ci_prefixed < SQL/tgstation_schema_prefixed.sql
- name: Install rust-g
run: |
sudo dpkg --add-architecture i386
sudo apt update || true
sudo apt install -o APT::Immediate-Configure=false libssl1.1:i386
bash tools/ci/install_rust_g.sh
- name: Compile and run tests
run: |
bash tools/ci/install_byond.sh
source $HOME/BYOND/byond/bin/byondsetup
tgui/bin/tgui --build
bash tools/ci/dm.sh -DCIBUILDING tgstation.dme
# bash tools/ci/run_server.sh
test_windows:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
name: Windows Build
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Compile
run: pwsh tools/ci/build.ps1
- name: Create artifact
run: |
md deploy
bash tools/deploy.sh ./deploy
- name: Deploy artifact
uses: actions/upload-artifact@v2
with:
name: deploy
path: deploy
+2 -2
View File
@@ -7,7 +7,7 @@ on:
jobs:
compile:
name: "Compile changelogs"
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
- name: "Check for CHANGELOG_ENABLER secret and pass true to output if it exists to be checked by later steps"
id: value_holder
@@ -15,7 +15,7 @@ jobs:
CHANGELOG_ENABLER: ${{ secrets.CHANGELOG_ENABLER }}
run: |
unset SECRET_EXISTS
if [-n $CHANGELOG_ENABLER]; then SECRET_EXISTS='true' ; fi
if [ -n $CHANGELOG_ENABLER ]; then SECRET_EXISTS='true' ; fi
echo ::set-output name=CL_ENABLED::${SECRET_EXISTS}
- name: "Setup python"
if: steps.value_holder.outputs.CL_ENABLED
+23
View File
@@ -0,0 +1,23 @@
name: Docker Build
on:
push:
branches:
- master
jobs:
publish:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Build and Publish Docker Image to Registry
uses: elgohr/Publish-Docker-Github-Action@master
with:
name: tgstation/tgstation
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
dockerfile: Dockerfile
tags: "latest"
cache: true
@@ -0,0 +1,31 @@
name: Generate documentation
on:
push:
branches:
- master
jobs:
generate_documentation:
if: "!contains(github.event.head_commit.message, '[ci skip]')"
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Setup cache
uses: actions/cache@v2
with:
path: $HOME/SpacemanDMM
key: ${{ runner.os }}-spacemandmm
- name: Install SpacemanDMM
run: bash tools/ci/install_spaceman_dmm.sh dmdoc
- name: Generate documentation
run: |
~/dmdoc
touch dmdoc/.nojekyll
echo codedocs.citadel-station.net > dmdoc/CNAME
- name: Deploy
uses: JamesIves/github-pages-deploy-action@3.7.1
with:
BRANCH: gh-pages
CLEAN: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SINGLE_COMMIT: true
FOLDER: dmdoc
+12
View File
@@ -0,0 +1,12 @@
name: "Round ID Linker"
on:
issues:
types: [opened]
jobs:
link_rounds:
runs-on: ubuntu-20.04
steps:
- uses: Cidatel-Station-13/round_linker@master #notice: fork the round linkies from tg!!
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
+47
View File
@@ -0,0 +1,47 @@
name: Update TGS DMAPI
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
update-dmapi:
runs-on: ubuntu-20.04
name: Update the TGS DMAPI
steps:
- name: Clone
uses: actions/checkout@v2
- name: Branch
run: |
git branch -f tgs-dmapi-update
git checkout tgs-dmapi-update
git reset --hard master
- name: Apply DMAPI update
uses: tgstation/tgs-dmapi-updater@v2
with:
header-path: 'code/__DEFINES/tgs.dm'
library-path: 'code/modules/tgs'
- name: Commit and Push
continue-on-error: true
run: |
git config user.name tgstation-server
git config user.email tgstation-server@users.noreply.github.com
git add .
git commit -m 'Update TGS DMAPI'
git push -f -u origin tgs-dmapi-update
- name: Create Pull Request
uses: repo-sync/pull-request@v2
if: ${{ success() }}
with:
source_branch: "tgs-dmapi-update"
destination_branch: "master"
pr_title: "Automatic TGS DMAPI Update"
pr_body: "This pull request updates the TGS DMAPI to the latest version. Please note any breaking or unimplemented changes before merging."
pr_label: "Tools"
pr_allow_empty: false
github_token: ${{ secrets.TGS_UPDATER }}
+28 -2
View File
@@ -198,13 +198,39 @@ Temporary Items
!/.vscode/extensions.json
tools/MapAtmosFixer/MapAtmosFixer/obj/*
tools/MapAtmosFixer/MapAtmosFixer/bin/*
tools/CreditsTool/bin/*
tools/CreditsTool/obj/*
#GitHub Atom
.atom-build.json
#Jukebox audio files
/config/jukebox_music/**/*
#KDevelop and Kate
*.kdev4*
*.kate-swp
#extra map stuff
/_maps/**/backup/
/_maps/templates.dm
#dmdoc default folder
/dmdoc
# Ignore custom music and title screens (amend as appropriate)
/config/jukebox_music/sounds/*
!/config/jukebox_music/sounds/exclude
/config/title_music/sounds/*
!/config/title_music/sounds/exclude
/config/title_screens/images/*
!/config/title_screens/images/exclude
#Linux docker
tools/LinuxOneShot/SetupProgram/obj/*
tools/LinuxOneShot/SetupProgram/bin/*
tools/LinuxOneShot/SetupProgram/.vs
tools/LinuxOneShot/Database
tools/LinuxOneShot/TGS_Config
tools/LinuxOneShot/TGS_Instances
tools/LinuxOneShot/TGS_Logs
# Common build tooling
!/tools/build
+11
View File
@@ -0,0 +1,11 @@
build:
stage: build
rules:
- if: $CI_MERGE_REQUEST_IID || $CI_COMMIT_REF_NAME == "master"
changes:
- tgui/**/*.js
- tgui/**/*.scss
when: always
image: node:lts
script:
- tgui/bin/tgui --ci
View File
+8
View File
@@ -0,0 +1,8 @@
static_files:
- name: config
populate: true
- name: data
linux_scripts:
PreCompile.sh: tools/tgs4_scripts/PreCompile.sh
windows_scripts:
PreCompile.bat: tools/tgs4_scripts/PreCompile.bat
-78
View File
@@ -1,78 +0,0 @@
language: generic
dist: xenial
sudo: false
branches:
except:
- ___TGS3TempBranch
- ___TGSTempBranch
matrix:
include:
- name: "Run Linters"
addons:
apt:
packages:
- python3
- python3-pip
- python3-setuptools
install:
- tools/travis/install_build_tools.sh
- tools/travis/install_dreamchecker.sh
script:
- tools/travis/check_filedirs.sh tgstation.dme
- tools/travis/check_changelogs.sh
- find . -name "*.php" -print0 | xargs -0 -n1 php -l
- find . -name "*.json" -not -path "*/node_modules/*" -print0 | xargs -0 python3 ./tools/json_verifier.py
- tools/travis/build_tgui.sh
- tools/travis/check_grep.sh
- python3 tools/travis/check_line_endings.py
- ~/dreamchecker
- name: "Compile All Maps"
addons:
apt:
packages:
- libstdc++6:i386
cache:
directories:
- $HOME/BYOND
install:
- tools/travis/install_byond.sh
- source $HOME/BYOND/byond/bin/byondsetup
before_script:
- tools/travis/template_dm_generator.py
script:
- tools/travis/dm.sh -DTRAVISBUILDING -DTRAVISTESTING -DALL_MAPS tgstation.dme
- name: "Compile and Run Tests"
addons:
mariadb: '10.2'
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- libstdc++6:i386
- gcc-multilib
- g++-7
- g++-7-multilib
- libmariadb-client-lgpl-dev:i386
- libmariadbd-dev
cache:
directories:
- $HOME/BYOND
- $HOME/libmariadb
install:
- tools/travis/install_byond.sh
- source $HOME/BYOND/byond/bin/byondsetup
- tools/travis/install_libmariadb.sh
- tools/travis/install_rust_g.sh
before_script:
- mysql -u root -e 'CREATE DATABASE tg_travis;'
- mysql -u root tg_travis < SQL/tgstation_schema.sql
- mysql -u root -e 'CREATE DATABASE tg_travis_prefixed;'
- mysql -u root tg_travis_prefixed < SQL/tgstation_schema_prefixed.sql
- tools/travis/build_bsql.sh
script:
- tools/travis/dm.sh -DTRAVISBUILDING tgstation.dme || travis_terminate 1
- tools/travis/run_server.sh
+9 -5
View File
@@ -1,7 +1,11 @@
{
"recommendations": [
"gbasood.byond-dm-language-support",
"platymuus.dm-langclient",
"EditorConfig.EditorConfig"
]
"recommendations": [
"gbasood.byond-dm-language-support",
"platymuus.dm-langclient",
"EditorConfig.EditorConfig",
"arcanis.vscode-zipfs",
"dbaeumer.vscode-eslint",
"stylemistake.auto-comment-blocks",
"Donkie.vscode-tgstation-test-adapter"
]
}
+12
View File
@@ -0,0 +1,12 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "byond",
"request": "launch",
"name": "Launch DreamSeeker",
"preLaunchTask": "Build All",
"dmb": "${workspaceFolder}/${command:CurrentDMB}"
}
]
}
+33
View File
@@ -0,0 +1,33 @@
{
"eslint.nodePath": "./tgui/.yarn/sdks",
"eslint.workingDirectories": [
"./tgui"
],
"typescript.tsdk": "./tgui/.yarn/sdks/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true,
"search.exclude": {
"**/.yarn": true,
"**/.pnp.*": true
},
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"workbench.editorAssociations": [
{
"filenamePattern": "*.dmi",
"viewType": "imagePreview.previewEditor"
}
],
"files.eol": "\n",
"gitlens.advanced.blame.customArguments": ["-w"],
"tgstationTestExplorer.project.resultsType": "json",
"[javascript]": {
"editor.rulers": [80]
},
"[typescript]": {
"editor.rulers": [80]
},
"[scss]": {
"editor.rulers": [80]
}
}
+55
View File
@@ -0,0 +1,55 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "process",
"command": "tools/build/build",
"windows": {
"command": ".\\tools\\build\\build.bat"
},
"options": {
"env": {
"DM_EXE": "${config:dreammaker.byondPath}"
}
},
"problemMatcher": [
"$dreammaker",
"$tsc",
"$eslint-stylish"
],
"group": {
"kind": "build",
"isDefault": true
},
"dependsOn": "dm: reparse",
"label": "Build All"
},
{
"type": "dreammaker",
"dme": "tgstation.dme",
"problemMatcher": [
"$dreammaker"
],
"group": "build",
"label": "dm: build - tgstation.dme"
},
{
"type": "shell",
"command": "tgui/bin/tgui",
"windows": {
"command": ".\\tgui\\bin\\tgui.bat"
},
"problemMatcher": [
"$tsc",
"$eslint-stylish"
],
"group": "build",
"label": "tgui: build"
},
{
"command": "${command:dreammaker.reparse}",
"group": "build",
"label": "dm: reparse"
}
]
}
BIN
View File
Binary file not shown.
+2
View File
@@ -0,0 +1,2 @@
@call tools\build\build
@pause
+64 -69
View File
@@ -1,90 +1,85 @@
FROM tgstation/byond:513.1508 as base
# base = ubuntu + full apt update
FROM ubuntu:xenial AS base
FROM base as build_base
RUN apt-get update \
RUN dpkg --add-architecture i386 \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get dist-upgrade -y \
&& apt-get install -y --no-install-recommends \
git \
ca-certificates
ca-certificates
FROM build_base as rust_g
# byond = base + byond installed globally
FROM base AS byond
WORKDIR /byond
RUN apt-get install -y --no-install-recommends \
curl \
unzip \
make \
libstdc++6:i386
COPY dependencies.sh .
RUN . ./dependencies.sh \
&& curl "http://www.byond.com/download/build/${BYOND_MAJOR}/${BYOND_MAJOR}.${BYOND_MINOR}_byond_linux.zip" -o byond.zip \
&& unzip byond.zip \
&& cd byond \
&& sed -i 's|install:|&\n\tmkdir -p $(MAN_DIR)/man6|' Makefile \
&& make install \
&& chmod 644 /usr/local/byond/man/man6/* \
&& apt-get purge -y --auto-remove curl unzip make \
&& cd .. \
&& rm -rf byond byond.zip
# build = byond + tgstation compiled and deployed to /deploy
FROM byond AS build
WORKDIR /tgstation
RUN apt-get install -y --no-install-recommends \
curl
COPY . .
RUN env TG_BOOTSTRAP_NODE_LINUX=1 tools/build/build \
&& tools/deploy.sh /deploy
# rust = base + rustc and i686 target
FROM base AS rust
RUN apt-get install -y --no-install-recommends \
curl && \
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal \
&& ~/.cargo/bin/rustup target add i686-unknown-linux-gnu
# rust_g = base + rust_g compiled to /rust_g
FROM rust AS rust_g
WORKDIR /rust_g
RUN apt-get install -y --no-install-recommends \
libssl-dev \
pkg-config \
curl \
gcc-multilib \
&& curl https://sh.rustup.rs -sSf | sh -s -- -y --default-host i686-unknown-linux-gnu \
pkg-config:i386 \
libssl-dev:i386 \
gcc-multilib \
git \
&& git init \
&& git remote add origin https://github.com/tgstation/rust-g
COPY dependencies.sh .
RUN /bin/bash -c "source dependencies.sh \
&& git fetch --depth 1 origin \$RUST_G_VERSION" \
RUN . ./dependencies.sh \
&& git fetch --depth 1 origin "${RUST_G_VERSION}" \
&& git checkout FETCH_HEAD \
&& ~/.cargo/bin/cargo build --release
FROM build_base as bsql
WORKDIR /bsql
RUN apt-get install -y --no-install-recommends software-properties-common \
&& add-apt-repository ppa:ubuntu-toolchain-r/test \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
cmake \
make \
g++-7 \
libmariadb-client-lgpl-dev \
&& git init \
&& git remote add origin https://github.com/tgstation/BSQL
COPY dependencies.sh .
RUN /bin/bash -c "source dependencies.sh \
&& git fetch --depth 1 origin \$BSQL_VERSION" \
&& git checkout FETCH_HEAD
WORKDIR /bsql/artifacts
ENV CC=gcc-7 CXX=g++-7
RUN ln -s /usr/include/mariadb /usr/include/mysql \
&& ln -s /usr/lib/i386-linux-gnu /root/MariaDB \
&& cmake .. \
&& make
FROM base as dm_base
&& env PKG_CONFIG_ALLOW_CROSS=1 ~/.cargo/bin/cargo build --release --target i686-unknown-linux-gnu
# final = byond + runtime deps + rust_g + build
FROM byond
WORKDIR /tgstation
FROM dm_base as build
RUN apt-get install -y --no-install-recommends \
libssl1.0.0:i386 \
zlib1g:i386
COPY . .
RUN DreamMaker -max_errors 0 tgstation.dme && tools/deploy.sh /deploy
FROM dm_base
EXPOSE 1337
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
mariadb-client \
libssl1.0.0 \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /root/.byond/bin
COPY --from=rust_g /rust_g/target/release/librust_g.so /root/.byond/bin/rust_g
COPY --from=bsql /bsql/artifacts/src/BSQL/libBSQL.so ./
COPY --from=build /deploy ./
#bsql fexists memes
RUN ln -s /tgstation/libBSQL.so /root/.byond/bin/libBSQL.so
COPY --from=rust_g /rust_g/target/i686-unknown-linux-gnu/release/librust_g.so ./librust_g.so
VOLUME [ "/tgstation/config", "/tgstation/data" ]
ENTRYPOINT [ "DreamDaemon", "tgstation.dmb", "-port", "1337", "-trusted", "-close", "-verbose" ]
EXPOSE 1337
+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.
+174
View File
@@ -0,0 +1,174 @@
#Python 3+ Script for converting ban table format as of 2018-10-28 made by Jordie0608
#
#Before starting ensure you have installed the mysqlclient package https://github.com/PyMySQL/mysqlclient-python
#It can be downloaded from command line with pip:
#pip install mysqlclient
#
#You will also have to create a new ban table for inserting converted data to per the schema:
#CREATE TABLE `ban` (
# `id` INT(11) UNSIGNED 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) UNSIGNED NOT NULL,
# `role` VARCHAR(32) NULL DEFAULT NULL,
# `expiration_time` DATETIME NULL DEFAULT NULL,
# `applies_to_admins` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
# `reason` VARCHAR(2048) NOT NULL,
# `ckey` VARCHAR(32) NULL DEFAULT NULL,
# `ip` INT(10) UNSIGNED NULL DEFAULT NULL,
# `computerid` VARCHAR(32) NULL DEFAULT NULL,
# `a_ckey` VARCHAR(32) NOT NULL,
# `a_ip` INT(10) UNSIGNED NOT NULL,
# `a_computerid` VARCHAR(32) NOT NULL,
# `who` VARCHAR(2048) NOT NULL,
# `adminwho` VARCHAR(2048) NOT NULL,
# `edits` TEXT NULL DEFAULT NULL,
# `unbanned_datetime` DATETIME NULL DEFAULT NULL,
# `unbanned_ckey` VARCHAR(32) NULL DEFAULT NULL,
# `unbanned_ip` INT(10) UNSIGNED NULL DEFAULT NULL,
# `unbanned_computerid` VARCHAR(32) NULL DEFAULT NULL,
# `unbanned_round_id` INT(11) UNSIGNED NULL DEFAULT NULL,
# PRIMARY KEY (`id`),
# KEY `idx_ban_isbanned` (`ckey`,`role`,`unbanned_datetime`,`expiration_time`),
# KEY `idx_ban_isbanned_details` (`ckey`,`ip`,`computerid`,`role`,`unbanned_datetime`,`expiration_time`),
# KEY `idx_ban_count` (`bantime`,`a_ckey`,`applies_to_admins`,`unbanned_datetime`,`expiration_time`)
#) ENGINE=InnoDB DEFAULT CHARSET=latin1;
#This is to prevent the destruction of existing data and allow rollbacks to be performed in the event of an error during conversion
#Once conversion is complete remember to rename the old and new ban tables; it's up to you if you want to keep the old table
#
#To view the parameters for this script, execute it with the argument --help
#All the positional arguments are required, remember to include prefixes in your table names if you use them
#An example of the command used to execute this script from powershell:
#python ban_conversion_2018-10-28.py "localhost" "root" "password" "feedback" "SS13_ban" "SS13_ban_new"
#I found that this script would complete conversion of 35000 rows in approximately 20 seconds, results will depend on the size of your ban table and computer used
#
#The script has been tested to complete with tgstation's ban table as of 2018-09-02 02:19:56
#In the event of an error the new ban table is automatically truncated
#The source table is never modified so you don't have to worry about losing any data due to errors
#Some additional error correction is performed to fix problems specific to legacy and invalid data in tgstation's ban table, these operations are tagged with a 'TG:' comment
#Even if you don't have any of these specific problems in your ban table the operations won't have matter as they have an insignificant effect on runtime
#
#While this script is safe to run with your game server(s) active, any bans created after the script has started won't be converted
#You will also have to ensure that the code and table names are updated between rounds as neither will be compatible
import MySQLdb
import argparse
import sys
from datetime import datetime
def parse_role(bantype, job):
if bantype in ("PERMABAN", "TEMPBAN", "ADMIN_PERMABAN", "ADMIN_TEMPBAN"):
role = "Server"
else:
#TG: Some legacy jobbans are missing the last character from their job string.
job_name_fixes = {"A":"AI", "Captai":"Captain", "Cargo Technicia":"Cargo Technician", "Chaplai":"Chaplain", "Che":"Chef", "Chemis":"Chemist", "Chief Enginee":"Chief Engineer", "Chief Medical Office":"Chief Medical Officer", "Cybor":"Cyborg", "Detectiv":"Detective", "Head of Personne":"Head of Personnel", "Head of Securit":"Head of Security", "Mim":"Mime", "pA":"pAI", "Quartermaste":"Quartermaster", "Research Directo":"Research Director", "Scientis":"Scientist", "Security Office":"Security Officer", "Station Enginee":"Station Engineer", "Syndicat":"Syndicate", "Warde":"Warden"}
keep_job_names = ("AI", "Head of Personnel", "Head of Security", "OOC", "pAI")
if job in job_name_fixes:
role = job_name_fixes[job]
#Some job names we want to keep the same as .title() would return a different string.
elif job in keep_job_names:
role = job
#And then there's this asshole.
elif job == "servant of Ratvar":
role = "Servant of Ratvar"
else:
role = job.title()
return role
def parse_admin(bantype):
if bantype in ("ADMIN_PERMABAN", "ADMIN_TEMPBAN"):
return 1
else:
return 0
def parse_datetime(bantype, expiration_time):
if bantype in ("PERMABAN", "JOB_PERMABAN", "ADMIN_PERMABAN"):
expiration_time = None
#TG: two bans with an invalid expiration_time due to admins setting the duration to approx. 19 billion years, I'm going to count them as permabans.
elif expiration_time == "0000-00-00 00:00:00":
expiration_time = None
elif not expiration_time:
expiration_time = None
return expiration_time
def parse_not_null(field):
if not field:
field = 0
return field
def parse_for_empty(field):
if not field:
field = None
#TG: Several bans from 2012, probably from clients disconnecting while a ban was being made.
elif field == "BLANK CKEY ERROR":
field = None
return field
if sys.version_info[0] < 3:
raise Exception("Python must be at least version 3 for this script.")
current_round = 0
parser = argparse.ArgumentParser()
parser.add_argument("address", help="MySQL server address (use localhost for the current computer)")
parser.add_argument("username", help="MySQL login username")
parser.add_argument("password", help="MySQL login username")
parser.add_argument("database", help="Database name")
parser.add_argument("curtable", help="Name of the current ban table (remember prefixes if you use them)")
parser.add_argument("newtable", help="Name of the new table to insert to, can't be same as the source table (remember prefixes)")
args = parser.parse_args()
db=MySQLdb.connect(host=args.address, user=args.username, passwd=args.password, db=args.database)
cursor=db.cursor()
current_table = args.curtable
new_table = args.newtable
#TG: Due to deleted rows and a legacy ban import being inserted from id 3140 id order is not contiguous or in line with date order. While technically valid, it's confusing and I don't like that.
#TG: So instead of just running through to MAX(id) we're going to reorder the records by bantime as we go.
cursor.execute("SELECT id FROM " + current_table + " ORDER BY bantime ASC")
id_list = cursor.fetchall()
start_time = datetime.now()
print("Beginning conversion at {0}".format(start_time.strftime("%Y-%m-%d %H:%M:%S")))
try:
for current_id in id_list:
if current_id[0] % 5000 == 0:
cur_time = datetime.now()
print("Reached row ID {0} Duration: {1}".format(current_id[0], cur_time - start_time))
cursor.execute("SELECT * FROM " + current_table + " WHERE id = %s", [current_id[0]])
query_row = cursor.fetchone()
if not query_row:
continue
else:
#TG: bans with an empty reason which were somehow created with almost every field being null or empty, we can't do much but skip this
if not query_row[6]:
continue
bantime = query_row[1]
server_ip = query_row[2]
server_port = query_row[3]
round_id = query_row[4]
applies_to_admins = parse_admin(query_row[5])
reason = query_row[6]
role = parse_role(query_row[5], query_row[7])
expiration_time = parse_datetime(query_row[5], query_row[9])
ckey = parse_for_empty(query_row[10])
computerid = parse_for_empty(query_row[11])
ip = parse_for_empty(query_row[12])
a_ckey = parse_not_null(query_row[13])
a_computerid = parse_not_null(query_row[14])
a_ip = parse_not_null(query_row[15])
who = query_row[16]
adminwho = query_row[17]
edits = parse_for_empty(query_row[18])
unbanned_datetime = parse_datetime(None, query_row[20])
unbanned_ckey = parse_for_empty(query_row[21])
unbanned_computerid = parse_for_empty(query_row[22])
unbanned_ip = parse_for_empty(query_row[23])
cursor.execute("INSERT INTO " + new_table + " (bantime, server_ip, server_port, round_id, role, expiration_time, applies_to_admins, reason, ckey, ip, computerid, a_ckey, a_ip, a_computerid, who, adminwho, edits, unbanned_datetime, unbanned_ckey, unbanned_ip, unbanned_computerid) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", (bantime, server_ip, server_port, round_id, role, expiration_time, applies_to_admins, reason, ckey, ip, computerid, a_ckey, a_ip, a_computerid, who, adminwho, edits, unbanned_datetime, unbanned_ckey, unbanned_ip, unbanned_computerid))
db.commit()
end_time = datetime.now()
print("Conversion completed at {0}".format(datetime.now().strftime("%Y-%m-%d %H:%M:%S")))
print("Script duration: {0}".format(end_time - start_time))
except Exception as e:
end_time = datetime.now()
print("Error encountered on row ID {0} at {1}".format(current_id[0], datetime.now().strftime("%Y-%m-%d %H:%M:%S")))
print("Script duration: {0}".format(end_time - start_time))
cursor.execute("TRUNCATE {0} ".format(new_table))
raise e
cursor.close()
+248 -6
View File
@@ -1,13 +1,256 @@
Any time you make a change to the schema files, remember to increment the database schema version. Generally increment the minor number, major should be reserved for significant changes to the schema. Both values go up to 255.
The latest database version is 4.7; The query to update the schema revision table is:
The latest database version is 5.12; The query to update the schema revision table is:
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (4, 7);
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (5, 12);
or
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (4, 7);
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (5, 12);
In any query remember to add a prefix to the table names if you use one.
####################################################################################################
NOTICE! BANS AND OTHERS ARENT SET TO THEIR LATEST FORMAT YET AS THE BACKEND DOES NOT SUPPORT IT YET!
####################################################################################################
-----------------------------------------------------
Version 5.12, 29 December 2020, by Missfox
Modified table `messages`, adding column `playtime` to show the user's playtime when the note was created.
ALTER TABLE `messages` ADD `playtime` INT(11) NULL DEFAULT(NULL) AFTER `severity`
-----------------------------------------------------
Version 5.11, 7 September 2020, by bobbahbrown, MrStonedOne, and Jordie0608
Adds indices to support search operations on the adminhelp ticket tables. This is to support improved performance on Atlanta Ned's Statbus.
CREATE INDEX `idx_ticket_act_recip` (`action`, `recipient`)
CREATE INDEX `idx_ticket_act_send` (`action`, `sender`)
CREATE INDEX `idx_ticket_tic_rid` (`ticket`, `round_id`)
CREATE INDEX `idx_ticket_act_time_rid` (`action`, `timestamp`, `round_id`)
-----------------------------------------------------
Version 5.10, 7 August 2020, by oranges
Changes how the discord verification process works.
Adds the discord_links table, and migrates discord id entries from player table to the discord links table in a once off operation and then removes the discord id
on the player table
START TRANSACTION;
DROP TABLE IF EXISTS `discord_links`;
CREATE TABLE `discord_links` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ckey` VARCHAR(32) NOT NULL,
`discord_id` BIGINT(20) DEFAULT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`one_time_token` VARCHAR(100) NOT NULL,
`valid` BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
INSERT INTO `discord_links` (`ckey`, `discord_id`, `one_time_token`, `valid`) SELECT `ckey`, `discord_id`, CONCAT("presync_from_player_table_", `ckey`), TRUE FROM `player` WHERE discord_id IS NOT NULL;
ALTER TABLE `player` DROP COLUMN `discord_id`;
COMMIT;
-----------------------------------------------------
Version 5.9, 19 April 2020, by Jordie0608
Updates and improvements to poll handling.
Added the `deleted` column to tables 'poll_option', 'poll_textreply' and 'poll_vote' and the columns `created_datetime`, `subtitle`, `allow_revoting` and `deleted` to 'poll_question'.
Changes table 'poll_question' column `createdby_ckey` to be NOT NULL and index `idx_pquest_time_admin` to be `idx_pquest_time_deleted_id` and 'poll_textreply' column `adminrank` to have no default.
Added procedure `set_poll_deleted` that's called when deleting a poll to set deleted to true on each poll table where rows matching a poll_id argument.
ALTER TABLE `poll_option`
ADD COLUMN `deleted` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `default_percentage_calc`;
ALTER TABLE `poll_question`
CHANGE COLUMN `createdby_ckey` `createdby_ckey` VARCHAR(32) NOT NULL AFTER `multiplechoiceoptions`,
ADD COLUMN `created_datetime` datetime NOT NULL AFTER `polltype`,
ADD COLUMN `subtitle` VARCHAR(255) NULL DEFAULT NULL AFTER `question`,
ADD COLUMN `allow_revoting` TINYINT(1) UNSIGNED NOT NULL AFTER `dontshow`,
ADD COLUMN `deleted` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `allow_revoting`,
DROP INDEX `idx_pquest_time_admin`,
ADD INDEX `idx_pquest_time_deleted_id` (`starttime`, `endtime`, `deleted`, `id`);
ALTER TABLE `poll_textreply`
CHANGE COLUMN `adminrank` `adminrank` varchar(32) NOT NULL AFTER `replytext`,
ADD COLUMN `deleted` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `adminrank`;
ALTER TABLE `poll_vote`
ADD COLUMN `deleted` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `rating`;
DELIMITER $$
CREATE PROCEDURE `set_poll_deleted`(
IN `poll_id` INT
)
SQL SECURITY INVOKER
BEGIN
UPDATE `poll_question` SET deleted = 1 WHERE id = poll_id;
UPDATE `poll_option` SET deleted = 1 WHERE pollid = poll_id;
UPDATE `poll_vote` SET deleted = 1 WHERE pollid = poll_id;
UPDATE `poll_textreply` SET deleted = 1 WHERE pollid = poll_id;
END
$$
DELIMITER ;
-----------------------------------------------------
Version 5.8, 7 April 2020, by Jordie0608
Modified table `messages`, adding column `deleted_ckey` to record who deleted a message.
ALTER TABLE `messages` ADD COLUMN `deleted_ckey` VARCHAR(32) NULL DEFAULT NULL AFTER `deleted`;
-----------------------------------------------------
Version 5.7, 10 January 2020 by Atlanta-Ned
Added ticket table for tracking ahelp tickets in the database.
DROP TABLE IF EXISTS `ticket`;
CREATE TABLE `ticket` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`server_ip` int(10) unsigned NOT NULL,
`server_port` smallint(5) unsigned NOT NULL,
`round_id` int(11) unsigned NOT NULL,
`ticket` smallint(11) unsigned NOT NULL,
`action` varchar(20) NOT NULL DEFAULT 'Message',
`message` text NOT NULL,
`timestamp` datetime NOT NULL,
`recipient` varchar(32) DEFAULT NULL,
`sender` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-----------------------------------------------------
Version 5.6, 6 December 2019 by Anturke
Added achievement_name and achievement_description columns to achievement_metadata table.
ALTER TABLE `achievement_metadata` ADD COLUMN (`achievement_name` VARCHAR(64) NULL DEFAULT NULL, `achievement_description` VARCHAR(512) NULL DEFAULT NULL);
-----------------------------------------------------
Version 5.5, 26 October 2019 by Anturke
Added achievement_metadata table.
DROP TABLE IF EXISTS `achievement_metadata`;
CREATE TABLE `achievement_metadata` (
`achievement_key` VARCHAR(32) NOT NULL,
`achievement_version` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
`achievement_type` enum('achievement','score','award') NULL DEFAULT NULL,
PRIMARY KEY (`achievement_key`)
) ENGINE=InnoDB;
-----------------------------------------------------
Version 5.4, 5 October 2019 by Anturke
Added achievements table.
See hub migration verb in _achievement_data.dm for details on migrating.
CREATE TABLE `achievements` (
`ckey` VARCHAR(32) NOT NULL,
`achievement_key` VARCHAR(32) NOT NULL,
`value` INT NULL,
`last_updated` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ckey`,`achievement_key`)
) ENGINE=InnoDB;
----------------------------------------------------
Version 5.3, 6 July 2019, by Atlanta-Ned
Added a `feedback` column to the admin table, used for linking to individual admin feedback threads. Currently this is only used for statistics tracking tools such as Statbus and isn't used by the game.
ALTER TABLE `admin` ADD `feedback` VARCHAR(255) NULL DEFAULT NULL AFTER `rank`;
----------------------------------------------------
Version 5.2, 30 May 2019, by AffectedArc07
Added a field to the `player` table to track ckey and discord ID relationships
ALTER TABLE `player`
ADD COLUMN `discord_id` BIGINT NULL DEFAULT NULL AFTER `flags`;
----------------------------------------------------
Version 5.1, 25 Feb 2018, by MrStonedOne
Added four tables to enable storing of stickybans in the database since byond can lose them, and to enable disabling stickybans for a round without depending on a crash free round. Existing stickybans are automagically imported to the tables.
CREATE TABLE `stickyban` (
`ckey` VARCHAR(32) NOT NULL,
`reason` VARCHAR(2048) NOT NULL,
`banning_admin` VARCHAR(32) NOT NULL,
`datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ckey`)
) ENGINE=InnoDB;
CREATE TABLE `stickyban_matched_ckey` (
`stickyban` VARCHAR(32) NOT NULL,
`matched_ckey` VARCHAR(32) NOT NULL,
`first_matched` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_matched` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`exempt` TINYINT(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`stickyban`, `matched_ckey`)
) ENGINE=InnoDB;
CREATE TABLE `stickyban_matched_ip` (
`stickyban` VARCHAR(32) NOT NULL,
`matched_ip` INT UNSIGNED NOT NULL,
`first_matched` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_matched` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`stickyban`, `matched_ip`)
) ENGINE=InnoDB;
CREATE TABLE `stickyban_matched_cid` (
`stickyban` VARCHAR(32) NOT NULL,
`matched_cid` VARCHAR(32) NOT NULL,
`first_matched` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_matched` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`stickyban`, `matched_cid`)
) ENGINE=InnoDB;
----------------------------------------------------
Version 5.0, 28 October 2018, by Jordie0608
Modified ban table to remove the need for the `bantype` column, a python script is used to migrate data to this new format.
See the file 'ban_conversion_2018-10-28.py' for instructions on how to use the script.
A new ban table can be created with the query:
CREATE TABLE `ban` (
`id` INT(11) UNSIGNED 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) UNSIGNED NOT NULL,
`role` VARCHAR(32) NULL DEFAULT NULL,
`expiration_time` DATETIME NULL DEFAULT NULL,
`applies_to_admins` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
`reason` VARCHAR(2048) NOT NULL,
`ckey` VARCHAR(32) NULL DEFAULT NULL,
`ip` INT(10) UNSIGNED NULL DEFAULT NULL,
`computerid` VARCHAR(32) NULL DEFAULT NULL,
`a_ckey` VARCHAR(32) NOT NULL,
`a_ip` INT(10) UNSIGNED NOT NULL,
`a_computerid` VARCHAR(32) NOT NULL,
`who` VARCHAR(2048) NOT NULL,
`adminwho` VARCHAR(2048) NOT NULL,
`edits` TEXT NULL DEFAULT NULL,
`unbanned_datetime` DATETIME NULL DEFAULT NULL,
`unbanned_ckey` VARCHAR(32) NULL DEFAULT NULL,
`unbanned_ip` INT(10) UNSIGNED NULL DEFAULT NULL,
`unbanned_computerid` VARCHAR(32) NULL DEFAULT NULL,
`unbanned_round_id` INT(11) UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_ban_isbanned` (`ckey`,`role`,`unbanned_datetime`,`expiration_time`),
KEY `idx_ban_isbanned_details` (`ckey`,`ip`,`computerid`,`role`,`unbanned_datetime`,`expiration_time`),
KEY `idx_ban_count` (`bantime`,`a_ckey`,`applies_to_admins`,`unbanned_datetime`,`expiration_time`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
----------------------------------------------------
Version 4.7, 18 August 2018, by CitrusGender
@@ -50,8 +293,7 @@ Added table `role_time_log` and triggers `role_timeTlogupdate`, `role_timeTlogin
CREATE TABLE `role_time_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT , `ckey` VARCHAR(32) NOT NULL , `job` VARCHAR(128) NOT NULL , `delta` INT NOT NULL , `datetime` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , PRIMARY KEY (`id`), INDEX (`ckey`), INDEX (`job`), INDEX (`datetime`)) ENGINE = InnoDB;
DELIMITER
$$
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
$$
@@ -61,7 +303,7 @@ $$
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
$$
DELIMITER ;
----------------------------------------------------
Version 4.2, 17 April 2018, by Jordie0608
+602 -473
View File
File diff suppressed because it is too large Load Diff
+156 -27
View File
@@ -19,8 +19,9 @@ DROP TABLE IF EXISTS `SS13_admin`;
CREATE TABLE `SS13_admin` (
`ckey` varchar(32) NOT NULL,
`rank` varchar(32) NOT NULL,
`feedback` varchar(255) DEFAULT NULL,
PRIMARY KEY (`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -40,7 +41,7 @@ CREATE TABLE `SS13_admin_log` (
`target` varchar(32) NOT NULL,
`log` varchar(1000) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -56,7 +57,7 @@ CREATE TABLE `SS13_admin_ranks` (
`exclude_flags` smallint(5) unsigned NOT NULL,
`can_edit_flags` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`rank`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -67,11 +68,11 @@ DROP TABLE IF EXISTS `SS13_ban`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `SS13_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,
`id` INT(11) UNSIGNED 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) UNSIGNED 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,
@@ -95,7 +96,7 @@ CREATE TABLE `SS13_ban` (
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;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -115,7 +116,7 @@ CREATE TABLE `SS13_connection_log` (
`ip` int(10) unsigned NOT NULL,
`computerid` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -152,7 +153,7 @@ CREATE TABLE `SS13_death` (
`last_words` varchar(255) DEFAULT NULL,
`suicide` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -171,7 +172,7 @@ CREATE TABLE `SS13_feedback` (
`key_type` enum('text', 'amount', 'tally', 'nested tally', 'associative') NOT NULL,
`json` json NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -187,7 +188,7 @@ CREATE TABLE `SS13_ipintel` (
`intel` double NOT NULL DEFAULT '0',
PRIMARY KEY (`ip`),
KEY `idx_ipintel` (`ip`,`intel`,`date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -206,7 +207,7 @@ CREATE TABLE `SS13_legacy_population` (
`server_port` smallint(5) unsigned NOT NULL,
`round_id` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -231,7 +232,7 @@ CREATE TABLE `SS13_library` (
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;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -255,14 +256,16 @@ CREATE TABLE `SS13_messages` (
`secret` tinyint(1) unsigned NOT NULL,
`expire_timestamp` datetime DEFAULT NULL,
`severity` enum('high','medium','minor','none') DEFAULT NULL,
`playtime` int(11) unsigned NULL DEFAULT NULL,
`lasteditor` varchar(32) DEFAULT NULL,
`edits` text,
`deleted` tinyint(1) unsigned NOT NULL DEFAULT '0',
`deleted_ckey` VARCHAR(32) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_msg_ckey_time` (`targetckey`,`timestamp`, `deleted`),
KEY `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`, `deleted`),
KEY `idx_msg_type_ckey_time_odr` (`type`,`targetckey`,`timestamp`, `deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -299,7 +302,7 @@ CREATE TABLE IF NOT EXISTS `SS13_role_time_log` (
KEY `ckey` (`ckey`),
KEY `job` (`job`),
KEY `datetime` (`datetime`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -324,7 +327,7 @@ CREATE TABLE `SS13_player` (
PRIMARY KEY (`ckey`),
KEY `idx_player_cid_ckey` (`computerid`,`ckey`),
KEY `idx_player_ip_ckey` (`ip`,`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -344,9 +347,10 @@ CREATE TABLE `SS13_poll_option` (
`descmid` varchar(32) DEFAULT NULL,
`descmax` varchar(32) DEFAULT NULL,
`default_percentage_calc` tinyint(1) unsigned NOT NULL DEFAULT '1',
`deleted` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_pop_pollid` (`pollid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -359,19 +363,23 @@ DROP TABLE IF EXISTS `SS13_poll_question`;
CREATE TABLE `SS13_poll_question` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`polltype` enum('OPTION','TEXT','NUMVAL','MULTICHOICE','IRV') NOT NULL,
`created_datetime` datetime NOT NULL,
`starttime` datetime NOT NULL,
`endtime` datetime NOT NULL,
`question` varchar(255) NOT NULL,
`subtitle` varchar(255) DEFAULT NULL,
`adminonly` tinyint(1) unsigned NOT NULL,
`multiplechoiceoptions` int(2) DEFAULT NULL,
`createdby_ckey` varchar(32) DEFAULT NULL,
`createdby_ckey` varchar(32) NOT NULL,
`createdby_ip` int(10) unsigned NOT NULL,
`dontshow` tinyint(1) unsigned NOT NULL,
`allow_revoting` tinyint(1) unsigned NOT NULL,
`deleted` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_pquest_question_time_ckey` (`question`,`starttime`,`endtime`,`createdby_ckey`,`createdby_ip`),
KEY `idx_pquest_time_admin` (`starttime`,`endtime`,`adminonly`),
KEY `idx_pquest_time_deleted_id` (`starttime`,`endtime`, `deleted`, `id`),
KEY `idx_pquest_id_time_type_admin` (`id`,`starttime`,`endtime`,`polltype`,`adminonly`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -388,10 +396,11 @@ CREATE TABLE `SS13_poll_textreply` (
`ckey` varchar(32) NOT NULL,
`ip` int(10) unsigned NOT NULL,
`replytext` varchar(2048) NOT NULL,
`adminrank` varchar(32) NOT NULL DEFAULT 'Player',
`adminrank` varchar(32) NOT NULL,
`deleted` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_ptext_pollid_ckey` (`pollid`,`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -410,10 +419,11 @@ CREATE TABLE `SS13_poll_vote` (
`ip` int(10) unsigned NOT NULL,
`adminrank` varchar(32) NOT NULL,
`rating` int(2) DEFAULT NULL,
`deleted` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_pvote_pollid_ckey` (`pollid`,`ckey`),
KEY `idx_pvote_optionid_ckey` (`optionid`,`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -438,7 +448,7 @@ CREATE TABLE `SS13_round` (
`map_name` VARCHAR(32) NULL,
`station_name` VARCHAR(80) NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
@@ -451,9 +461,113 @@ CREATE TABLE `SS13_schema_revision` (
`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;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Table structure for table `SS13_stickyban`
--
DROP TABLE IF EXISTS `SS13_stickyban`;
CREATE TABLE `SS13_stickyban` (
`ckey` VARCHAR(32) NOT NULL,
`reason` VARCHAR(2048) NOT NULL,
`banning_admin` VARCHAR(32) NOT NULL,
`datetime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ckey`)
) ENGINE=InnoDB;
--
-- Table structure for table `SS13_stickyban_matched_ckey`
--
DROP TABLE IF EXISTS `SS13_stickyban_matched_ckey`;
CREATE TABLE `SS13_stickyban_matched_ckey` (
`stickyban` VARCHAR(32) NOT NULL,
`matched_ckey` VARCHAR(32) NOT NULL,
`first_matched` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_matched` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`exempt` TINYINT(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`stickyban`, `matched_ckey`)
) ENGINE=InnoDB;
--
-- Table structure for table `SS13_stickyban_matched_ip`
--
DROP TABLE IF EXISTS `SS13_stickyban_matched_ip`;
CREATE TABLE `SS13_stickyban_matched_ip` (
`stickyban` VARCHAR(32) NOT NULL,
`matched_ip` INT UNSIGNED NOT NULL,
`first_matched` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_matched` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`stickyban`, `matched_ip`)
) ENGINE=InnoDB;
--
-- Table structure for table `SS13_stickyban_matched_cid`
--
DROP TABLE IF EXISTS `SS13_stickyban_matched_cid`;
CREATE TABLE `SS13_stickyban_matched_cid` (
`stickyban` VARCHAR(32) NOT NULL,
`matched_cid` VARCHAR(32) NOT NULL,
`first_matched` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_matched` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`stickyban`, `matched_cid`)
) ENGINE=InnoDB;
--
-- Table structure for table `SS13_achievements`
--
DROP TABLE IF EXISTS `SS13_achievements`;
CREATE TABLE `SS13_achievements` (
`ckey` VARCHAR(32) NOT NULL,
`achievement_key` VARCHAR(32) NOT NULL,
`value` INT NULL,
`last_updated` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ckey`,`achievement_key`)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS `SS13_achievement_metadata`;
CREATE TABLE `SS13_achievement_metadata` (
`achievement_key` VARCHAR(32) NOT NULL,
`achievement_version` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
`achievement_type` enum('achievement','score','award') NULL DEFAULT NULL,
`achievement_name` VARCHAR(64) NULL DEFAULT NULL,
`achievement_description` VARCHAR(512) NULL DEFAULT NULL,
PRIMARY KEY (`achievement_key`)
) ENGINE=InnoDB;
--
-- Table structure for table `SS13_ticket`
--
DROP TABLE IF EXISTS `SS13_ticket`;
CREATE TABLE `SS13_ticket` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`server_ip` int(10) unsigned NOT NULL,
`server_port` smallint(5) unsigned NOT NULL,
`round_id` int(11) unsigned NOT NULL,
`ticket` smallint(11) unsigned NOT NULL,
`action` varchar(20) NOT NULL DEFAULT 'Message',
`message` text NOT NULL,
`timestamp` datetime NOT NULL,
`recipient` varchar(32) DEFAULT NULL,
`sender` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_ticket_act_recip` (`action`, `recipient`),
KEY `idx_ticket_act_send` (`action`, `sender`),
KEY `idx_ticket_tic_rid` (`ticket`, `round_id`),
KEY `idx_ticket_act_time_rid` (`action`, `timestamp`, `round_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
DELIMITER $$
CREATE PROCEDURE `set_poll_deleted`(
IN `poll_id` INT
)
SQL SECURITY INVOKER
BEGIN
UPDATE `SS13_poll_question` SET deleted = 1 WHERE id = poll_id;
UPDATE `SS13_poll_option` SET deleted = 1 WHERE pollid = poll_id;
UPDATE `SS13_poll_vote` SET deleted = 1 WHERE pollid = poll_id;
UPDATE `SS13_poll_textreply` SET deleted = 1 WHERE pollid = poll_id;
END
$$
CREATE TRIGGER `SS13_role_timeTlogupdate` AFTER UPDATE ON `SS13_role_time` FOR EACH ROW BEGIN INSERT into SS13_role_time_log (ckey, job, delta) VALUES (NEW.CKEY, NEW.job, NEW.minutes-OLD.minutes);
END
$$
@@ -463,6 +577,21 @@ $$
CREATE TRIGGER `SS13_role_timeTlogdelete` AFTER DELETE ON `SS13_role_time` FOR EACH ROW BEGIN INSERT into SS13_role_time_log (ckey, job, delta) VALUES (OLD.ckey, OLD.job, 0-OLD.minutes);
END
$$
DELIMITER ;
--
-- Table structure for table `discord_links`
--
DROP TABLE IF EXISTS `SS13_discord_links`;
CREATE TABLE `SS13_discord_links` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ckey` VARCHAR(32) NOT NULL,
`discord_id` BIGINT(20) DEFAULT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`one_time_token` VARCHAR(100) NOT NULL,
`valid` BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+7
View File
@@ -1,2 +1,9 @@
[langserver]
dreamchecker = true
[code_standards]
disallow_relative_type_definitions = true
disallow_relative_proc_definitions = true
[dmdoc]
use_typepath_names = true
+9 -22
View File
@@ -1,22 +1,9 @@
{
"documentation": "/tg/station server 3 configuration file",
"changelog": {
"script": "tools/ss13_genchangelog.py",
"arguments": "html/changelog.html html/changelogs",
"pip_dependancies": [
"PyYaml",
"beautifulsoup4"
]
},
"synchronize_paths": [
"html/changelog.html",
"html/changelogs/*"
],
"static_directories": [
"config",
"data"
],
"dlls": [
"libmariadb.dll"
]
}
{
"documentation": "/tg/station server 3 configuration file",
"synchronize_paths": [],
"static_directories": [
"config",
"data"
],
"dlls": []
}
@@ -18,7 +18,7 @@
/obj/item/mining_scanner,
/obj/item/flashlight/lantern,
/obj/item/card/id/mining,
/obj/item/gps/mining,
/obj/item/gps/mining/off,
/turf/open/floor/plating,
/area/ruin/powered/golem_ship)
"d" = (
@@ -32,7 +32,7 @@
/obj/item/mining_scanner,
/obj/item/flashlight/lantern,
/obj/item/card/id/mining,
/obj/item/gps/mining,
/obj/item/gps/mining/off,
/turf/open/floor/plating,
/area/ruin/powered/golem_ship)
"e" = (
@@ -71,8 +71,8 @@
/area/ruin/powered/golem_ship)
"k" = (
/obj/machinery/computer/arcade/battle{
icon_state = "arcade";
dir = 4
dir = 4;
icon_state = "arcade"
},
/turf/open/floor/mineral/titanium/purple,
/area/ruin/powered/golem_ship)
@@ -112,8 +112,8 @@
/area/ruin/powered/golem_ship)
"s" = (
/obj/machinery/computer/arcade/orion_trail{
icon_state = "arcade";
dir = 4
dir = 4;
icon_state = "arcade"
},
/turf/open/floor/mineral/titanium/purple,
/area/ruin/powered/golem_ship)
@@ -139,6 +139,7 @@
dir = 4;
name = "shrine of the liberator"
},
/obj/item/tcg_card/special/golem,
/turf/open/floor/mineral/titanium/purple,
/area/ruin/powered/golem_ship)
"v" = (
File diff suppressed because it is too large Load Diff
@@ -506,7 +506,7 @@
},
/obj/machinery/power/apc/unlocked{
dir = 4;
pixel_x = 26
pixel_x = 24
},
/obj/structure/cable{
icon_state = "0-8"
@@ -3,7 +3,7 @@
/turf/closed/indestructible/riveted/uranium,
/area/icemoon/surface/outdoors)
"b" = (
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/icemoon/surface/outdoors)
"c" = (
/turf/open/water/cursed_spring,
@@ -14,6 +14,10 @@
},
/turf/open/floor/plating/beach/sand,
/area/icemoon/surface/outdoors)
"l" = (
/obj/item/tcg_card/special/morph,
/turf/open/floor/plating/beach/sand,
/area/icemoon/surface/outdoors)
"I" = (
/turf/closed/indestructible/fakeglass,
/area/icemoon/surface/outdoors)
@@ -72,7 +76,7 @@ L
c
c
c
U
l
U
a
b
@@ -1,6 +1,6 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/icemoon/surface/outdoors)
"b" = (
/obj/structure/sign/poster/contraband/lusty_xenomorph,
@@ -20,6 +20,10 @@
},
/turf/open/floor/mineral/diamond,
/area/icemoon/surface/outdoors)
"f" = (
/obj/item/tcg_card/special/xenomaid,
/turf/open/floor/mineral/diamond,
/area/icemoon/surface/outdoors)
(1,1,1) = {"
a
@@ -65,7 +69,7 @@ a
a
a
b
c
f
c
c
b
@@ -1,6 +1,6 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/icemoon/surface/outdoors)
"b" = (
/turf/closed/wall/mineral/wood/nonmetal,
@@ -16,7 +16,7 @@
/turf/open/floor/wood,
/area/ruin/unpowered)
"d" = (
/turf/open/transparent/openspace/icemoon,
/turf/open/openspace/icemoon,
/area/icemoon/surface/outdoors)
"e" = (
/obj/item/clothing/suit/hooded/explorer,
@@ -38,7 +38,7 @@
/area/ruin/unpowered)
"h" = (
/obj/structure/flora/rock/icy,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/icemoon/surface/outdoors)
"i" = (
/turf/template_noop,
@@ -49,6 +49,7 @@
/area/ruin/unpowered)
"k" = (
/obj/structure/closet/crate/freezer,
/obj/item/tcg_card/special/demonic_miner,
/turf/open/floor/wood,
/area/ruin/unpowered)
"l" = (
@@ -61,7 +62,7 @@
/turf/open/floor/wood,
/area/ruin/unpowered)
"n" = (
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered)
"o" = (
/obj/item/reagent_containers/food/drinks/beer,
@@ -233,7 +233,7 @@
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"tN" = (
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/icemoon/underground/explored)
"tX" = (
/obj/structure/table/wood,
@@ -13,7 +13,7 @@
/turf/open/floor/plasteel/white,
/area/ruin/powered/bathhouse)
"d" = (
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/icemoon/underground/explored)
"e" = (
/obj/structure/mirror{
@@ -1,9 +1,9 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/mineral/random/volcanic/more_caves,
/turf/closed/mineral/random/volcanic,
/area/icemoon/surface/outdoors/unexplored)
"b" = (
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/icemoon/underground/explored)
"y" = (
/mob/living/simple_animal/hostile/megafauna/dragon{
@@ -13,7 +13,7 @@
/turf/open/floor/mineral/gold,
/area/icemoon/underground/explored)
"B" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/icemoon/surface/outdoors/unexplored)
"P" = (
/turf/open/floor/mineral/silver,
@@ -22,7 +22,7 @@
/turf/open/floor/mineral/gold,
/area/icemoon/underground/explored)
"T" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/icemoon/underground/explored)
(1,1,1) = {"
@@ -12,7 +12,7 @@
/turf/closed/wall/mineral/wood,
/area/ruin/unpowered/buried_library)
"ad" = (
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/icemoon/underground/explored)
"ae" = (
/turf/open/floor/wood,
@@ -36,7 +36,7 @@
/turf/open/floor/plasteel/cult,
/area/ruin/unpowered/buried_library)
"ak" = (
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"al" = (
/turf/closed/wall/mineral/iron,
@@ -67,7 +67,7 @@
"as" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/paper/fluff/ruins/oldstation/protosing,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"at" = (
/obj/structure/fluff/paper,
@@ -75,14 +75,14 @@
/area/ruin/unpowered/buried_library)
"av" = (
/obj/structure/bookcase/random,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"aw" = (
/turf/open/floor/plating,
/area/ruin/unpowered/buried_library)
"ax" = (
/obj/effect/decal/cleanable/dirt,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"ay" = (
/obj/machinery/door/keycard/library,
@@ -98,7 +98,7 @@
/area/ruin/unpowered/buried_library)
"aC" = (
/obj/item/feather,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"aD" = (
/turf/open/floor/carpet/black,
@@ -111,7 +111,7 @@
"aF" = (
/obj/item/book/manual/random,
/obj/effect/decal/cleanable/dirt,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"aG" = (
/obj/structure/table/bronze,
@@ -145,7 +145,7 @@
"aM" = (
/obj/item/stack/sheet/mineral/wood,
/obj/item/book/manual/random,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"aN" = (
/obj/structure/statue/sandstone/venus,
@@ -157,7 +157,7 @@
/area/ruin/unpowered/buried_library)
"aP" = (
/obj/item/keycard/library,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"aQ" = (
/obj/effect/decal/cleanable/dirt,
@@ -207,7 +207,7 @@
/area/ruin/unpowered/buried_library)
"ba" = (
/obj/structure/barricade/wooden/snowed,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"bc" = (
/obj/item/feather,
@@ -239,7 +239,7 @@
/area/ruin/unpowered/buried_library)
"bg" = (
/obj/item/paper/fluff/ruins/oldstation/protogun,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"bh" = (
/obj/effect/decal/cleanable/dirt,
@@ -248,11 +248,11 @@
/area/ruin/unpowered/buried_library)
"bi" = (
/obj/structure/fluff/paper,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"bj" = (
/obj/item/book/manual/random,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"bk" = (
/obj/structure/fluff/paper{
@@ -262,25 +262,25 @@
/area/ruin/unpowered/buried_library)
"bl" = (
/obj/item/storage/box/fountainpens,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"bm" = (
/obj/structure/fluff/paper/stack,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"bn" = (
/obj/item/book/manual/random,
/obj/item/stack/sheet/mineral/wood,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"bo" = (
/obj/item/stack/sheet/mineral/wood,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"bp" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/fluff/paper,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"bq" = (
/obj/structure/mineral_door/wood,
@@ -289,7 +289,7 @@
/area/ruin/unpowered/buried_library)
"br" = (
/obj/structure/girder,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/ruin/unpowered/buried_library)
"bt" = (
/obj/effect/decal/cleanable/dirt,
@@ -297,7 +297,7 @@
/area/template_noop)
"bu" = (
/obj/item/stack/sheet/mineral/wood,
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/icemoon/underground/explored)
"bw" = (
/turf/open/floor/wood,
@@ -1,7 +1,7 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/template_noop,
/area/icemoon/underground/explored)
/area/template_noop)
"b" = (
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
@@ -31,6 +31,10 @@
"N" = (
/turf/open/indestructible/necropolis/ice,
/area/icemoon/underground/explored)
"S" = (
/obj/item/tcg_card/special/wendigo,
/turf/open/indestructible/necropolis/ice,
/area/icemoon/underground/explored)
"U" = (
/obj/item/paper/crumpled/bloody{
info = "for your own sake, do not enter"
@@ -451,7 +455,7 @@ a
N
N
N
N
S
N
N
N
@@ -3,7 +3,7 @@
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"b" = (
/turf/closed/mineral/random/snow/no_caves,
/turf/closed/mineral/random/snow,
/area/icemoon/underground/explored)
"e" = (
/obj/structure/spawner/nether,
@@ -158,8 +158,8 @@
/area/ruin/powered/beach)
"aF" = (
/obj/machinery/vending/boozeomat{
set_obj_flags = "EMAGGED";
req_access_txt = "0"
req_access_txt = "0";
set_obj_flags = "EMAGGED"
},
/turf/open/floor/wood,
/area/ruin/powered/beach)
@@ -547,8 +547,8 @@
"rV" = (
/obj/effect/turf_decal/sand,
/obj/item/reagent_containers/food/drinks/beer/light{
pixel_y = -3;
pixel_x = -9
pixel_x = -9;
pixel_y = -3
},
/turf/open/floor/plating,
/area/ruin/powered/beach)
@@ -862,6 +862,7 @@
/obj/structure/disposalpipe/segment{
dir = 10
},
/obj/item/tcg_card/special/honk,
/turf/open/floor/plating,
/area/ruin/powered/clownplanet)
"bF" = (
@@ -111,6 +111,17 @@
/obj/structure/alien/resin/membrane,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"ax" = (
/obj/structure/alien/weeds,
/obj/effect/decal/cleanable/blood/gibs,
/obj/structure/alien/weeds/node,
/mob/living/simple_animal/hostile/alien/drone,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"ay" = (
/obj/structure/stone_tile/slab/cracked,
/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"aA" = (
/obj/structure/alien/weeds,
/obj/item/flamethrower,
@@ -130,6 +141,17 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"aD" = (
/obj/structure/stone_tile/surrounding_tile{
dir = 1
},
/obj/structure/stone_tile/surrounding_tile,
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 4
},
/obj/structure/stone_tile/center,
/turf/open/chasm/lavaland,
/area/ruin/unpowered/xenonest)
"aE" = (
/obj/structure/alien/weeds,
/obj/effect/decal/cleanable/ash,
@@ -160,6 +182,19 @@
/obj/effect/decal/cleanable/blood,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"aK" = (
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 4
},
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 8
},
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 1
},
/obj/structure/stone_tile/center/cracked,
/turf/open/chasm/lavaland,
/area/ruin/unpowered/xenonest)
"aL" = (
/obj/structure/alien/weeds,
/obj/item/tank/internals/plasma,
@@ -170,6 +205,26 @@
/obj/effect/decal/cleanable/blood/xeno,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"aN" = (
/obj/structure/stone_tile/block{
dir = 8
},
/obj/structure/stone_tile{
dir = 1
},
/obj/structure/stone_tile/cracked,
/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"aO" = (
/obj/structure/alien/weeds,
/obj/effect/mob_spawn/alien/corpse/humanoid/sentinel,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"aP" = (
/obj/structure/alien/weeds,
/obj/effect/mob_spawn/alien/corpse/humanoid/hunter,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"aQ" = (
/obj/structure/alien/weeds,
/obj/structure/bed/nest,
@@ -215,13 +270,6 @@
/obj/effect/gibspawner/xeno,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"aY" = (
/obj/structure/alien/weeds,
/obj/effect/decal/cleanable/blood/gibs,
/mob/living/simple_animal/hostile/alien/drone,
/obj/structure/alien/weeds/node,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"aZ" = (
/turf/closed/indestructible/riveted/boss,
/area/ruin/unpowered/xenonest)
@@ -338,10 +386,6 @@
/obj/structure/stone_tile,
/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bm" = (
/obj/structure/stone_tile/slab/cracked,
/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bn" = (
/obj/structure/stone_tile/block{
dir = 4
@@ -365,12 +409,6 @@
/obj/structure/stone_tile/center,
/turf/open/chasm/lavaland,
/area/ruin/unpowered/xenonest)
"bp" = (
/obj/structure/stone_tile/block{
dir = 4
},
/turf/open/chasm/lavaland,
/area/ruin/unpowered/xenonest)
"bq" = (
/turf/open/chasm/lavaland,
/area/ruin/unpowered/xenonest)
@@ -391,33 +429,6 @@
},
/turf/open/chasm/lavaland,
/area/ruin/unpowered/xenonest)
"bt" = (
/obj/structure/stone_tile/surrounding_tile{
dir = 1
},
/obj/structure/stone_tile/surrounding_tile,
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 4
},
/obj/structure/stone_tile/center,
/turf/open/chasm/lavaland,
/area/ruin/unpowered/xenonest)
"bu" = (
/obj/structure/stone_tile/block/cracked{
dir = 1
},
/turf/open/chasm/lavaland,
/area/ruin/unpowered/xenonest)
"bv" = (
/obj/structure/stone_tile/block{
dir = 8
},
/obj/structure/stone_tile{
dir = 1
},
/obj/structure/stone_tile/cracked,
/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bw" = (
/obj/structure/stone_tile/cracked{
dir = 4
@@ -492,19 +503,6 @@
/obj/structure/alien/weeds,
/turf/template_noop,
/area/ruin/unpowered/xenonest)
"bE" = (
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 4
},
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 8
},
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 1
},
/obj/structure/stone_tile/center/cracked,
/turf/open/chasm/lavaland,
/area/ruin/unpowered/xenonest)
"dE" = (
/obj/structure/alien/weeds,
/obj/structure/bed/nest,
@@ -514,6 +512,12 @@
/obj/item/clothing/mask/facehugger/impregnated,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"gA" = (
/obj/structure/alien/weeds,
/obj/structure/bed/nest,
/obj/effect/mob_spawn/alien/corpse/humanoid/sentinel,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"iA" = (
/obj/structure/alien/weeds,
/obj/structure/bed/nest,
@@ -522,18 +526,24 @@
/obj/item/clothing/mask/facehugger/impregnated,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"kp" = (
/obj/structure/alien/weeds,
/obj/item/reagent_containers/syringe/alien,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"lG" = (
/obj/structure/alien/weeds,
/obj/effect/mob_spawn/alien/corpse/humanoid/drone,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"pE" = (
/obj/effect/mob_spawn/alien/corpse/humanoid/queen,
"lM" = (
/obj/structure/stone_tile/block{
dir = 4
},
/turf/open/chasm/lavaland,
/area/ruin/unpowered/xenonest)
"nj" = (
/obj/effect/mob_spawn/alien/corpse/humanoid/praetorian,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"tY" = (
/obj/structure/alien/weeds/node,
/obj/effect/mob_spawn/alien/corpse/humanoid/hunter,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"wA" = (
@@ -546,12 +556,23 @@
/mob/living/simple_animal/hostile/alien/sentinel,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"zj" = (
/obj/structure/stone_tile/block/cracked{
dir = 1
},
/turf/open/chasm/lavaland,
/area/ruin/unpowered/xenonest)
"Dd" = (
/obj/structure/alien/weeds,
/obj/effect/decal/cleanable/blood/gibs,
/obj/item/storage/backpack/duffelbag/sec/surgery,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"Ha" = (
/obj/structure/alien/weeds,
/obj/item/reagent_containers/syringe/alien,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"JM" = (
/obj/structure/alien/weeds/node,
/obj/effect/mob_spawn/alien/corpse/humanoid/drone,
@@ -1075,7 +1096,7 @@ ac
ac
ac
bi
aY
ax
ac
ac
ac
@@ -1123,7 +1144,7 @@ an
an
ac
ac
am
gA
ac
ac
aJ
@@ -1278,10 +1299,10 @@ ac
Dd
ag
ak
ag
aP
af
ac
lG
ag
ac
ac
an
@@ -1357,7 +1378,7 @@ ab
ac
af
ag
ar
tY
lG
ag
ag
@@ -1511,7 +1532,7 @@ ac
ah
af
ah
JM
ar
Vi
ak
ag
@@ -1618,7 +1639,7 @@ ag
wA
ag
ag
pE
nj
ag
at
ag
@@ -1640,7 +1661,7 @@ ab
aZ
aZ
aZ
bm
ay
aZ
aZ
aZ
@@ -1718,7 +1739,7 @@ ah
ar
ah
ak
kp
Ha
at
ag
ag
@@ -1742,8 +1763,8 @@ ac
aZ
bc
bj
bp
bt
lM
aD
bx
aZ
ab
@@ -1794,7 +1815,7 @@ ba
bd
bk
bq
bu
zj
by
aZ
ab
@@ -1823,7 +1844,7 @@ ac
ag
ar
ag
ag
aO
ac
ab
ab
@@ -1845,7 +1866,7 @@ aZ
be
bo
bs
bE
aK
bz
aZ
ab
@@ -1896,7 +1917,7 @@ aZ
bf
bl
br
bv
aN
bA
aZ
ab
@@ -326,8 +326,8 @@
/area/ruin/unpowered/ash_walkers)
"aO" = (
/obj/structure/stone_tile/surrounding/cracked{
icon_state = "cracked_surrounding1";
dir = 1
dir = 1;
icon_state = "cracked_surrounding1"
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/ash_walkers)
@@ -510,9 +510,7 @@
/obj/structure/stone_tile/cracked{
dir = 4
},
/obj/item/construction/rcd/loaded/upgraded{
},
/obj/item/construction/rcd/loaded/upgraded,
/turf/open/indestructible/boss,
/area/ruin/unpowered/ash_walkers)
"bn" = (
@@ -1019,8 +1017,8 @@
/area/ruin/unpowered/ash_walkers)
"cA" = (
/obj/structure/stone_tile/slab/cracked{
icon_state = "cracked_slab1";
dir = 4
dir = 4;
icon_state = "cracked_slab1"
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/ash_walkers)
@@ -155,6 +155,12 @@
/obj/item/stack/tile/brass/fifty,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors/unexplored)
"Y" = (
/obj/item/tcg_card/special/ratvar,
/turf/open/floor/clockwork{
initial_gas_mix = "o2=14;n2=23;TEMP=300"
},
/area/lavaland/surface/outdoors/unexplored)
(1,1,1) = {"
a
@@ -484,7 +490,7 @@ h
h
h
h
h
Y
h
l
l
@@ -709,7 +715,7 @@ b
l
l
b
h
Y
h
t
b
@@ -1,7 +1,7 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/template_noop,
/area/lavaland/surface/outdoors)
/area/template_noop)
"b" = (
/obj/structure/elite_tumor,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
@@ -1,7 +1,7 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
/turf/template_noop,
/area/template_noop)
"b" = (
/turf/closed/mineral/volcanic/lava_land_surface,
/area/lavaland/surface/outdoors)
@@ -13,10 +13,10 @@
/area/ruin/unpowered)
"f" = (
/obj/structure/mirror{
broken = 1;
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
icon_state = "mirror_broke";
pixel_x = -28;
broken = 1
pixel_x = -28
},
/obj/item/clothing/suit/hooded/bloated_human,
/obj/effect/decal/cleanable/blood,
@@ -25,10 +25,10 @@
"g" = (
/obj/effect/decal/cleanable/blood/tracks,
/obj/structure/mirror{
broken = 1;
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
icon_state = "mirror_broke";
pixel_x = -28;
broken = 1
pixel_x = -28
},
/turf/open/floor/plating,
/area/ruin/unpowered)
@@ -45,10 +45,10 @@
/area/ruin/unpowered)
"k" = (
/obj/structure/mirror{
broken = 1;
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
icon_state = "mirror_broke";
pixel_x = 28;
broken = 1
pixel_x = 28
},
/turf/open/floor/plating{
icon_state = "panelscorched"
@@ -56,19 +56,19 @@
/area/ruin/unpowered)
"l" = (
/obj/structure/mirror{
broken = 1;
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
icon_state = "mirror_broke";
pixel_x = 28;
broken = 1
pixel_x = 28
},
/turf/open/floor/plating,
/area/ruin/unpowered)
"m" = (
/obj/structure/mirror{
broken = 1;
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
icon_state = "mirror_broke";
pixel_x = -28;
broken = 1
pixel_x = -28
},
/turf/open/floor/plating,
/area/ruin/unpowered)
@@ -79,10 +79,10 @@
/area/ruin/unpowered)
"o" = (
/obj/structure/mirror{
broken = 1;
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
icon_state = "mirror_broke";
pixel_x = -28;
broken = 1
pixel_x = -28
},
/turf/open/floor/plating{
icon_state = "platingdmg1"
@@ -98,10 +98,10 @@
/area/lavaland/surface/outdoors)
"T" = (
/obj/structure/mirror{
broken = 1;
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
icon_state = "mirror_broke";
pixel_y = 28;
broken = 1
pixel_y = 28
},
/obj/item/kitchen/knife/envy,
/turf/open/floor/plating,
@@ -260,7 +260,7 @@ c
a
"}
(9,1,1) = {"
b
a
c
c
d
@@ -279,8 +279,8 @@ c
a
"}
(10,1,1) = {"
b
b
a
a
c
c
c
@@ -137,8 +137,8 @@
/area/ruin/powered)
"D" = (
/obj/effect/decal/cleanable/blood/footprints{
icon_state = "blood1";
dir = 1
dir = 1;
icon_state = "blood1"
},
/obj/machinery/door/airlock/survival_pod/glass,
/obj/structure/fans/tiny,
@@ -26,6 +26,10 @@
},
/turf/open/indestructible/hierophant/two,
/area/ruin/unpowered/hierophant)
"s" = (
/obj/item/tcg_card/special/hierophant,
/turf/open/indestructible/hierophant,
/area/ruin/unpowered/hierophant)
(1,1,1) = {"
a
@@ -494,7 +498,7 @@ b
b
b
c
b
s
a
a
b
@@ -1,7 +1,7 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/template_noop,
/area/lavaland/surface/outdoors)
/area/template_noop)
"b" = (
/obj/effect/sliding_puzzle/lavaland,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
@@ -1,7 +1,7 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/template_noop,
/area/lavaland/surface/outdoors)
/area/template_noop)
"b" = (
/turf/closed/mineral/volcanic/lava_land_surface,
/area/lavaland/surface/outdoors)
@@ -641,4 +641,4 @@ a
a
a
a
"}
"}
@@ -87,8 +87,8 @@
/obj/effect/decal/cleanable/blood,
/obj/effect/decal/cleanable/blood/drip,
/obj/effect/decal/cleanable/blood/footprints{
icon_state = "blood1";
dir = 1
dir = 1;
icon_state = "blood1"
},
/turf/open/floor/pod/dark,
/area/ruin/powered)
@@ -106,24 +106,24 @@
/area/lavaland/surface/outdoors)
"t" = (
/obj/effect/decal/cleanable/blood/footprints{
icon_state = "blood1";
dir = 1
dir = 1;
icon_state = "blood1"
},
/obj/machinery/door/airlock/survival_pod/glass,
/turf/open/floor/pod/dark,
/area/ruin/powered)
"u" = (
/obj/effect/decal/cleanable/blood/footprints{
icon_state = "blood1";
dir = 8
dir = 8;
icon_state = "blood1"
},
/obj/effect/decal/cleanable/blood/drip,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"v" = (
/obj/effect/decal/cleanable/blood/footprints{
icon_state = "blood1";
dir = 8
dir = 8;
icon_state = "blood1"
},
/obj/effect/decal/cleanable/blood/footprints{
icon_state = "blood1"
@@ -139,8 +139,8 @@
"x" = (
/obj/effect/decal/cleanable/blood/drip,
/obj/effect/decal/cleanable/blood/footprints{
icon_state = "blood1";
dir = 1
dir = 1;
icon_state = "blood1"
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
@@ -149,15 +149,15 @@
pixel_y = 32
},
/obj/effect/decal/cleanable/blood/footprints{
icon_state = "blood1";
dir = 8
dir = 8;
icon_state = "blood1"
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"z" = (
/obj/effect/decal/cleanable/blood/footprints{
icon_state = "blood1";
dir = 8
dir = 8;
icon_state = "blood1"
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
@@ -250,7 +250,7 @@
/obj/machinery/power/apc/syndicate{
dir = 1;
name = "Circuit Lab APC";
pixel_y = 24
pixel_y = 23
},
/turf/open/floor/plasteel/white/side{
dir = 1
@@ -454,7 +454,7 @@
/obj/machinery/power/apc/syndicate{
dir = 8;
name = "Chemistry APC";
pixel_x = -24
pixel_x = -25
},
/obj/structure/cable/yellow{
icon_state = "0-2"
@@ -801,7 +801,7 @@
/obj/machinery/power/apc/syndicate{
dir = 1;
name = "Cargo Bay APC";
pixel_y = 24
pixel_y = 23
},
/obj/structure/closet/emcloset/anchored,
/obj/effect/decal/cleanable/dirt,
@@ -1468,7 +1468,7 @@
/obj/machinery/power/apc/syndicate{
dir = 1;
name = "Virology APC";
pixel_y = 24
pixel_y = 23
},
/obj/structure/cable/yellow{
icon_state = "0-2"
@@ -3503,7 +3503,7 @@
/obj/machinery/power/apc/syndicate{
dir = 8;
name = "Primary Hallway APC";
pixel_x = -24
pixel_x = -25
},
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -4235,7 +4235,7 @@
/obj/machinery/power/apc/syndicate{
dir = 1;
name = "Engineering APC";
pixel_y = 24
pixel_y = 23
},
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -5678,7 +5678,7 @@
/obj/machinery/power/apc/syndicate{
dir = 1;
name = "Arrival Hallway APC";
pixel_y = 24
pixel_y = 23
},
/obj/structure/cable/yellow{
icon_state = "0-4"
@@ -11,6 +11,13 @@
"d" = (
/turf/closed/wall/mineral/abductor,
/area/ruin/unpowered)
"h" = (
/obj/structure/closet/abductor,
/obj/item/tcg_card/special/abductor,
/turf/open/floor/plating/abductor{
initial_gas_mix = "o2=14;n2=23;TEMP=300"
},
/area/ruin/unpowered)
"j" = (
/obj/machinery/abductor/experiment{
team_number = 100
@@ -188,7 +195,7 @@ a
a
c
d
q
h
t
q
d
+41 -41
View File
@@ -16,19 +16,19 @@
icon_state = "0-2"
},
/turf/open/floor/plasteel/airless,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"ae" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
icon_state = "1-2"
},
/turf/template_noop,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"af" = (
/turf/open/floor/plating/airless{
icon_state = "platingdmg2"
},
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"ag" = (
/obj/structure/cable{
icon_state = "0-2"
@@ -36,7 +36,7 @@
/turf/open/floor/plasteel/airless{
icon_state = "damaged5"
},
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"ah" = (
/obj/machinery/power/solar{
id = "derelictsolar";
@@ -46,11 +46,11 @@
icon_state = "0-2"
},
/turf/open/floor/plasteel/airless,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"ai" = (
/obj/structure/lattice/catwalk,
/turf/template_noop,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"aj" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -60,14 +60,14 @@
icon_state = "1-4"
},
/turf/template_noop,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"ak" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
icon_state = "4-8"
},
/turf/template_noop,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"al" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -80,7 +80,7 @@
icon_state = "1-4"
},
/turf/template_noop,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"am" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -90,7 +90,7 @@
icon_state = "2-8"
},
/turf/template_noop,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"an" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -103,7 +103,7 @@
icon_state = "2-8"
},
/turf/template_noop,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"ao" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -113,7 +113,7 @@
icon_state = "2-8"
},
/turf/template_noop,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"ap" = (
/obj/machinery/power/solar{
id = "derelictsolar";
@@ -121,19 +121,19 @@
},
/obj/structure/cable,
/turf/open/floor/plasteel/airless,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"aq" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable,
/turf/template_noop,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"ar" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
icon_state = "0-2"
},
/turf/template_noop,
/area/solar/derelict_starboard)
/area/solars/derelict_starboard)
"as" = (
/turf/closed/wall,
/area/ruin/space/derelict/solar_control)
@@ -296,7 +296,7 @@
equipment = 0;
lighting = 0;
name = "Starboard Solar APC";
pixel_x = -24
pixel_x = -25
},
/obj/structure/cable,
/obj/structure/cable{
@@ -599,7 +599,7 @@
/obj/machinery/power/apc{
dir = 8;
name = "Worn-out APC";
pixel_x = -24
pixel_x = -25
},
/obj/structure/cable{
icon_state = "0-4"
@@ -2268,9 +2268,9 @@
"hF" = (
/obj/structure/table,
/obj/machinery/computer/pod/old{
id = "derelict_gun";
name = "ProComp IIe";
pixel_y = 7;
id = "derelict_gun"
pixel_y = 7
},
/turf/open/floor/plasteel/chapel,
/area/ruin/space/derelict/medical/chapel)
@@ -3854,7 +3854,7 @@
/obj/machinery/power/apc{
dir = 8;
name = "Worn-out APC";
pixel_x = -24
pixel_x = -25
},
/turf/open/floor/plasteel/airless,
/area/ruin/space/derelict/hallway/secondary)
@@ -3882,7 +3882,7 @@
areastring = "/area/ruin/space/derelict/atmospherics";
dir = 1;
name = "Worn-out APC";
pixel_y = 24
pixel_y = 23
},
/obj/structure/cable{
icon_state = "0-4"
@@ -4207,7 +4207,7 @@
equipment = 0;
lighting = 0;
name = "Worn-out APC";
pixel_x = -24
pixel_x = -25
},
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/se_solar)
@@ -4277,14 +4277,14 @@
/obj/structure/cable,
/obj/structure/lattice/catwalk,
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"om" = (
/obj/structure/cable{
icon_state = "0-2"
},
/obj/structure/lattice/catwalk,
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"on" = (
/obj/structure/cable{
icon_state = "0-2"
@@ -4294,14 +4294,14 @@
name = "Derelict Solar Array"
},
/turf/open/floor/plasteel/airless,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"oo" = (
/obj/structure/cable{
icon_state = "1-2"
},
/obj/structure/lattice/catwalk,
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"op" = (
/obj/structure/cable{
icon_state = "0-2"
@@ -4313,12 +4313,12 @@
/turf/open/floor/plating/airless{
icon_state = "platingdmg3"
},
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"oq" = (
/turf/open/floor/plating/airless{
icon_state = "platingdmg2"
},
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"or" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -4328,7 +4328,7 @@
icon_state = "1-4"
},
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"os" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -4341,14 +4341,14 @@
icon_state = "2-4"
},
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"ot" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
icon_state = "4-8"
},
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"ou" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -4361,7 +4361,7 @@
},
/obj/structure/lattice/catwalk,
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"ov" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -4374,7 +4374,7 @@
icon_state = "1-8"
},
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"ow" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -4384,7 +4384,7 @@
icon_state = "1-8"
},
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"ox" = (
/obj/structure/cable,
/obj/machinery/power/solar{
@@ -4392,16 +4392,16 @@
name = "Derelict Solar Array"
},
/turf/open/floor/plasteel/airless,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"oy" = (
/turf/open/floor/plating/airless{
icon_state = "platingdmg1"
},
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"oz" = (
/obj/structure/lattice/catwalk,
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"oA" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -4411,14 +4411,14 @@
icon_state = "2-4"
},
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"oB" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/structure/lattice/catwalk,
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"oC" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -4428,12 +4428,12 @@
icon_state = "2-8"
},
/turf/template_noop,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"oD" = (
/obj/machinery/power/tracker,
/obj/structure/cable,
/turf/open/floor/plasteel/airless,
/area/solar/derelict_aft)
/area/solars/derelict_aft)
"oE" = (
/obj/structure/frame/computer{
dir = 1
@@ -351,7 +351,7 @@
equipment = 0;
lighting = 0;
name = "Worn-out APC";
pixel_x = -24
pixel_x = -25
},
/obj/structure/cable{
icon_state = "0-4"
@@ -567,6 +567,7 @@
"bm" = (
/obj/structure/closet/wardrobe/science_white,
/obj/structure/disposalpipe/segment,
/obj/item/tcg_card/special/space_carp,
/turf/open/floor/plasteel{
icon_state = "dark"
},
+14 -14
View File
@@ -66,8 +66,8 @@
/area/ruin/space/has_grav/powered/advancedlab)
"n" = (
/obj/structure/chair/comfy/beige{
icon_state = "comfychair";
dir = 8
dir = 8;
icon_state = "comfychair"
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
@@ -85,10 +85,10 @@
},
/obj/structure/table/glass,
/obj/item/paper{
info = "As of yet, our experiments have seen a fair bit of success. Unfortunately, our business partners have stopped funding us as they realised they utterly hate each other. To whoever finds this place, they are yours. Use them how you will. I leave you with the next generation of greytiding.";
name = "Note to finder";
pixel_x = -1;
pixel_y = 3;
info = "As of yet, our experiments have seen a fair bit of success. Unfortunately, our business partners have stopped funding us as they realised they utterly hate each other. To whoever finds this place, they are yours. Use them how you will. I leave you with the next generation of greytiding."
pixel_y = 3
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
@@ -112,8 +112,8 @@
/area/ruin/space/has_grav/powered/advancedlab)
"s" = (
/obj/structure/chair/comfy/beige{
icon_state = "comfychair";
dir = 1
dir = 1;
icon_state = "comfychair"
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
@@ -123,8 +123,8 @@
/area/ruin/space/has_grav/powered/advancedlab)
"u" = (
/obj/machinery/light/small{
icon_state = "bulb";
dir = 4
dir = 4;
icon_state = "bulb"
},
/obj/structure/closet,
/obj/item/clothing/suit/hooded/wintercoat/miner,
@@ -132,8 +132,8 @@
/obj/item/clothing/under/pants/classicjeans,
/obj/item/clothing/neck/scarf,
/obj/item/clothing/neck/stripedgreenscarf,
/obj/item/toy/tennis/rainbow,
/obj/item/toy/tennis,
/obj/item/toy/fluff/tennis_poly/tri/squeak/rainbow,
/obj/item/toy/fluff/tennis_poly,
/obj/item/clothing/suit/hooded/wintercoat/miner,
/obj/item/clothing/shoes/sneakers/brown,
/obj/item/clothing/under/pants/classicjeans,
@@ -161,8 +161,8 @@
/area/ruin/space/has_grav/powered/advancedlab)
"y" = (
/obj/machinery/light/small{
icon_state = "bulb";
dir = 1
dir = 1;
icon_state = "bulb"
},
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
@@ -268,8 +268,8 @@
/area/ruin/space/has_grav/powered/advancedlab)
"R" = (
/obj/machinery/light/small{
icon_state = "bulb";
dir = 1
dir = 1;
icon_state = "bulb"
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
+2 -2
View File
@@ -57,8 +57,8 @@
dir = 4
},
/mob/living/simple_animal/hostile/gorilla/familiar{
icon_state = "crawling";
dir = 4
dir = 4;
icon_state = "crawling"
},
/turf/open/floor/plating/beach/sand,
/area/ruin/powered)
File diff suppressed because it is too large Load Diff
+11 -10
View File
@@ -16,8 +16,8 @@
/area/template_noop)
"ae" = (
/obj/structure/fluff/broken_flooring{
icon_state = "plating";
dir = 4
dir = 4;
icon_state = "plating"
},
/turf/template_noop,
/area/template_noop)
@@ -66,8 +66,8 @@
"an" = (
/obj/structure/lattice,
/obj/structure/fluff/broken_flooring{
icon_state = "plating";
dir = 4
dir = 4;
icon_state = "plating"
},
/turf/template_noop,
/area/template_noop)
@@ -78,8 +78,8 @@
"ap" = (
/obj/structure/lattice,
/obj/structure/fluff/broken_flooring{
icon_state = "pile";
dir = 8
dir = 8;
icon_state = "pile"
},
/turf/template_noop,
/area/template_noop)
@@ -98,7 +98,7 @@
/obj/machinery/power/apc{
dir = 8;
name = "Tiny Freighter APC";
pixel_x = -24;
pixel_x = -25;
req_access = null;
start_charge = 0
},
@@ -133,8 +133,8 @@
/area/template_noop)
"aE" = (
/obj/structure/fluff/broken_flooring{
icon_state = "pile";
dir = 4
dir = 4;
icon_state = "pile"
},
/turf/template_noop,
/area/template_noop)
@@ -244,7 +244,7 @@
/obj/machinery/power/apc{
dir = 8;
name = "Tiny Freighter APC";
pixel_x = -24;
pixel_x = -25;
req_access = null;
start_charge = 0
},
@@ -1054,6 +1054,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/crate/secure/weapon,
/obj/item/gun/ballistic/automatic/pistol/APS,
/obj/item/tcg_card/special/spess_pirate,
/turf/open/floor/plasteel/airless/dark,
/area/shuttle/caravan/freighter2)
"js" = (
+1 -1
View File
@@ -3,7 +3,7 @@
/turf/template_noop,
/area/template_noop)
"b" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/ruin/unpowered/no_grav)
"c" = (
/turf/open/floor/plating/asteroid/airless,
@@ -287,14 +287,14 @@
/area/space/nearstation)
"M" = (
/obj/structure/fluff/broken_flooring{
name = "broken plating";
dir = 8;
icon_state = "plating";
dir = 8
name = "broken plating"
},
/turf/template_noop,
/area/space/nearstation)
"N" = (
/obj/item/book/random/triple,
/obj/item/book/random,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/ancient_shuttle)
"O" = (
+8 -8
View File
@@ -16,8 +16,8 @@
"ag" = (
/obj/machinery/porta_turret{
dir = 8;
set_obj_flags = "EMAGGED";
installation = /obj/item/gun/energy/lasercannon
installation = /obj/item/gun/energy/lasercannon;
set_obj_flags = "EMAGGED"
},
/turf/open/floor/engine,
/area/awaymission/BMPship/Aft)
@@ -521,7 +521,7 @@
dir = 1;
environ = 0;
equipment = 3;
pixel_y = 32;
pixel_y = 23;
req_access = null
},
/turf/open/floor/carpet,
@@ -901,7 +901,7 @@
dir = 1;
environ = 0;
equipment = 3;
pixel_y = 32;
pixel_y = 23;
req_access = null
},
/turf/open/floor/plating,
@@ -1222,7 +1222,7 @@
},
/obj/machinery/power/apc/unlocked{
dir = 1;
pixel_y = 28;
pixel_y = 23;
req_access = null
},
/obj/effect/turf_decal/tile/bar,
@@ -2110,8 +2110,8 @@
"gl" = (
/obj/machinery/porta_turret{
dir = 8;
set_obj_flags = "EMAGGED";
installation = /obj/item/gun/energy/lasercannon
installation = /obj/item/gun/energy/lasercannon;
set_obj_flags = "EMAGGED"
},
/turf/open/floor/engine,
/area/awaymission/BMPship/Fore)
@@ -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" = (
+4 -4
View File
@@ -144,7 +144,7 @@
/obj/machinery/power/apc{
dir = 2;
name = "Recycling APC";
pixel_y = -24
pixel_y = -23
},
/turf/open/floor/plating,
/area/ruin/space/has_grav/deepstorage/crusher)
@@ -696,7 +696,7 @@
/obj/machinery/power/apc{
dir = 2;
name = "Kitchen APC";
pixel_y = -24
pixel_y = -23
},
/turf/open/floor/plasteel/cafeteria,
/area/ruin/space/has_grav/deepstorage/kitchen)
@@ -1764,7 +1764,7 @@
/obj/machinery/power/apc{
dir = 2;
name = "Main Area APC";
pixel_y = -24
pixel_y = -23
},
/obj/effect/turf_decal/stripes/corner,
/obj/effect/decal/cleanable/dirt,
@@ -2178,7 +2178,7 @@
/obj/machinery/power/apc{
dir = 1;
name = "Airlock Control APC";
pixel_y = 24
pixel_y = 23
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
+34 -34
View File
@@ -5,8 +5,8 @@
"ab" = (
/obj/structure/lattice,
/obj/structure/fluff/broken_flooring{
icon_state = "singular";
dir = 1
dir = 1;
icon_state = "singular"
},
/turf/template_noop,
/area/space/nearstation)
@@ -27,8 +27,8 @@
/area/space/nearstation)
"af" = (
/obj/structure/fluff/broken_flooring{
icon_state = "pile";
dir = 8
dir = 8;
icon_state = "pile"
},
/turf/template_noop,
/area/template_noop)
@@ -45,8 +45,8 @@
/area/ruin/unpowered)
"aj" = (
/obj/structure/fluff/broken_flooring{
icon_state = "pile";
dir = 4
dir = 4;
icon_state = "pile"
},
/turf/template_noop,
/area/template_noop)
@@ -58,8 +58,8 @@
/area/ruin/unpowered)
"al" = (
/obj/structure/fluff/broken_flooring{
icon_state = "singular";
dir = 4
dir = 4;
icon_state = "singular"
},
/obj/structure/lattice,
/turf/template_noop,
@@ -133,17 +133,17 @@
/area/ruin/unpowered)
"az" = (
/obj/structure/fluff/broken_flooring{
name = "broken plating";
dir = 8;
icon_state = "plating";
dir = 8
name = "broken plating"
},
/obj/structure/lattice,
/turf/template_noop,
/area/ruin/unpowered)
"aA" = (
/obj/structure/fluff/broken_flooring{
icon_state = "pile";
dir = 1
dir = 1;
icon_state = "pile"
},
/turf/template_noop,
/area/template_noop)
@@ -405,8 +405,8 @@
/area/ruin/unpowered)
"bt" = (
/obj/structure/fluff/broken_flooring{
icon_state = "side";
dir = 1
dir = 1;
icon_state = "side"
},
/obj/structure/lattice,
/turf/template_noop,
@@ -424,34 +424,34 @@
"bw" = (
/obj/structure/lattice,
/obj/structure/fluff/broken_flooring{
name = "broken plating";
dir = 1;
icon_state = "plating";
dir = 1
name = "broken plating"
},
/turf/template_noop,
/area/ruin/unpowered)
"bx" = (
/obj/structure/fluff/broken_flooring{
name = "broken plating";
dir = 4;
icon_state = "plating";
dir = 4
name = "broken plating"
},
/obj/structure/lattice,
/turf/template_noop,
/area/ruin/unpowered)
"by" = (
/obj/structure/fluff/broken_flooring{
icon_state = "pile";
dir = 4
dir = 4;
icon_state = "pile"
},
/turf/open/floor/plasteel/airless,
/area/ruin/unpowered)
"bz" = (
/obj/structure/lattice,
/obj/structure/fluff/broken_flooring{
name = "broken plating";
dir = 4;
icon_state = "plating";
dir = 4
name = "broken plating"
},
/turf/template_noop,
/area/ruin/unpowered)
@@ -464,38 +464,38 @@
"bC" = (
/obj/structure/lattice,
/obj/structure/fluff/broken_flooring{
icon_state = "corner";
dir = 1
dir = 1;
icon_state = "corner"
},
/turf/template_noop,
/area/ruin/unpowered)
"bD" = (
/obj/structure/fluff/broken_flooring{
icon_state = "singular";
dir = 4
dir = 4;
icon_state = "singular"
},
/turf/open/floor/plasteel/airless,
/area/ruin/unpowered)
"bE" = (
/obj/structure/lattice,
/obj/structure/fluff/broken_flooring{
icon_state = "corner";
dir = 8
dir = 8;
icon_state = "corner"
},
/turf/template_noop,
/area/ruin/unpowered)
"bF" = (
/obj/structure/lattice,
/obj/structure/fluff/broken_flooring{
icon_state = "side";
dir = 4
dir = 4;
icon_state = "side"
},
/turf/template_noop,
/area/ruin/unpowered)
"bG" = (
/obj/structure/fluff/broken_flooring{
icon_state = "singular";
dir = 4
dir = 4;
icon_state = "singular"
},
/turf/template_noop,
/area/template_noop)
@@ -510,9 +510,9 @@
"bI" = (
/obj/structure/lattice,
/obj/structure/fluff/broken_flooring{
name = "broken plating";
dir = 8;
icon_state = "plating";
dir = 8
name = "broken plating"
},
/turf/template_noop,
/area/ruin/unpowered)
@@ -175,7 +175,7 @@
dir = 1;
name = "Worn-out APC";
pixel_x = 1;
pixel_y = 26
pixel_y = 23
},
/obj/machinery/light{
dir = 1
@@ -91,6 +91,10 @@
},
/turf/open/floor/plating/asteroid/airless,
/area/ruin/space/has_grav)
"Y" = (
/obj/item/tcg_card/special/gondola,
/turf/open/floor/plating/asteroid/airless,
/area/ruin/space/has_grav)
(1,1,1) = {"
a
@@ -339,7 +343,7 @@ b
c
c
c
c
Y
o
c
r
@@ -19,6 +19,7 @@
/area/ruin/space/has_grav/powered/mechtransport)
"g" = (
/obj/structure/closet/crate/secure/loot,
/obj/item/tcg_card/special/phazon,
/turf/open/floor/mineral/titanium/blue,
/area/ruin/space/has_grav/powered/mechtransport)
"h" = (
+1 -1
View File
@@ -47,7 +47,7 @@
dir = 1;
name = "Worn-out APC";
pixel_x = 1;
pixel_y = 26
pixel_y = 23
},
/obj/structure/cable{
icon_state = "0-4"
+10 -10
View File
@@ -149,8 +149,8 @@
/area/ruin/space/has_grav/ancientstation/hivebot)
"aF" = (
/obj/structure/shuttle/engine/large{
icon_state = "large_engine";
dir = 4
dir = 4;
icon_state = "large_engine"
},
/turf/closed/wall,
/area/ruin/space/has_grav/ancientstation/hivebot)
@@ -1377,7 +1377,7 @@
/obj/machinery/power/apc{
dir = 8;
name = "Charlie Security APC";
pixel_x = -24;
pixel_x = -25;
start_charge = 0
},
/obj/effect/turf_decal/tile/red{
@@ -1651,7 +1651,7 @@
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/ancientstation/rnd)
"eD" = (
/obj/machinery/mecha_part_fabricator/offstation,
/obj/machinery/mecha_part_fabricator,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/ancientstation/rnd)
@@ -2010,12 +2010,12 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation/deltacorridor)
"fu" = (
/obj/machinery/rnd/production/protolathe/offstation,
/obj/machinery/rnd/production/protolathe,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/ancientstation/rnd)
"fv" = (
/obj/machinery/rnd/production/circuit_imprinter/offstation,
/obj/machinery/rnd/production/circuit_imprinter,
/obj/effect/decal/cleanable/dirt,
/obj/item/reagent_containers/dropper,
/turf/open/floor/plasteel/white,
@@ -2166,7 +2166,7 @@
/obj/machinery/power/apc{
dir = 1;
name = "Delta Main Corridor APC";
pixel_y = 24;
pixel_y = 23;
start_charge = 0
},
/turf/open/floor/plating,
@@ -2446,7 +2446,7 @@
/obj/machinery/power/apc{
dir = 1;
name = "Charlie Hydroponics APC";
pixel_y = 24;
pixel_y = 23;
start_charge = 0
},
/obj/structure/cable{
@@ -2483,7 +2483,7 @@
/obj/machinery/power/apc{
dir = 2;
name = "Charlie Kitchen APC";
pixel_y = -24;
pixel_y = -23;
start_charge = 0
},
/obj/structure/cable{
@@ -4164,7 +4164,7 @@
/obj/machinery/power/apc{
dir = 1;
name = "Delta Prototype Lab APC";
pixel_y = 24;
pixel_y = 23;
start_charge = 0
},
/obj/structure/cable{
+4 -4
View File
@@ -233,7 +233,7 @@
/obj/machinery/power/apc{
dir = 4;
name = "Crew Quarters APC";
pixel_x = 26
pixel_x = 24
},
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/onehalf/dorms_med)
@@ -324,7 +324,7 @@
/obj/machinery/power/apc{
dir = 1;
name = "Mining Drone Bay APC";
pixel_y = 24
pixel_y = 23
},
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -603,7 +603,7 @@
/obj/machinery/power/apc{
dir = 2;
name = "Hallway APC";
pixel_y = -24
pixel_y = -23
},
/turf/open/floor/plasteel/airless,
/area/ruin/space/has_grav/onehalf/hallway)
@@ -781,7 +781,7 @@
/obj/machinery/power/apc{
dir = 1;
name = "Bridge APC";
pixel_y = 24
pixel_y = 23
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/onehalf/bridge)
@@ -54,15 +54,15 @@
/area/ruin/powered)
"m" = (
/obj/structure/chair/old{
icon_state = "chairold";
dir = 1
dir = 1;
icon_state = "chairold"
},
/turf/open/floor/oldshuttle,
/area/ruin/powered)
"n" = (
/obj/structure/chair/old{
icon_state = "chairold";
dir = 1
dir = 1;
icon_state = "chairold"
},
/obj/item/crowbar/large{
desc = "It's a big crowbar. It doesn't fit in your pockets, because it's big. It feels oddly heavy..";
@@ -73,8 +73,8 @@
/area/ruin/powered)
"o" = (
/obj/structure/chair/old{
icon_state = "chairold";
dir = 1
dir = 1;
icon_state = "chairold"
},
/mob/living/simple_animal/hostile/retaliate/spaceman,
/turf/open/floor/oldshuttle,
File diff suppressed because it is too large Load Diff
+78 -78
View File
@@ -40,8 +40,8 @@
/area/ruin/space/diner/interior)
"ai" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
icon_state = "hrwindow_spawner_end";
dir = 1
dir = 1;
icon_state = "hrwindow_spawner_end"
},
/turf/open/floor/plating,
/area/ruin/space/diner/interior)
@@ -116,8 +116,8 @@
/area/ruin/space/diner)
"aw" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
icon_state = "hrwindow_spawner_end";
dir = 4
dir = 4;
icon_state = "hrwindow_spawner_end"
},
/turf/open/floor/plating/airless,
/area/ruin/space/diner)
@@ -253,8 +253,8 @@
/area/ruin/space/diner/interior)
"aQ" = (
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 10
dir = 10;
icon_state = "pipe11-2"
},
/turf/open/floor/plating,
/area/ruin/space/diner/interior)
@@ -438,8 +438,8 @@
},
/obj/machinery/grill,
/obj/machinery/light/small/broken{
icon_state = "bulb-broken";
dir = 1
dir = 1;
icon_state = "bulb-broken"
},
/obj/machinery/power/apc/highcap/five_k{
name = "Space Diner APC";
@@ -468,8 +468,8 @@
/area/ruin/space/diner/interior)
"bx" = (
/obj/structure/toilet/secret/low_loot{
icon_state = "toilet00";
dir = 4
dir = 4;
icon_state = "toilet00"
},
/obj/effect/decal/cleanable/cobweb,
/obj/effect/decal/cleanable/dirt,
@@ -509,8 +509,8 @@
/area/ruin/space/diner/interior)
"bB" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
icon_state = "hrwindow_spawner_end";
dir = 8
dir = 8;
icon_state = "hrwindow_spawner_end"
},
/obj/structure/cable{
icon_state = "0-4"
@@ -529,8 +529,8 @@
/area/ruin/space/diner/interior)
"bD" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
icon_state = "hrwindow_spawner_end";
dir = 4
dir = 4;
icon_state = "hrwindow_spawner_end"
},
/obj/structure/cable{
icon_state = "0-8"
@@ -568,8 +568,8 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 4
dir = 4;
icon_state = "pipe11-2"
},
/turf/open/floor/plasteel,
/area/ruin/space/diner/interior)
@@ -579,8 +579,8 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 4
dir = 4;
icon_state = "pipe11-2"
},
/turf/open/floor/plasteel,
/area/ruin/space/diner/interior)
@@ -594,8 +594,8 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 4
dir = 4;
icon_state = "pipe11-2"
},
/turf/open/floor/plasteel,
/area/ruin/space/diner/interior)
@@ -616,8 +616,8 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 10
dir = 10;
icon_state = "pipe11-2"
},
/turf/open/floor/plasteel,
/area/ruin/space/diner/interior)
@@ -662,8 +662,8 @@
/area/ruin/space/diner/interior)
"bP" = (
/obj/structure/toilet/secret/low_loot{
icon_state = "toilet00";
dir = 4
dir = 4;
icon_state = "toilet00"
},
/obj/structure/window/reinforced/spawner/north,
/obj/effect/decal/cleanable/dirt,
@@ -673,8 +673,8 @@
"bQ" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 6
dir = 6;
icon_state = "pipe11-2"
},
/turf/open/floor/plasteel,
/area/ruin/space/diner/interior)
@@ -727,8 +727,8 @@
/area/ruin/space/diner/interior)
"bX" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
icon_state = "hrwindow_spawner_end";
dir = 1
dir = 1;
icon_state = "hrwindow_spawner_end"
},
/obj/structure/cable{
icon_state = "0-2"
@@ -756,24 +756,24 @@
"ca" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/manifold/general/hidden{
icon_state = "manifold-2";
dir = 8
dir = 8;
icon_state = "manifold-2"
},
/turf/open/floor/plasteel,
/area/ruin/space/diner/interior)
"cb" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 4
dir = 4;
icon_state = "pipe11-2"
},
/turf/open/floor/plasteel,
/area/ruin/space/diner/interior)
"cc" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 10
dir = 10;
icon_state = "pipe11-2"
},
/turf/open/floor/plasteel,
/area/ruin/space/diner/interior)
@@ -962,8 +962,8 @@
icon_state = "1-4"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 4
dir = 4;
icon_state = "pipe11-2"
},
/obj/item/beacon,
/turf/open/floor/plasteel/dark,
@@ -973,8 +973,8 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 4
dir = 4;
icon_state = "pipe11-2"
},
/turf/open/floor/plasteel/dark,
/area/ruin/space/diner/interior)
@@ -993,8 +993,8 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 4
dir = 4;
icon_state = "pipe11-2"
},
/turf/open/floor/plasteel/dark,
/area/ruin/space/diner/interior)
@@ -1105,8 +1105,8 @@
/area/ruin/space/diner/interior)
"cM" = (
/obj/machinery/light/broken{
icon_state = "tube-broken";
dir = 1
dir = 1;
icon_state = "tube-broken"
},
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
@@ -1146,8 +1146,8 @@
},
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/machinery/computer/arcade{
icon_state = "arcade";
dir = 8
dir = 8;
icon_state = "arcade"
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
@@ -1161,8 +1161,8 @@
/area/ruin/space/diner/interior)
"cS" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
icon_state = "hrwindow_spawner_end";
dir = 1
dir = 1;
icon_state = "hrwindow_spawner_end"
},
/obj/structure/cable,
/obj/structure/cable{
@@ -1242,8 +1242,8 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 5
dir = 5;
icon_state = "pipe11-2"
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
@@ -1257,8 +1257,8 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 4
dir = 4;
icon_state = "pipe11-2"
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
@@ -1287,8 +1287,8 @@
icon_state = "1-4"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 4
dir = 4;
icon_state = "pipe11-2"
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
@@ -1311,8 +1311,8 @@
icon_state = "1-4"
},
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
dir = 9
dir = 9;
icon_state = "pipe11-2"
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
@@ -1351,8 +1351,8 @@
icon_state = "1-2"
},
/obj/machinery/computer/teleporter{
icon_state = "computer";
dir = 1
dir = 1;
icon_state = "computer"
},
/obj/structure/cable,
/turf/open/floor/plasteel/dark,
@@ -1414,8 +1414,8 @@
"ds" = (
/obj/structure/cable,
/obj/machinery/power/solar_control{
icon_state = "computer";
dir = 4
dir = 4;
icon_state = "computer"
},
/turf/open/floor/plating,
/area/ruin/space/diner/interior)
@@ -1427,8 +1427,8 @@
/area/ruin/space/diner/interior)
"dv" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
icon_state = "hrwindow_spawner_end";
dir = 4
dir = 4;
icon_state = "hrwindow_spawner_end"
},
/obj/structure/cable,
/obj/structure/cable{
@@ -1449,8 +1449,8 @@
dir = 1
},
/obj/machinery/light/broken{
icon_state = "tube-broken";
dir = 8
dir = 8;
icon_state = "tube-broken"
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
@@ -1492,8 +1492,8 @@
name = "dust"
},
/obj/item/chair{
icon_state = "chair_toppled";
dir = 1
dir = 1;
icon_state = "chair_toppled"
},
/turf/open/floor/carpet,
/area/ruin/space/diner/interior)
@@ -1508,8 +1508,8 @@
/area/ruin/space/diner/interior)
"dE" = (
/obj/machinery/light/small/broken{
icon_state = "bulb-broken";
dir = 1
dir = 1;
icon_state = "bulb-broken"
},
/turf/open/floor/engine/airless,
/area/ruin/space/diner)
@@ -1663,8 +1663,8 @@
/area/ruin/space/diner/interior)
"dV" = (
/obj/effect/spawner/structure/window/hollow/reinforced/directional{
icon_state = "hrwindow_spawner_directional";
dir = 10
dir = 10;
icon_state = "hrwindow_spawner_directional"
},
/turf/open/floor/plating,
/area/ruin/space/diner/interior)
@@ -1674,22 +1674,22 @@
/area/ruin/space/diner/interior)
"dX" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
icon_state = "hrwindow_spawner_end";
dir = 4
dir = 4;
icon_state = "hrwindow_spawner_end"
},
/turf/open/floor/plating,
/area/ruin/space/diner/interior)
"dY" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
icon_state = "hrwindow_spawner_end";
dir = 8
dir = 8;
icon_state = "hrwindow_spawner_end"
},
/turf/open/floor/plating,
/area/ruin/space/diner/interior)
"dZ" = (
/obj/effect/spawner/structure/window/hollow/reinforced/directional{
icon_state = "hrwindow_spawner_directional";
dir = 6
dir = 6;
icon_state = "hrwindow_spawner_directional"
},
/turf/open/floor/plating,
/area/ruin/space/diner/interior)
@@ -1728,8 +1728,8 @@
/area/ruin/space/diner)
"ef" = (
/obj/machinery/light/small/broken{
icon_state = "bulb-broken";
dir = 1
dir = 1;
icon_state = "bulb-broken"
},
/obj/machinery/vending/snack,
/obj/effect/turf_decal/bot,
@@ -1737,8 +1737,8 @@
/area/ruin/space/diner)
"eg" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
icon_state = "hrwindow_spawner_end";
dir = 1
dir = 1;
icon_state = "hrwindow_spawner_end"
},
/turf/open/floor/plating/airless,
/area/ruin/space/diner)
File diff suppressed because it is too large Load Diff
+47 -47
View File
@@ -125,8 +125,8 @@
/area/ruin/space/has_grav/hotel/guestroom/room_3)
"ay" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/obj/structure/toilet,
/turf/open/floor/plasteel/showroomfloor,
@@ -166,8 +166,8 @@
/area/ruin/space/has_grav/hotel/guestroom/room_4)
"aG" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/obj/structure/toilet,
/turf/open/floor/plasteel/showroomfloor,
@@ -207,8 +207,8 @@
/area/ruin/space/has_grav/hotel/guestroom/room_5)
"aO" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/obj/structure/toilet,
/turf/open/floor/plasteel/showroomfloor,
@@ -248,8 +248,8 @@
/area/ruin/space/has_grav/hotel/guestroom/room_6)
"aW" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/obj/structure/toilet,
/turf/open/floor/plasteel/showroomfloor,
@@ -287,8 +287,8 @@
/area/ruin/unpowered/no_grav)
"be" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/hotel/guestroom/room_3)
@@ -319,8 +319,8 @@
/area/ruin/space/has_grav/hotel/guestroom/room_3)
"bk" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/hotel/guestroom/room_4)
@@ -351,8 +351,8 @@
/area/ruin/space/has_grav/hotel/guestroom/room_4)
"bq" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/hotel/guestroom/room_5)
@@ -383,8 +383,8 @@
/area/ruin/space/has_grav/hotel/guestroom/room_5)
"bw" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/hotel/guestroom/room_6)
@@ -491,7 +491,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 2;
name = "Guest Room APC";
pixel_y = -24
pixel_y = -23
},
/obj/structure/cable{
icon_state = "0-4"
@@ -541,7 +541,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 2;
name = "Guest Room APC";
pixel_y = -24
pixel_y = -23
},
/obj/structure/cable{
icon_state = "0-4"
@@ -591,7 +591,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 2;
name = "Guest Room APC";
pixel_y = -24
pixel_y = -23
},
/obj/structure/cable{
icon_state = "0-4"
@@ -641,7 +641,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 2;
name = "Guest Room APC";
pixel_y = -24
pixel_y = -23
},
/obj/structure/cable{
icon_state = "0-4"
@@ -1067,8 +1067,8 @@
/area/ruin/space/has_grav/hotel/guestroom/room_2)
"dl" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/obj/structure/toilet,
/turf/open/floor/plasteel/showroomfloor,
@@ -1087,7 +1087,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 1;
name = "Guest Room APC";
pixel_y = 25
pixel_y = 23
},
/obj/structure/cable{
icon_state = "0-4"
@@ -1131,8 +1131,8 @@
/area/ruin/space/has_grav/hotel/guestroom/room_1)
"dt" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/obj/structure/toilet,
/turf/open/floor/plasteel/showroomfloor,
@@ -1151,7 +1151,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 1;
name = "Guest Room APC";
pixel_y = 25
pixel_y = 23
},
/obj/structure/cable{
icon_state = "0-4"
@@ -1230,8 +1230,8 @@
/area/ruin/space/has_grav/hotel/guestroom/room_2)
"dI" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/hotel/guestroom/room_2)
@@ -1262,8 +1262,8 @@
/area/ruin/space/has_grav/hotel/guestroom/room_1)
"dP" = (
/obj/structure/window{
icon_state = "window";
dir = 8
dir = 8;
icon_state = "window"
},
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/hotel/guestroom/room_1)
@@ -1453,7 +1453,7 @@
/area/ruin/space/has_grav/hotel/guestroom/room_2)
"eu" = (
/obj/structure/table/wood,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/wood,
/area/ruin/space/has_grav/hotel/guestroom/room_2)
"ev" = (
@@ -1484,7 +1484,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 2;
name = "Laundry APC";
pixel_y = -24
pixel_y = -23
},
/obj/structure/cable,
/turf/open/floor/plasteel/white,
@@ -1677,7 +1677,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 2;
name = "Kitchen APC";
pixel_y = -24
pixel_y = -23
},
/obj/structure/cable,
/turf/open/floor/plating,
@@ -2520,7 +2520,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 2;
name = "Staff Room APC";
pixel_y = -24
pixel_y = -23
},
/obj/structure/cable{
icon_state = "0-4"
@@ -2564,16 +2564,16 @@
/area/ruin/space/has_grav/hotel/workroom)
"hG" = (
/obj/effect/mob_spawn/human/hotel_staff{
icon_state = "sleeper_s";
dir = 1
dir = 1;
icon_state = "sleeper_s"
},
/obj/machinery/light,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/hotel/workroom)
"hH" = (
/obj/effect/mob_spawn/human/hotel_staff{
icon_state = "sleeper_s";
dir = 1
dir = 1;
icon_state = "sleeper_s"
},
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/hotel/workroom)
@@ -2894,7 +2894,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 1;
name = "Power Storage APC";
pixel_y = 25
pixel_y = 23
},
/obj/structure/cable{
icon_state = "0-8"
@@ -3069,7 +3069,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 2;
name = "Security APC";
pixel_y = -24
pixel_y = -23
},
/obj/structure/cable{
icon_state = "4-8"
@@ -3116,7 +3116,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 2;
name = "Pool APC";
pixel_y = -24
pixel_y = -23
},
/obj/structure/cable{
icon_state = "4-8"
@@ -3165,7 +3165,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 2;
name = "Dock APC";
pixel_y = -24
pixel_y = -23
},
/obj/structure/cable,
/turf/open/floor/wood,
@@ -4283,8 +4283,8 @@
/area/ruin/space/has_grav/hotel/security)
"lG" = (
/obj/structure/window{
icon_state = "window";
dir = 1
dir = 1;
icon_state = "window"
},
/obj/machinery/light{
dir = 8
@@ -4307,8 +4307,8 @@
/obj/item/clothing/shoes/sandal,
/obj/item/clothing/shoes/sandal,
/obj/structure/window{
icon_state = "window";
dir = 1
dir = 1;
icon_state = "window"
},
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/hotel/pool)
@@ -4907,7 +4907,7 @@
/obj/machinery/power/apc/highcap/five_k{
dir = 2;
name = "Custodial APC";
pixel_y = -24
pixel_y = -23
},
/obj/structure/cable,
/obj/effect/turf_decal/tile/neutral{
@@ -9,9 +9,9 @@
dwidth = 11;
height = 22;
id = "whiteship_away";
json_key = "whiteship";
name = "Deep Space";
width = 35;
json_key = "whiteship"
width = 35
},
/turf/open/space,
/area/space)
@@ -3,7 +3,7 @@
/turf/template_noop,
/area/template_noop)
"m" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral,
/area/ruin/space)
"q" = (
/turf/open/floor/plating/asteroid/airless,
@@ -3,7 +3,7 @@
/turf/open/floor/plating/asteroid/airless,
/area/ruin/space)
"n" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/ruin/space)
"B" = (
/obj/item/toy/plush/borgplushie,
@@ -38,7 +38,7 @@
/turf/open/floor/holofloor/beach,
/area/ruin/space/has_grav)
"L" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/ruin/space)
"R" = (
/mob/living/simple_animal/crab{
@@ -53,7 +53,7 @@
/turf/open/floor/plating/asteroid/airless,
/area/ruin/space)
"p" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/ruin/space)
"q" = (
/turf/template_noop,
@@ -40,7 +40,7 @@
/turf/open/floor/plating/airless,
/area/ruin/space)
"Z" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/ruin/space)
(1,1,1) = {"
@@ -1,6 +1,6 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"b" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/ruin/space)
"h" = (
/obj/effect/decal/remains/human,
@@ -85,7 +85,7 @@
},
/area/ruin/space/has_grav)
"U" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/ruin/space)
"W" = (
/obj/structure/spider/stickyweb,
@@ -256,7 +256,7 @@
/turf/open/floor/plasteel/airless/cafeteria,
/area/ruin/space)
"Z" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/ruin/space)
(1,1,1) = {"
@@ -43,7 +43,7 @@
/turf/open/floor/grass,
/area/ruin/space)
"S" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/ruin/space)
"V" = (
/obj/item/bong/coconut,
@@ -123,7 +123,7 @@
/turf/open/floor/wood,
/area/ruin/space/has_grav)
"C" = (
/turf/closed/mineral/random/no_caves,
/turf/closed/mineral/random,
/area/ruin/space)
"D" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1{
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -8,14 +8,14 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ab" = (
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ac" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -25,11 +25,11 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ad" = (
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"aT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/button/door{
@@ -40,7 +40,7 @@
req_access_txt = "10"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"cB" = (
/obj/machinery/button/door{
dir = 1;
@@ -49,13 +49,13 @@
req_access_txt = "10"
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"cP" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"dz" = (
/turf/open/space/basic,
/area/space/nearstation)
@@ -64,14 +64,14 @@
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"eA" = (
/obj/structure/table,
/obj/item/clothing/suit/radiation,
/obj/item/clothing/head/radiation,
/obj/item/clothing/glasses/meson,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"eJ" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -80,16 +80,16 @@
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"fh" = (
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"fH" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"gf" = (
/obj/item/storage/toolbox/mechanical,
/obj/item/flashlight,
@@ -102,20 +102,20 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"jH" = (
/obj/structure/sign/warning/radiation/rad_area,
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"kh" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"kK" = (
/turf/closed/wall,
/area/engine/engineering)
/area/engineering/main)
"la" = (
/obj/structure/table,
/obj/item/storage/toolbox/mechanical{
@@ -131,37 +131,37 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"lY" = (
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"me" = (
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"mB" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"nW" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/effect/turf_decal/box/red,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"qH" = (
/obj/structure/sign/warning/vacuum/external{
pixel_x = -32
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"qP" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -169,15 +169,15 @@
/obj/effect/turf_decal/box,
/obj/structure/cable/yellow,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"rj" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"rT" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible,
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"tT" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -190,13 +190,13 @@
req_access_txt = "10"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"uG" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 6
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"xx" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -205,7 +205,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"xJ" = (
/obj/item/tank/internals/emergency_oxygen/engi{
pixel_x = 5
@@ -217,11 +217,11 @@
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"yo" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"yU" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
@@ -232,11 +232,11 @@
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"zW" = (
/obj/structure/chair/stool,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"zZ" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -249,13 +249,13 @@
req_access_txt = "10"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Aw" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Bb" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -275,17 +275,17 @@
icon_state = "2-8"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"BG" = (
/obj/structure/closet/emcloset/anchored,
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Ch" = (
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"Eu" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -295,13 +295,13 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ER" = (
/obj/structure/sign/warning/vacuum/external{
pixel_x = 32
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"ES" = (
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -314,7 +314,7 @@
},
/obj/item/wrench,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"FK" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -323,7 +323,7 @@
icon_state = "4-8"
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"FY" = (
/obj/structure/table,
/obj/item/book/manual/wiki/engineering_singulo_tesla,
@@ -332,7 +332,7 @@
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"HQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/button/door{
@@ -343,7 +343,7 @@
req_access_txt = "10"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"In" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/airlock/external{
@@ -351,7 +351,7 @@
req_access_txt = "10;13"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Js" = (
/obj/structure/closet/crate/engineering{
name = "Antimatter Engine Crate"
@@ -379,13 +379,13 @@
/obj/item/am_containment,
/obj/machinery/power/am_control_unit,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"JZ" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
/turf/closed/wall,
/area/engine/engineering)
/area/engineering/main)
"Lr" = (
/obj/structure/table,
/obj/item/clothing/gloves/color/yellow,
@@ -393,33 +393,33 @@
pixel_y = 5
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"LO" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"LV" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Mi" = (
/obj/structure/reagent_dispensers/watertank,
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"MD" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"MJ" = (
/turf/open/space/basic,
/area/space)
@@ -428,51 +428,51 @@
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Nz" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"NS" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Og" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Ox" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/effect/turf_decal/box/red,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Pg" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Qk" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/on{
dir = 1
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Ra" = (
/obj/machinery/light/small{
dir = 8
},
/obj/structure/closet/emcloset/anchored,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Rp" = (
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Si" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -481,14 +481,14 @@
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Tr" = (
/obj/structure/sign/warning/radiation/rad_area,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 6
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"Um" = (
/turf/template_noop,
/area/template_noop)
@@ -498,7 +498,7 @@
},
/obj/effect/turf_decal/box/red,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Ww" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/airlock/external{
@@ -509,43 +509,43 @@
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"WI" = (
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"WQ" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/obj/effect/turf_decal/box/red,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"WX" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Yd" = (
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/box/red,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Zb" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/obj/effect/turf_decal/box/red,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Zx" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/obj/effect/turf_decal/box/red,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Zz" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -557,22 +557,22 @@
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"ZF" = (
/obj/effect/turf_decal/box/red,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"ZK" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"ZY" = (
/obj/effect/turf_decal/stripes/line,
/obj/machinery/light,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
(1,1,1) = {"
Um
@@ -11,7 +11,7 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ab" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -24,7 +24,7 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ac" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -34,7 +34,7 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ad" = (
/obj/structure/cable{
icon_state = "2-8"
@@ -44,7 +44,7 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ae" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -54,14 +54,14 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"af" = (
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"aT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/button/door{
@@ -73,7 +73,7 @@
},
/obj/structure/closet/radiation,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"cB" = (
/obj/machinery/button/door{
dir = 1;
@@ -82,13 +82,13 @@
req_access_txt = "10"
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"cP" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"dz" = (
/turf/open/space/basic,
/area/space/nearstation)
@@ -97,25 +97,25 @@
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ea" = (
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"eA" = (
/obj/structure/table,
/obj/item/clothing/suit/radiation,
/obj/item/clothing/head/radiation,
/obj/item/clothing/glasses/meson,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"eI" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"eJ" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -124,7 +124,7 @@
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"eL" = (
/obj/structure/cable/yellow{
icon_state = "2-4"
@@ -133,7 +133,7 @@
/area/space/nearstation)
"fh" = (
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"fr" = (
/obj/machinery/camera/emp_proof{
c_tag = "Singularity Engine Southwest";
@@ -141,13 +141,13 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"fH" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"gf" = (
/obj/item/storage/toolbox/mechanical,
/obj/item/flashlight,
@@ -160,7 +160,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ht" = (
/obj/structure/reflector/single/anchored{
dir = 5
@@ -188,23 +188,23 @@
"jH" = (
/obj/structure/sign/warning/radiation/rad_area,
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"kh" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"kC" = (
/obj/structure/sign/warning/radiation/rad_area,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 6
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"kK" = (
/turf/closed/wall,
/area/engine/engineering)
/area/engineering/main)
"la" = (
/obj/structure/table,
/obj/item/storage/toolbox/mechanical{
@@ -220,15 +220,15 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"lJ" = (
/obj/structure/sign/warning/electricshock,
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"lY" = (
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"me" = (
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
/obj/structure/closet/radiation,
@@ -236,17 +236,17 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"mB" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"mZ" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible,
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"nR" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -255,19 +255,19 @@
dir = 8
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"nW" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"qH" = (
/obj/structure/sign/warning/vacuum/external{
pixel_x = -32
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"qP" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -276,11 +276,11 @@
icon_state = "1-2"
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"rj" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"rm" = (
/turf/open/floor/plating/airless,
/area/space/nearstation)
@@ -300,7 +300,7 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"tl" = (
/obj/structure/cable/yellow{
icon_state = "1-4"
@@ -313,23 +313,23 @@
icon_state = "4-8"
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"tv" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/cable,
/obj/machinery/power/emitter,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"tC" = (
/obj/structure/grille,
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"tE" = (
/obj/structure/cable{
icon_state = "4-8"
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"tT" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -345,13 +345,13 @@
req_access_txt = "10"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"uG" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 6
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"xx" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -360,7 +360,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"xJ" = (
/obj/item/tank/internals/emergency_oxygen/engi{
pixel_x = 5
@@ -372,7 +372,7 @@
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"xQ" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -387,7 +387,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/closet/radiation,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"yq" = (
/obj/structure/cable/yellow{
icon_state = "0-8"
@@ -408,11 +408,11 @@
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"zW" = (
/obj/structure/chair/stool,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"zZ" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -428,17 +428,17 @@
req_access_txt = "10"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Aw" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"AF" = (
/obj/structure/closet/radiation,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Bb" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -459,7 +459,7 @@
icon_state = "2-8"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Bj" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -476,7 +476,7 @@
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Ce" = (
/obj/structure/cable/yellow{
icon_state = "1-8"
@@ -485,7 +485,7 @@
/area/space/nearstation)
"Ch" = (
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"CN" = (
/obj/machinery/camera/emp_proof{
c_tag = "Singularity Engine East";
@@ -493,7 +493,7 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"DK" = (
/obj/machinery/camera/emp_proof{
c_tag = "Singularity Engine West";
@@ -501,7 +501,7 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"Eu" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -511,13 +511,13 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ER" = (
/obj/structure/sign/warning/vacuum/external{
pixel_x = 32
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"ES" = (
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -533,7 +533,7 @@
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"FK" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -542,13 +542,13 @@
icon_state = "4-8"
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"FM" = (
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"FP" = (
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
@@ -561,11 +561,11 @@
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Hc" = (
/obj/machinery/light,
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"HQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/button/door{
@@ -577,7 +577,7 @@
},
/obj/structure/closet/radiation,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"In" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/airlock/external{
@@ -588,7 +588,7 @@
icon_state = "1-4"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Js" = (
/obj/structure/particle_accelerator/end_cap,
/obj/structure/particle_accelerator/fuel_chamber,
@@ -607,7 +607,7 @@
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Kg" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -621,21 +621,21 @@
pixel_y = 5
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Ls" = (
/obj/machinery/door/airlock/external{
name = "Engineering External Access";
req_access_txt = "10;13"
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"LB" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"LJ" = (
/obj/machinery/camera/emp_proof{
c_tag = "Singularity Engine Southeast";
@@ -643,26 +643,26 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"LO" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"LV" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Mi" = (
/obj/structure/reagent_dispensers/watertank,
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Mn" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -671,43 +671,43 @@
dir = 4
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"MD" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"MJ" = (
/turf/open/space/basic,
/area/space)
"Nm" = (
/obj/structure/sign/warning/securearea,
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"No" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Nz" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"NS" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Og" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Ox" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -717,14 +717,14 @@
icon_state = "0-4"
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Pg" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Pt" = (
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"Qk" = (
/obj/machinery/camera/emp_proof{
c_tag = "Singularity Engine Northeast";
@@ -732,24 +732,24 @@
},
/obj/machinery/atmospherics/pipe/simple/orange/visible,
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"Ra" = (
/obj/machinery/light/small{
dir = 8
},
/obj/structure/closet/emcloset/anchored,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Rp" = (
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Rr" = (
/obj/machinery/atmospherics/components/unary/outlet_injector{
dir = 1
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"Si" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -758,7 +758,7 @@
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"SD" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -767,7 +767,7 @@
icon_state = "1-2"
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Um" = (
/turf/template_noop,
/area/template_noop)
@@ -777,7 +777,7 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"UV" = (
/obj/structure/cable/yellow{
icon_state = "1-4"
@@ -792,7 +792,7 @@
dir = 9
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Ww" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/airlock/external{
@@ -803,20 +803,20 @@
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"WQ" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"WX" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
/obj/structure/closet/radiation,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Xk" = (
/obj/machinery/field/generator,
/turf/open/floor/plating/airless,
@@ -827,7 +827,7 @@
icon_state = "1-2"
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Yl" = (
/obj/structure/lattice,
/turf/open/space/basic,
@@ -837,19 +837,19 @@
dir = 4
},
/turf/closed/wall,
/area/engine/engineering)
/area/engineering/main)
"Zb" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Zx" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Zz" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -861,7 +861,7 @@
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"ZF" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -870,19 +870,19 @@
icon_state = "2-8"
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"ZK" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"ZY" = (
/obj/effect/turf_decal/stripes/line,
/obj/machinery/light,
/obj/structure/closet/radiation,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
(1,1,1) = {"
Um
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -5,7 +5,7 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"ab" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -18,7 +18,7 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ac" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -31,7 +31,7 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ad" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -41,7 +41,7 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ae" = (
/obj/structure/cable{
icon_state = "2-8"
@@ -51,7 +51,7 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"af" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -61,7 +61,7 @@
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"aT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/button/door{
@@ -74,7 +74,7 @@
/obj/structure/rack,
/obj/item/clothing/gloves/color/yellow,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"cB" = (
/obj/machinery/button/door{
dir = 1;
@@ -83,13 +83,13 @@
req_access_txt = "10"
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"cP" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"dz" = (
/turf/open/space/basic,
/area/space/nearstation)
@@ -98,7 +98,7 @@
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"dW" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -137,14 +137,14 @@
/obj/item/clothing/head/radiation,
/obj/item/clothing/glasses/meson,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"eI" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"eJ" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -153,7 +153,7 @@
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"eL" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -169,7 +169,7 @@
/area/space/nearstation)
"fh" = (
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"fr" = (
/obj/machinery/camera/emp_proof{
c_tag = "Tesla Engine Southwest";
@@ -177,13 +177,13 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"fH" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"gf" = (
/obj/item/storage/toolbox/mechanical,
/obj/item/flashlight,
@@ -196,7 +196,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ht" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -226,7 +226,7 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"jx" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -237,13 +237,13 @@
"jH" = (
/obj/structure/sign/warning/radiation/rad_area,
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"kh" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ku" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -259,7 +259,7 @@
/area/space/nearstation)
"kK" = (
/turf/closed/wall,
/area/engine/engineering)
/area/engineering/main)
"la" = (
/obj/structure/table,
/obj/item/storage/toolbox/mechanical{
@@ -275,15 +275,15 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"lJ" = (
/obj/structure/sign/warning/electricshock,
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"lY" = (
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"me" = (
/obj/structure/rack,
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
@@ -292,19 +292,19 @@
},
/obj/item/clothing/gloves/color/yellow,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"mB" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"nL" = (
/obj/machinery/atmospherics/components/unary/outlet_injector{
dir = 1
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"nR" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -313,19 +313,19 @@
dir = 8
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"nW" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"qH" = (
/obj/structure/sign/warning/vacuum/external{
pixel_x = -32
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"qP" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -334,11 +334,11 @@
icon_state = "1-2"
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"rj" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"rm" = (
/turf/open/floor/plating/airless,
/area/space/nearstation)
@@ -349,7 +349,7 @@
"rT" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible,
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"tc" = (
/obj/machinery/light,
/obj/machinery/camera/emp_proof{
@@ -358,7 +358,7 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"tl" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -372,23 +372,23 @@
icon_state = "4-8"
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"tv" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/cable,
/obj/machinery/power/emitter,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"tC" = (
/obj/structure/grille,
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"tE" = (
/obj/structure/cable{
icon_state = "4-8"
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"tT" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -404,13 +404,13 @@
req_access_txt = "10"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"uG" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 6
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"xx" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -419,7 +419,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"xJ" = (
/obj/item/tank/internals/emergency_oxygen/engi{
pixel_x = 5
@@ -431,7 +431,7 @@
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"xQ" = (
/obj/machinery/power/tesla_coil,
/obj/structure/cable{
@@ -447,13 +447,13 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"yo" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/rack,
/obj/item/clothing/gloves/color/yellow,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"yq" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -471,11 +471,11 @@
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"zW" = (
/obj/structure/chair/stool,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"zZ" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -491,18 +491,18 @@
req_access_txt = "10"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Aw" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"AF" = (
/obj/structure/rack,
/obj/item/clothing/gloves/color/yellow,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Bb" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -523,7 +523,7 @@
icon_state = "2-8"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Bj" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -540,7 +540,7 @@
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Ce" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -550,7 +550,7 @@
/area/space/nearstation)
"Ch" = (
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"DF" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -570,13 +570,13 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"ER" = (
/obj/structure/sign/warning/vacuum/external{
pixel_x = 32
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"ES" = (
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -592,7 +592,7 @@
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"FK" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -601,13 +601,13 @@
icon_state = "4-8"
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"FM" = (
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"FP" = (
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
@@ -620,11 +620,11 @@
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Hc" = (
/obj/machinery/light,
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"HQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/button/door{
@@ -637,7 +637,7 @@
/obj/structure/rack,
/obj/item/clothing/gloves/color/yellow,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"In" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/airlock/external{
@@ -648,7 +648,7 @@
icon_state = "1-4"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Js" = (
/obj/structure/particle_accelerator/end_cap,
/obj/structure/particle_accelerator/fuel_chamber,
@@ -667,13 +667,13 @@
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"JZ" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
/turf/closed/wall,
/area/engine/engineering)
/area/engineering/main)
"Kg" = (
/obj/structure/reflector/single/anchored{
dir = 5
@@ -687,21 +687,21 @@
pixel_y = 5
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Ls" = (
/obj/machinery/door/airlock/external{
name = "Engineering External Access";
req_access_txt = "10;13"
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"LB" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"LJ" = (
/obj/machinery/camera/emp_proof{
c_tag = "Tesla Engine Southeast";
@@ -709,26 +709,26 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"LO" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"LV" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Mi" = (
/obj/structure/reagent_dispensers/watertank,
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Mn" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -737,39 +737,39 @@
dir = 4
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"MD" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"MJ" = (
/turf/open/space/basic,
/area/space)
"Nm" = (
/obj/structure/sign/warning/securearea,
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"No" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Nz" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"NS" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Oe" = (
/obj/structure/reflector/single/anchored{
dir = 9
@@ -779,7 +779,7 @@
"Og" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Ox" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -789,11 +789,11 @@
icon_state = "0-4"
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Pg" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Pj" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -813,7 +813,7 @@
/area/space/nearstation)
"Pt" = (
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"Qk" = (
/obj/machinery/camera/emp_proof{
c_tag = "Tesla Engine Northeast";
@@ -821,18 +821,18 @@
},
/obj/machinery/atmospherics/pipe/simple/orange/visible,
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"Ra" = (
/obj/machinery/light/small{
dir = 8
},
/obj/structure/closet/emcloset/anchored,
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"Rp" = (
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"RE" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -861,7 +861,7 @@
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"SD" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -870,14 +870,14 @@
icon_state = "1-2"
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Tr" = (
/obj/structure/sign/warning/radiation/rad_area,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 6
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
/area/engineering/main)
"TE" = (
/obj/machinery/power/tesla_coil,
/obj/structure/cable{
@@ -901,7 +901,7 @@
network = list("ss13","engine")
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
/area/engineering/main)
"UV" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -923,7 +923,7 @@
dir = 9
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Ww" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/airlock/external{
@@ -934,11 +934,11 @@
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"WI" = (
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"WP" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -957,7 +957,7 @@
dir = 6
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"WX" = (
/obj/structure/rack,
/obj/item/clothing/gloves/color/yellow,
@@ -965,7 +965,7 @@
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
"Xk" = (
/obj/machinery/power/grounding_rod,
/turf/open/floor/plating/airless,
@@ -976,7 +976,7 @@
icon_state = "1-2"
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Yl" = (
/obj/structure/lattice,
/turf/open/space/basic,
@@ -986,13 +986,13 @@
dir = 10
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Zx" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"Zz" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -1004,7 +1004,7 @@
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"ZF" = (
/obj/structure/cable/yellow{
icon_state = "2-8"
@@ -1013,13 +1013,13 @@
icon_state = "1-2"
},
/turf/open/floor/engine,
/area/engine/engineering)
/area/engineering/main)
"ZK" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/engineering)
/area/engineering/main)
"ZS" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -1031,7 +1031,7 @@
/obj/effect/turf_decal/stripes/line,
/obj/machinery/light,
/turf/open/floor/plasteel,
/area/engine/engineering)
/area/engineering/main)
(1,1,1) = {"
Um

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