diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 4adde9c3a63..230695b02de 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -201,6 +201,6 @@ Github actions that require additional configuration are disabled on the reposit ## Using the Maintainer Role Ping in Discord -This role `@Maintainer` is pingable as a compromise reached with the server host MrStonedOne over the auto-stale system we presently have in the codebase. It should be used only to ping Maintainers when your PR has had the "Stale" label applied. Using it before then can be met with escalating timeouts and referral to /tg/station's Discord moderators for further infractions. +When your PR is labeled as "Stale", you are permitted to ping the `@Maintainer` role on the /tg/station Discord. Using this ping for anything else can be met with escalating timeouts and referral to /tg/station's Discord moderators for further infractions. Feel free to engage and obtain general feedback in the Coding General channel without the role ping before your PR goes stale to build interest and get reviews. diff --git a/.github/guides/RUNNING_A_SERVER.md b/.github/guides/RUNNING_A_SERVER.md index 5257e044733..d8b6f33e039 100644 --- a/.github/guides/RUNNING_A_SERVER.md +++ b/.github/guides/RUNNING_A_SERVER.md @@ -70,7 +70,7 @@ If you decide to go this route, here are /tg/ specific details on hosting with T - We have two directories which should be setup in the instance's `Configuration/GameStaticFiles` directory: - `config` should be where you place your production configuration. Overwrites the default contents of the repo's [config](../../config) directory. - `data` should be initially created as an empty directory. The game stores persistent data here. -- You should incorporate our [custom build scripts for TGS4](../../tools/tgs4_scripts) in the instance's `Configuration/EventScripts` directory. These handle including TGUI in the build and setting up rust-g on Linux. +- You should incorporate our [custom build scripts for TGS](../../tools/tgs_scripts) in the instance's `Configuration/EventScripts` directory. These handle including TGUI in the build and setting up rust-g on Linux. - Deployment security level must be set to `Trusted` or it will likely fail due to our native library usage. - We highly recommend using the BYOND version specified in [dependencies.sh](../../dependencies.sh) to avoid potential unrecorded issues. @@ -115,7 +115,7 @@ It is highly recommended to reference AWS support documentation while reading th **Required Software** 1. Microsoft Windows 1. MariaDB -1. TGS4 +1. tgstation-server (TGS) 1. Notepad++ or other code editor for writing batch scripts 1. AWS Command Line V2 @@ -130,7 +130,7 @@ It is highly recommended to reference AWS support documentation while reading th 1. In Route 53 you will register a domain name. The you will create a hosted zone and tell your domain to use the IP address you used for your EC2 instance. 1. Install the required software * AWSCL2 you will need to run the configuration using the IAM User you created above. - * TGS4: Make sure the TGS4 scripts from /tools/ are installed per tgs 4 instructions after you have set up your repository and done your first fetch. You will need to Also install a batch file similar to what i have provided into the event scripts folder. You can manually run the batch file to test connection to your S3 bucket. + * TGS: Make sure the scripts from /tools/tgs_scripts are installed per instructions after you have set up your repository and done your first fetch. You will need to Also install a batch file similar to what i have provided into the event scripts folder. You can manually run the batch file to test connection to your S3 bucket. * Copy `compile_options.dm` into code overrides preserving the directory structure and altering the code as mentioned in the above CDN instructions. * Filename: DeploymentComplete.bat ```Batch @@ -139,10 +139,10 @@ cd "C:\Program Files\Amazon\AWSCLIV2" aws s3 cp "C:\Instance_Path\Game\Live\tgstation.rsc" s3://BucketName/tgstation.rsc --acl public-read ``` -7. In your TGS4's instance's static config files edit resources.txt to point to the resource file uploaded by the batch file. it should resemble `http://BucketName.s3.AWSRegion.amazonaws.com/tgstation.rsc` You can get this url from the S3 object management page after its been uploaded for the first time. *Make sure you do not use use HTTPS. Byond can not do encryption* -7. Tell TGS4 to fetch and deploy. If everything goes according to plan, your server will be compiled and the resource uploaded automatically to amazon S3. You can verify that by checking on the file your bucket via aws web management. +7. In your TGS's instance's static config files edit resources.txt to point to the resource file uploaded by the batch file. it should resemble `http://BucketName.s3.AWSRegion.amazonaws.com/tgstation.rsc` You can get this url from the S3 object management page after its been uploaded for the first time. *Make sure you do not use use HTTPS. Byond can not do encryption* +7. Tell TGS to fetch and deploy. If everything goes according to plan, your server will be compiled and the resource uploaded automatically to amazon S3. You can verify that by checking on the file your bucket via aws web management. 7. Test your client side connection. - * Tell TGS4 to run the compiled server + * Tell TGS to run the compiled server * Attempt to log in. AWS has a stupid fast transfer speed. you should download client side data faster than you can recognize it happened. ## IRC BOT SETUP diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index a06ddb2e43a..204677e9e9f 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -1,4 +1,5 @@ name: CI Suite + on: push: branches: @@ -30,177 +31,32 @@ jobs: run_linters: name: Run Linters needs: start_gate - runs-on: ubuntu-22.04 - timeout-minutes: 5 - - steps: - - uses: actions/checkout@v4 - - name: Restore SpacemanDMM cache - uses: actions/cache@v4 - with: - path: ~/SpacemanDMM - key: ${{ runner.os }}-spacemandmm-${{ hashFiles('dependencies.sh') }} - restore-keys: | - ${{ runner.os }}-spacemandmm- - - name: Setup Node - uses: ./.github/actions/setup_node - with: - restore-yarn-cache: true - - name: Restore Bootstrap cache - uses: actions/cache@v4 - with: - path: tools/bootstrap/.cache - key: ${{ runner.os }}-bootstrap-${{ hashFiles('tools/requirements.txt') }} - restore-keys: | - ${{ runner.os }}-bootstrap- - - name: Restore Rust cache - uses: actions/cache@v4 - with: - path: ~/.cargo - key: ${{ runner.os }}-rust-${{ hashFiles('tools/ci/ci_dependencies.sh')}} - restore-keys: | - ${{ runner.os }}-rust- - - name: Restore Cutter cache - uses: actions/cache@v4 - with: - path: tools/icon_cutter/cache - key: ${{ runner.os }}-cutter-${{ hashFiles('dependencies.sh') }} - - name: Setup .NET SDK - uses: actions/setup-dotnet@v4.2.0 - with: - dotnet-version: 9.x - - name: Install OpenDream - uses: robinraju/release-downloader@v1.12 - with: - repository: "OpenDreamProject/OpenDream" - tag: "latest" - fileName: "DMCompiler_linux-x64.tar.gz" - extract: true - - name: Install Tools - run: | - pip3 install setuptools - bash tools/ci/install_spaceman_dmm.sh dreamchecker - bash tools/ci/install_ripgrep.sh - tools/bootstrap/python -c '' - - name: Give Linters A Go - id: linter-setup - run: ':' - - name: Run Grep Checks - if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: | - bash tools/ci/check_grep.sh - bash skyrat/tools/skyrat_check_grep.sh # SKYRAT EDIT ADDITION - checking modular_skyrat code - bash modular_zubbers/tools/ci/zubbers_check_grep.sh # BUBBER EDIT ADDITION - checking modular_zubbers code - - name: Ticked File Enforcement - if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: | - tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/tgstation_dme.json - tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/unit_tests.json - - name: Check Define Sanity - if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: tools/bootstrap/python -m define_sanity.check - - name: Check Trait Validity - if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: tools/bootstrap/python -m trait_validity.check - - name: Run DreamChecker - if: steps.linter-setup.conclusion == 'success' && !cancelled() - shell: bash - run: ~/dreamchecker 2>&1 | bash tools/ci/annotate_dm.sh - #- name: Run OpenDream - SKYRAT REMOVAL - DreamChecker is fine for us so far - SKYRAT TODO - # if: steps.linter-setup.conclusion == 'success' && !cancelled() - # run: ./DMCompiler_linux-x64/DMCompiler tgstation.dme --suppress-unimplemented --define=CIBUILDING | bash tools/ci/annotate_od.sh - - name: Run Map Checks - if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: | - tools/bootstrap/python -m mapmerge2.dmm_test - tools/bootstrap/python -m tools.maplint.source - - name: Check Cutter - if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: tools/bootstrap/python -m tools.icon_cutter.check - - name: Run DMI Tests - if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: tools/bootstrap/python -m dmi.test - - name: Check File Directories - if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: bash tools/ci/check_filedirs.sh tgstation.dme - - name: Check Changelogs - if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: bash tools/ci/check_changelogs.sh - - name: Check Miscellaneous Files - if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: bash tools/ci/check_misc.sh - - name: Run TGUI Checks - if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: tools/build/build --ci lint tgui-test - - compile_all_maps: - name: Compile Maps - needs: collect_data - runs-on: ubuntu-22.04 - timeout-minutes: 5 - - steps: - - uses: actions/checkout@v4 - - name: Setup Node - uses: ./.github/actions/setup_node - - name: Restore BYOND from Cache - uses: ./.github/actions/restore_or_install_byond - - name: Compile All Maps - run: | - source $HOME/BYOND/byond/bin/byondsetup - tools/build/build --ci dm -DCIBUILDING -DCITESTING -DALL_MAPS - - name: Check client Compatibility - uses: tgstation/byond-client-compatibility-check@v3 - with: - dmb-location: tgstation.dmb - max-required-client-version: ${{needs.collect_data.outputs.max_required_byond_client}} + uses: ./.github/workflows/run_linters.yml collect_data: name: Collect data and setup caches for other tasks needs: start_gate - runs-on: ubuntu-22.04 - timeout-minutes: 5 - outputs: - maps: ${{ steps.map_finder.outputs.maps }} - alternate_tests: ${{ steps.alternate_test_finder.outputs.alternate_tests }} - max_required_byond_client: ${{ steps.max_required_byond_client.outputs.max_required_byond_client }} + uses: ./.github/workflows/collect_data.yml - steps: - - uses: actions/checkout@v4 - - name: Find Maps - id: map_finder - run: | - echo "$(ls -mw0 _maps/*.json)" > maps_output.txt - sed -i -e s+_maps/+\"+g -e s+.json+\"+g maps_output.txt - echo "Maps: $(cat maps_output.txt)" - echo "maps={\"paths\":[$(cat maps_output.txt)]}" >> $GITHUB_OUTPUT - - name: Find Alternate Tests - id: alternate_test_finder - run: | - ALTERNATE_TESTS_JSON=$(jq -nRc '[inputs | capture("^(?[0-9]+)\\.(?[0-9]+): (?[^;]+);?(?[0-9]+)?$")]' .github/alternate_byond_versions.txt) - echo "alternate_tests=$ALTERNATE_TESTS_JSON" >> $GITHUB_OUTPUT - - name: Collect byond client version configuration - id: max_required_byond_client - #the regex here does not filter out non-numbers because error messages about no input are less helpful then error messages about bad input (which includes the bad input) - run: | - echo "max_required_byond_client=$(grep -Ev '^[[:blank:]]{0,}#{1,}|^[[:blank:]]{0,}$' .github/max_required_byond_client.txt | tail -n1)" >> $GITHUB_OUTPUT - - name: Set up BYOND cache - uses: ./.github/actions/restore_or_install_byond + compile_all_maps: + name: Compile Maps + needs: collect_data + uses: ./.github/workflows/compile_all_maps.yml + with: + max_required_byond_client: ${{ needs.collect_data.outputs.max_required_byond_client }} run_all_tests: name: Integration Tests needs: collect_data - uses: ./.github/workflows/perform_regular_version_tests.yml with: maps: ${{ needs.collect_data.outputs.maps }} - max_required_byond_client: ${{needs.collect_data.outputs.max_required_byond_client}} + max_required_byond_client: ${{ needs.collect_data.outputs.max_required_byond_client }} run_alternate_tests: if: needs.collect_data.outputs.alternate_tests != '[]' name: Alternate Tests needs: collect_data - uses: ./.github/workflows/perform_alternate_version_tests.yml with: alternate_tests: ${{ needs.collect_data.outputs.alternate_tests }} @@ -210,61 +66,14 @@ jobs: if: needs.collect_data.outputs.alternate_tests == '[]' || needs.run_alternate_tests.result == 'success' needs: [ collect_data, run_alternate_tests ] name: Compare Screenshot Tests - timeout-minutes: 15 - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - name: Setup directory - run: mkdir -p artifacts - # If we ever add more artifacts, this is going to break, but it'll be obvious. - - name: Download screenshot tests - uses: actions/download-artifact@v4 - with: - path: artifacts - - name: ls -R - run: ls -R artifacts - - name: Setup screenshot comparison - run: npm i - working-directory: tools/screenshot-test-comparison - - name: Run screenshot comparison - run: node tools/screenshot-test-comparison/index.js artifacts code/modules/unit_tests/screenshots artifacts/screenshot_comparisons - # workflow_run does not give you the PR it ran on, - # even through the thing literally named "matching pull requests". - # However, in GraphQL, you can check if the check suite was ran - # by a specific PR, so trusting the (user controlled) action here is okay, - # as long as we check it later in show_screenshot_test_results - - name: Save PR ID - if: failure() && github.event.pull_request - run: | - echo ${{ github.event.pull_request.number }} > artifacts/screenshot_comparisons/pull_request_number.txt - - name: Upload bad screenshots - if: failure() - uses: actions/upload-artifact@v4 - with: - name: bad-screenshots - path: artifacts/screenshot_comparisons + uses: ./.github/workflows/compare_screenshots.yml test_windows: name: Windows Build - needs: [collect_data] - runs-on: windows-latest - timeout-minutes: 5 - - steps: - - uses: actions/checkout@v4 - - name: Setup Node - uses: ./.github/actions/setup_node - with: - restore-yarn-cache: true - - name: Compile - run: pwsh tools/ci/build.ps1 - env: - DM_EXE: "C:\\byond\\bin\\dm.exe" - - name: Check client Compatibility - uses: tgstation/byond-client-compatibility-check@v3 - with: - dmb-location: tgstation.dmb - max-required-client-version: ${{needs.collect_data.outputs.max_required_byond_client}} + needs: collect_data + uses: ./.github/workflows/test_windows.yml + with: + max_required_byond_client: ${{needs.collect_data.outputs.max_required_byond_client}} completion_gate: # Serves as a non-moving target for branch rulesets if: always() && !cancelled() diff --git a/.github/workflows/collect_data.yml b/.github/workflows/collect_data.yml new file mode 100644 index 00000000000..ad93bbeed0f --- /dev/null +++ b/.github/workflows/collect_data.yml @@ -0,0 +1,45 @@ +name: Collect Data + +on: + workflow_call: + outputs: + maps: + description: "The maps that were found" + value: ${{ jobs.collect_data.outputs.maps }} + alternate_tests: + description: "The alternate tests that were found" + value: ${{ jobs.collect_data.outputs.alternate_tests }} + max_required_byond_client: + description: "The max required byond client version" + value: ${{ jobs.collect_data.outputs.max_required_byond_client }} + +jobs: + collect_data: + runs-on: ubuntu-22.04 + timeout-minutes: 5 + outputs: + maps: ${{ steps.map_finder.outputs.maps }} + alternate_tests: ${{ steps.alternate_test_finder.outputs.alternate_tests }} + max_required_byond_client: ${{ steps.max_required_byond_client.outputs.max_required_byond_client }} + + steps: + - uses: actions/checkout@v4 + - name: Find Maps + id: map_finder + run: | + echo "$(ls -mw0 _maps/*.json)" > maps_output.txt + sed -i -e s+_maps/+\"+g -e s+.json+\"+g maps_output.txt + echo "Maps: $(cat maps_output.txt)" + echo "maps={\"paths\":[$(cat maps_output.txt)]}" >> $GITHUB_OUTPUT + - name: Find Alternate Tests + id: alternate_test_finder + run: | + ALTERNATE_TESTS_JSON=$(jq -nRc '[inputs | capture("^(?[0-9]+)\\.(?[0-9]+): (?[^;]+);?(?[0-9]+)?$")]' .github/alternate_byond_versions.txt) + echo "alternate_tests=$ALTERNATE_TESTS_JSON" >> $GITHUB_OUTPUT + - name: Collect byond client version configuration + id: max_required_byond_client + #the regex here does not filter out non-numbers because error messages about no input are less helpful then error messages about bad input (which includes the bad input) + run: | + echo "max_required_byond_client=$(grep -Ev '^[[:blank:]]{0,}#{1,}|^[[:blank:]]{0,}$' .github/max_required_byond_client.txt | tail -n1)" >> $GITHUB_OUTPUT + - name: Set up BYOND cache + uses: ./.github/actions/restore_or_install_byond diff --git a/.github/workflows/compare_screenshots.yml b/.github/workflows/compare_screenshots.yml new file mode 100644 index 00000000000..b0c02450829 --- /dev/null +++ b/.github/workflows/compare_screenshots.yml @@ -0,0 +1,40 @@ +name: Compare Screenshots + +on: + workflow_call: + +jobs: + compare_screenshots: + timeout-minutes: 15 + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + - name: Setup directory + run: mkdir -p artifacts + # If we ever add more artifacts, this is going to break, but it'll be obvious. + - name: Download screenshot tests + uses: actions/download-artifact@v4 + with: + path: artifacts + - name: ls -R + run: ls -R artifacts + - name: Setup screenshot comparison + run: npm i + working-directory: tools/screenshot-test-comparison + - name: Run screenshot comparison + run: node tools/screenshot-test-comparison/index.js artifacts code/modules/unit_tests/screenshots artifacts/screenshot_comparisons + # workflow_run does not give you the PR it ran on, + # even through the thing literally named "matching pull requests". + # However, in GraphQL, you can check if the check suite was ran + # by a specific PR, so trusting the (user controlled) action here is okay, + # as long as we check it later in show_screenshot_test_results + - name: Save PR ID + if: failure() && github.event.pull_request + run: | + echo ${{ github.event.pull_request.number }} > artifacts/screenshot_comparisons/pull_request_number.txt + - name: Upload bad screenshots + if: failure() + uses: actions/upload-artifact@v4 + with: + name: bad-screenshots + path: artifacts/screenshot_comparisons diff --git a/.github/workflows/compile_all_maps.yml b/.github/workflows/compile_all_maps.yml new file mode 100644 index 00000000000..94bdafdfc70 --- /dev/null +++ b/.github/workflows/compile_all_maps.yml @@ -0,0 +1,29 @@ +name: Compile All Maps + +on: + workflow_call: + inputs: + max_required_byond_client: + required: true + type: string + +jobs: + compile_all_maps: + runs-on: ubuntu-22.04 + timeout-minutes: 5 + + steps: + - uses: actions/checkout@v4 + - name: Setup Node + uses: ./.github/actions/setup_node + - name: Restore BYOND from Cache + uses: ./.github/actions/restore_or_install_byond + - name: Compile All Maps + run: | + source $HOME/BYOND/byond/bin/byondsetup + tools/build/build --ci dm -DCIBUILDING -DCITESTING -DALL_MAPS + - name: Check client Compatibility + uses: tgstation/byond-client-compatibility-check@v3 + with: + dmb-location: tgstation.dmb + max-required-client-version: ${{inputs.max_required_byond_client}} diff --git a/.github/workflows/perform_alternate_version_tests.yml b/.github/workflows/perform_alternate_version_tests.yml index de2abfe3e81..1718cb84d30 100644 --- a/.github/workflows/perform_alternate_version_tests.yml +++ b/.github/workflows/perform_alternate_version_tests.yml @@ -1,4 +1,5 @@ name: Run Alternate BYOND Version Tests + on: workflow_call: inputs: diff --git a/.github/workflows/perform_regular_version_tests.yml b/.github/workflows/perform_regular_version_tests.yml index bc515d85002..724db11f7df 100644 --- a/.github/workflows/perform_regular_version_tests.yml +++ b/.github/workflows/perform_regular_version_tests.yml @@ -1,4 +1,5 @@ name: Run Regular BYOND Version Tests + on: workflow_call: inputs: diff --git a/.github/workflows/run_integration_tests.yml b/.github/workflows/run_integration_tests.yml index 33fb2aa92d7..5aae4c26f03 100644 --- a/.github/workflows/run_integration_tests.yml +++ b/.github/workflows/run_integration_tests.yml @@ -1,6 +1,7 @@ # This is a reusable workflow to run integration tests on a single map. # This is run for every single map in ci_suite.yml. You might want to edit that instead. name: Run Integration Tests + on: workflow_call: inputs: diff --git a/.github/workflows/run_linters.yml b/.github/workflows/run_linters.yml new file mode 100644 index 00000000000..c00ecaf6db5 --- /dev/null +++ b/.github/workflows/run_linters.yml @@ -0,0 +1,106 @@ +name: Run Linters + +on: + workflow_call: + +jobs: + linters: + runs-on: ubuntu-22.04 + timeout-minutes: 5 + + steps: + - uses: actions/checkout@v4 + - name: Restore SpacemanDMM cache + uses: actions/cache@v4 + with: + path: ~/SpacemanDMM + key: ${{ runner.os }}-spacemandmm-${{ hashFiles('dependencies.sh') }} + restore-keys: | + ${{ runner.os }}-spacemandmm- + - name: Setup Node + uses: ./.github/actions/setup_node + with: + restore-yarn-cache: true + - name: Restore Bootstrap cache + uses: actions/cache@v4 + with: + path: tools/bootstrap/.cache + key: ${{ runner.os }}-bootstrap-${{ hashFiles('tools/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-bootstrap- + - name: Restore Rust cache + uses: actions/cache@v4 + with: + path: ~/.cargo + key: ${{ runner.os }}-rust-${{ hashFiles('tools/ci/ci_dependencies.sh')}} + restore-keys: | + ${{ runner.os }}-rust- + - name: Restore Cutter cache + uses: actions/cache@v4 + with: + path: tools/icon_cutter/cache + key: ${{ runner.os }}-cutter-${{ hashFiles('dependencies.sh') }} + - name: Setup .NET SDK + uses: actions/setup-dotnet@v4.2.0 + with: + dotnet-version: 9.x + - name: Install OpenDream + uses: robinraju/release-downloader@v1.12 + with: + repository: "OpenDreamProject/OpenDream" + tag: "latest" + fileName: "DMCompiler_linux-x64.tar.gz" + extract: true + - name: Install Tools + run: | + pip3 install setuptools + bash tools/ci/install_spaceman_dmm.sh dreamchecker + bash tools/ci/install_ripgrep.sh + tools/bootstrap/python -c '' + - name: Give Linters A Go + id: linter-setup + run: ":" + - name: Run Grep Checks + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: bash tools/ci/check_grep.sh + - name: Ticked File Enforcement + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: | + tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/tgstation_dme.json + tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/unit_tests.json + - name: Check Define Sanity + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: tools/bootstrap/python -m define_sanity.check + - name: Check Trait Validity + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: tools/bootstrap/python -m trait_validity.check + - name: Run DreamChecker + if: steps.linter-setup.conclusion == 'success' && !cancelled() + shell: bash + run: ~/dreamchecker 2>&1 | bash tools/ci/annotate_dm.sh + - name: Run OpenDream + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: ./DMCompiler_linux-x64/DMCompiler tgstation.dme --suppress-unimplemented --define=CIBUILDING | bash tools/ci/annotate_od.sh + - name: Run Map Checks + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: | + tools/bootstrap/python -m mapmerge2.dmm_test + tools/bootstrap/python -m tools.maplint.source + - name: Check Cutter + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: tools/bootstrap/python -m tools.icon_cutter.check + - name: Run DMI Tests + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: tools/bootstrap/python -m dmi.test + - name: Check File Directories + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: bash tools/ci/check_filedirs.sh tgstation.dme + - name: Check Changelogs + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: bash tools/ci/check_changelogs.sh + - name: Check Miscellaneous Files + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: bash tools/ci/check_misc.sh + - name: Run TGUI Checks + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: tools/build/build --ci lint tgui-test diff --git a/.github/workflows/test_windows.yml b/.github/workflows/test_windows.yml new file mode 100644 index 00000000000..a437a067b71 --- /dev/null +++ b/.github/workflows/test_windows.yml @@ -0,0 +1,29 @@ +name: Test Windows + +on: + workflow_call: + inputs: + max_required_byond_client: + required: true + type: string + +jobs: + test_windows: + runs-on: windows-latest + timeout-minutes: 5 + + steps: + - uses: actions/checkout@v4 + - name: Setup Node + uses: ./.github/actions/setup_node + with: + restore-yarn-cache: true + - name: Compile + run: pwsh tools/ci/build.ps1 + env: + DM_EXE: "C:\\byond\\bin\\dm.exe" + - name: Check client Compatibility + uses: tgstation/byond-client-compatibility-check@v3 + with: + dmb-location: tgstation.dmb + max-required-client-version: ${{inputs.max_required_byond_client}} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 11d27b55d34..00000000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,11 +0,0 @@ -build: - stage: build - rules: - - if: $CI_MERGE_REQUEST_IID || $CI_COMMIT_REF_NAME == "master" - changes: - - tgui/**/*.js - - tgui/**/*.scss - when: always - image: node:lts - script: - - tgui/bin/tgui --ci diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_gas.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_gas.dmm index ab89e26af80..9faec32d88a 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_gas.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_gas.dmm @@ -13,7 +13,7 @@ "bn" = ( /obj/structure/closet/crate/trashcart/filled, /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "bJ" = ( /obj/machinery/light/cold/directional/north, /turf/open/floor/plating/snowed/icemoon, @@ -77,7 +77,7 @@ "ed" = ( /obj/effect/spawner/random/structure/closet_empty/crate, /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "es" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, @@ -179,7 +179,7 @@ "kI" = ( /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "kS" = ( /obj/machinery/duct, /turf/open/floor/iron, @@ -195,7 +195,7 @@ pixel_y = 2 }, /turf/open/floor/plating/snowed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "lK" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -211,7 +211,7 @@ "mE" = ( /obj/structure/bonfire/prelit, /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "oo" = ( /turf/closed/wall, /area/ruin/powered/lizard_gas) @@ -236,7 +236,7 @@ "pO" = ( /obj/effect/spawner/random/trash/hobo_squat, /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "qM" = ( /obj/structure/reagent_dispensers/watertank, /obj/machinery/duct, @@ -267,16 +267,16 @@ "sQ" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "sU" = ( /obj/structure/barricade/wooden/snowed, /obj/structure/barricade/wooden/crude/snow, /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "tx" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plating/snowed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "tW" = ( /obj/machinery/atmospherics/components/tank/air, /turf/open/floor/plating, @@ -287,11 +287,11 @@ /area/ruin/powered/lizard_gas) "ur" = ( /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "uv" = ( /obj/structure/shipping_container/donk_co, /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "vA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/jim_nortons/directional/south, @@ -307,7 +307,7 @@ "wN" = ( /obj/effect/spawner/random/structure/closet_empty/crate, /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "wU" = ( /obj/structure/table/reinforced, /obj/item/food/croissant{ @@ -358,7 +358,7 @@ pixel_y = 2 }, /turf/open/floor/plating/snowed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "zm" = ( /obj/machinery/light/cold/directional/east, /turf/open/floor/plating/snowed/smoothed/icemoon, @@ -390,11 +390,11 @@ "El" = ( /obj/structure/table, /turf/open/floor/plating/snowed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "Ez" = ( /obj/structure/billboard/roadsign/twothousand, /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "Fp" = ( /obj/effect/spawner/random/trash/cigbutt, /turf/open/floor/plating/snowed/icemoon, @@ -419,7 +419,7 @@ "GO" = ( /obj/structure/water_source/puddle, /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "HE" = ( /turf/open/misc/asteroid/snow/icemoon, /area/ruin/powered/lizard_gas) @@ -437,31 +437,31 @@ /area/ruin/powered/lizard_gas) "Ji" = ( /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "Jv" = ( /turf/open/floor/plating/snowed/smoothed/icemoon, /area/ruin/powered/lizard_gas) "KG" = ( /obj/effect/spawner/random/structure/grille, /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "Lh" = ( /obj/structure/barricade/wooden/snowed, /obj/structure/barricade/wooden/crude/snow, /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "LG" = ( /obj/structure/billboard/lizards_gas, /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "LP" = ( /obj/structure/mop_bucket, /turf/open/floor/plating/snowed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "Md" = ( /obj/effect/spawner/random/structure/crate_abandoned, /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "Mz" = ( /obj/machinery/light/cold/directional/south, /turf/open/floor/plating/snowed/icemoon, @@ -535,7 +535,7 @@ "Rc" = ( /obj/structure/shipping_container/nanotrasen, /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "Rs" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/general, @@ -562,12 +562,12 @@ "RW" = ( /obj/effect/spawner/random/structure/crate_loot, /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "SZ" = ( /obj/structure/table, /obj/item/mop, /turf/open/floor/plating/snowed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "Tz" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -612,7 +612,7 @@ /area/ruin/powered/lizard_gas) "Vq" = ( /turf/open/floor/plating/snowed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) "Ww" = ( /obj/machinery/duct, /turf/open/floor/plating/snowed/icemoon, @@ -645,7 +645,7 @@ "YC" = ( /obj/effect/spawner/random/structure/crate_loot, /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/surface/outdoors/nospawn) (1,1,1) = {" gv diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm index d252e77417a..1aaa3f3d54b 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm @@ -7,11 +7,11 @@ /area/ruin/powered/icemoon_phone_booth) "c" = ( /turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/explored) +/area/icemoon/surface/outdoors/nospawn) "e" = ( /obj/structure/lattice, /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/explored) +/area/icemoon/surface/outdoors/nospawn) "k" = ( /obj/machinery/vending/cigarette{ all_products_free = 0 @@ -30,7 +30,7 @@ /obj/structure/lattice, /obj/structure/billboard/Phone_booth, /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/explored) +/area/icemoon/surface/outdoors/nospawn) "v" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/light/small/directional/north, @@ -91,7 +91,7 @@ /area/ruin/powered/icemoon_phone_booth) "W" = ( /turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/explored) +/area/icemoon/surface/outdoors/nospawn) (1,1,1) = {" q diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm index e5f7305eba0..b44fbe0b1b5 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm @@ -419,7 +419,7 @@ pixel_x = -8; pixel_y = 4 }, -/obj/item/reagent_containers/pill/patch/synthflesh{ +/obj/item/reagent_containers/applicator/patch/synthflesh{ pixel_x = 6; pixel_y = 2 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm index 195c9677f6d..9df4af38f1b 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm @@ -17,6 +17,16 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndielab) +"ah" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/airalarm/directional/north, +/obj/item/implanter/radio, +/obj/item/implantcase{ + pixel_x = -5; + pixel_y = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/syndielab) "aP" = ( /obj/item/reagent_containers/condiment/milk, /obj/item/reagent_containers/cup/soda_cans/beer{ @@ -255,16 +265,6 @@ /obj/structure/cable/layer1, /turf/open/floor/iron/dark/textured, /area/ruin/syndielab) -"pK" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/airalarm/directional/north, -/obj/item/implanter/radio, -/obj/item/implantcase{ - pixel_x = -5; - pixel_y = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/syndielab) "qy" = ( /obj/item/clothing/suit/hooded/explorer/syndicate{ pixel_x = 8; @@ -438,6 +438,18 @@ /obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/iron/dark/textured, /area/ruin/syndielab) +"yD" = ( +/obj/structure/table/wood, +/obj/item/ammo_casing/shotgun/flechette/donk{ + pixel_y = 6 + }, +/obj/item/ammo_casing/shotgun/flechette/donk{ + pixel_x = 8; + pixel_y = 6 + }, +/obj/item/gun/ballistic/shotgun/musket, +/turf/open/floor/carpet/red, +/area/ruin/syndielab) "yW" = ( /turf/open/floor/carpet/red, /area/ruin/syndielab) @@ -807,18 +819,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/syndielab) -"Wo" = ( -/obj/structure/table/wood, -/obj/item/ammo_casing/shotgun/fletchette{ - pixel_y = 6 - }, -/obj/item/ammo_casing/shotgun/fletchette{ - pixel_x = 8; - pixel_y = 6 - }, -/obj/item/gun/ballistic/shotgun/musket, -/turf/open/floor/carpet/red, -/area/ruin/syndielab) "WO" = ( /obj/item/trash/boritos/red{ pixel_y = -9; @@ -1042,7 +1042,7 @@ Xt (9,1,1) = {" Xt AR -pK +ah KV el nT @@ -1158,7 +1158,7 @@ dD Co AR cd -Wo +yD yW Dd AR diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 85b662d04aa..e5edafff2b2 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -320,9 +320,9 @@ /area/ruin/powered/beach) "hO" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/pill/lsd, -/obj/item/reagent_containers/pill/lsd, -/obj/item/reagent_containers/pill/lsd, +/obj/item/reagent_containers/applicator/pill/lsd, +/obj/item/reagent_containers/applicator/pill/lsd, +/obj/item/reagent_containers/applicator/pill/lsd, /turf/open/floor/wood, /area/ruin/powered/beach) "hS" = ( @@ -344,7 +344,7 @@ /area/ruin/powered/beach) "jc" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/pill/morphine, +/obj/item/reagent_containers/applicator/pill/morphine, /obj/item/storage/fancy/donut_box, /turf/open/floor/wood, /area/ruin/powered/beach) @@ -515,9 +515,9 @@ /area/ruin/powered/beach) "qy" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/pill/zoom, -/obj/item/reagent_containers/pill/zoom, -/obj/item/reagent_containers/pill/zoom, +/obj/item/reagent_containers/applicator/pill/zoom, +/obj/item/reagent_containers/applicator/pill/zoom, +/obj/item/reagent_containers/applicator/pill/zoom, /turf/open/floor/wood, /area/ruin/powered/beach) "qF" = ( @@ -694,9 +694,9 @@ /area/ruin/powered/beach) "zm" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/pill/morphine, -/obj/item/reagent_containers/pill/morphine, -/obj/item/reagent_containers/pill/morphine, +/obj/item/reagent_containers/applicator/pill/morphine, +/obj/item/reagent_containers/applicator/pill/morphine, +/obj/item/reagent_containers/applicator/pill/morphine, /turf/open/floor/wood, /area/ruin/powered/beach) "zv" = ( @@ -1343,7 +1343,7 @@ /area/ruin/powered/beach) "Wd" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/pill/happy, +/obj/item/reagent_containers/applicator/pill/happy, /obj/item/toy/figure/bartender{ pixel_x = -8; pixel_y = -1 diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm index bcc82db11fd..6cf75767578 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm @@ -196,7 +196,7 @@ /turf/open/indestructible/white, /area/ruin/powered/clownplanet) "bp" = ( -/turf/closed/mineral/bananium, +/turf/closed/mineral/bananium/volcanic, /area/ruin/powered/clownplanet) "bq" = ( /obj/item/pickaxe, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm index bcea9d1adbd..726a767d107 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_gas.dmm @@ -244,7 +244,6 @@ /obj/structure/sign/warning/fire/directional/north, /obj/structure/reagent_dispensers/fueltank/large{ anchored = 1; - can_be_unanchored = 1 }, /obj/structure/railing{ dir = 8 @@ -381,7 +380,6 @@ /obj/structure/sign/warning/fire/directional/south, /obj/structure/reagent_dispensers/fueltank/large{ anchored = 1; - can_be_unanchored = 1 }, /obj/structure/railing{ dir = 8 diff --git a/_maps/RandomRuins/SpaceRuins/commsbuoy_lowtech.dmm b/_maps/RandomRuins/SpaceRuins/commsbuoy_lowtech.dmm index 994589f0e51..120158d7f0e 100644 --- a/_maps/RandomRuins/SpaceRuins/commsbuoy_lowtech.dmm +++ b/_maps/RandomRuins/SpaceRuins/commsbuoy_lowtech.dmm @@ -66,7 +66,7 @@ /area/space/nearstation) "z" = ( /obj/structure/fluff/commsbuoy_broadcaster, -/turf/open/floor/iron/recharge_floor/Airless, +/turf/open/floor/iron/recharge_floor/airless, /area/space/nearstation) "C" = ( /obj/structure/fluff/sat_dish{ @@ -119,7 +119,7 @@ /area/ruin/space/unpowered) "O" = ( /obj/structure/fluff/commsbuoy_receiver, -/turf/open/floor/iron/recharge_floor/Airless, +/turf/open/floor/iron/recharge_floor/airless, /area/space/nearstation) "P" = ( /obj/structure/fluff/tram_rail/end, diff --git a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm index 42fa98704a3..b1913810abd 100644 --- a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm +++ b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm @@ -3839,7 +3839,7 @@ /obj/machinery/light/small/directional/east, /obj/item/paper/fluff/ruins/dangerous_research/smith, /obj/item/clothing/suit/toggle/labcoat/chemist, -/obj/item/reagent_containers/pill/stimulant, +/obj/item/reagent_containers/applicator/pill/stimulant, /obj/item/card/id/away/dangerous_research, /obj/effect/turf_decal/tile/purple/anticorner/contrasted, /turf/open/floor/iron/dark/corner{ diff --git a/_maps/RandomRuins/SpaceRuins/derelict7.dmm b/_maps/RandomRuins/SpaceRuins/derelict7.dmm index 50d683c353b..e55afd60f98 100644 --- a/_maps/RandomRuins/SpaceRuins/derelict7.dmm +++ b/_maps/RandomRuins/SpaceRuins/derelict7.dmm @@ -152,7 +152,7 @@ /turf/open/floor/plating/airless, /area/ruin/space/has_grav) "pR" = ( -/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, /turf/open/floor/plating/airless, /area/ruin/space/has_grav) "qi" = ( diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm index 16aa17b98f3..96525b60616 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm @@ -61,14 +61,6 @@ /obj/item/swab, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) -"hv" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/reagent_containers/pill/maintenance{ - pixel_x = 3; - pixel_y = 7 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/garbagetruck/medicalwaste) "io" = ( /obj/structure/closet/body_bag, /obj/structure/table/optable, @@ -99,13 +91,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron, /area/ruin/space/has_grav/garbagetruck/medicalwaste) -"kp" = ( -/obj/structure/safe, -/obj/item/stamp/syndicate, -/obj/item/eyesnatcher, -/obj/item/stack/spacecash/c1000, -/turf/open/floor/plating, -/area/ruin/space/has_grav/garbagetruck/medicalwaste) "kx" = ( /obj/structure/lattice, /obj/structure/grille, @@ -186,6 +171,13 @@ /obj/structure/closet/crate/trashcart, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) +"re" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/applicator/pill/cyanide{ + pixel_y = 8 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/garbagetruck/medicalwaste) "rB" = ( /obj/structure/closet/crate/freezer, /obj/item/stack/medical/bone_gel, @@ -222,6 +214,13 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/ruin/space/has_grav/garbagetruck/medicalwaste) +"uu" = ( +/obj/structure/safe, +/obj/item/stamp/syndicate, +/obj/item/eyesnatcher, +/obj/item/stack/spacecash/c1000, +/turf/open/floor/plating, +/area/ruin/space/has_grav/garbagetruck/medicalwaste) "uG" = ( /obj/structure/chair/plastic, /obj/item/reagent_containers/syringe/lethal/choral, @@ -264,13 +263,6 @@ /obj/structure/grille, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) -"xw" = ( -/obj/item/restraints/handcuffs/cable/zipties/used, -/obj/structure/closet/crate/trashcart/filled, -/obj/item/reagent_containers/condiment/soysauce, -/obj/item/reagent_containers/pill/mannitol, -/turf/open/floor/plating, -/area/ruin/space/has_grav/garbagetruck/medicalwaste) "xH" = ( /obj/item/food/badrecipe/moldy, /obj/item/food/badrecipe/moldy, @@ -324,6 +316,14 @@ /obj/item/clothing/suit/toggle/labcoat, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) +"Ag" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/reagent_containers/applicator/pill/maintenance{ + pixel_x = 3; + pixel_y = 7 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/garbagetruck/medicalwaste) "Al" = ( /obj/structure/frame/computer, /obj/effect/decal/cleanable/glass, @@ -408,13 +408,6 @@ /obj/item/stack/sticky_tape/surgical, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) -"Go" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/reagent_containers/pill/cyanide{ - pixel_y = 8 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/garbagetruck/medicalwaste) "Gp" = ( /obj/item/organ/eyes/robotic/basic, /obj/item/kitchen/spoon, @@ -463,10 +456,24 @@ /obj/effect/spawner/random/maintenance/three, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) +"Kq" = ( +/obj/item/restraints/handcuffs/cable/zipties/used, +/obj/structure/closet/crate/trashcart/filled, +/obj/item/reagent_containers/condiment/soysauce, +/obj/item/reagent_containers/applicator/pill/mannitol, +/turf/open/floor/plating, +/area/ruin/space/has_grav/garbagetruck/medicalwaste) "Ky" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/medicalwaste) +"KK" = ( +/obj/item/reagent_containers/applicator/pill/cyanide, +/obj/effect/spawner/random/medical/minor_healing, +/obj/effect/spawner/random/medical/surgery_tool, +/obj/item/reagent_containers/blood/o_minus, +/turf/open/floor/plating, +/area/ruin/space/has_grav/garbagetruck/medicalwaste) "Lh" = ( /obj/item/food/deadmouse/moldy, /obj/item/pushbroom, @@ -543,13 +550,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron, /area/ruin/space/has_grav/garbagetruck/medicalwaste) -"Ok" = ( -/obj/item/reagent_containers/pill/cyanide, -/obj/effect/spawner/random/medical/minor_healing, -/obj/effect/spawner/random/medical/surgery_tool, -/obj/item/reagent_containers/blood/o_minus, -/turf/open/floor/plating, -/area/ruin/space/has_grav/garbagetruck/medicalwaste) "OA" = ( /obj/machinery/door/airlock/shuttle, /turf/open/floor/plating, @@ -781,7 +781,7 @@ tI CJ uG CJ -Ok +KK MC "} (5,1,1) = {" @@ -802,7 +802,7 @@ CJ Kk CJ zj -Go +re bv MC "} @@ -845,9 +845,9 @@ JW CJ EJ AB -xw +Kq CJ -kp +uu MC "} (8,1,1) = {" @@ -861,7 +861,7 @@ MC uR CJ CJ -hv +Ag Ka CJ CJ diff --git a/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm b/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm index 384350f35a1..ac76b2c8ea3 100644 --- a/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm +++ b/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm @@ -4042,15 +4042,15 @@ }, /obj/effect/decal/cleanable/oil/slippery, /obj/item/trash/popcorn/salty, -/obj/item/ammo_casing/shotgun/fletchette{ +/obj/item/ammo_casing/shotgun/flechette/donk{ pixel_x = 8; pixel_y = 4 }, -/obj/item/ammo_casing/shotgun/fletchette{ +/obj/item/ammo_casing/shotgun/flechette/donk{ pixel_x = -2; pixel_y = -7 }, -/obj/item/ammo_casing/shotgun/fletchette{ +/obj/item/ammo_casing/shotgun/flechette/donk{ pixel_x = -4; pixel_y = 6 }, @@ -5744,11 +5744,11 @@ pixel_y = 12; pixel_x = -6 }, -/obj/item/food/dankpocket{ +/obj/item/food/donkpocket/dank{ pixel_x = -10 }, -/obj/item/food/dankpocket, -/obj/item/food/dankpocket{ +/obj/item/food/donkpocket/dank, +/obj/item/food/donkpocket/dank{ pixel_x = 10 }, /obj/machinery/light/warm/directional/east, diff --git a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm index aa130e8ddcd..18d050e276e 100644 --- a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm +++ b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm @@ -2005,7 +2005,7 @@ /obj/effect/decal/cleanable/blood/gibs{ icon_state = "gib6-old" }, -/obj/item/reagent_containers/pill/cyanide{ +/obj/item/reagent_containers/applicator/pill/cyanide{ pixel_y = -2; pixel_x = 6 }, diff --git a/_maps/RandomRuins/SpaceRuins/mechtransport.dmm b/_maps/RandomRuins/SpaceRuins/mechtransport.dmm index ac1f0b03f4b..6c96a3a0a75 100644 --- a/_maps/RandomRuins/SpaceRuins/mechtransport.dmm +++ b/_maps/RandomRuins/SpaceRuins/mechtransport.dmm @@ -24,7 +24,7 @@ /area/ruin/space/has_grav/powered/mechtransport) "gK" = ( /obj/structure/mecha_wreckage/ripley, -/turf/open/floor/iron/recharge_floor/Airless, +/turf/open/floor/iron/recharge_floor/airless, /area/ruin/space/has_grav/powered/mechtransport) "hq" = ( /obj/item/stack/tile/iron/smooth, @@ -127,7 +127,7 @@ /area/ruin/space/has_grav/powered/mechtransport) "qH" = ( /obj/structure/mecha_wreckage/durand, -/turf/open/floor/iron/recharge_floor/Airless, +/turf/open/floor/iron/recharge_floor/airless, /area/ruin/space/has_grav/powered/mechtransport) "rD" = ( /obj/machinery/door/airlock/hatch{ @@ -148,7 +148,7 @@ /area/ruin/space/has_grav/powered/mechtransport) "uF" = ( /obj/structure/mecha_wreckage/clarke, -/turf/open/floor/iron/recharge_floor/Airless, +/turf/open/floor/iron/recharge_floor/airless, /area/ruin/space/has_grav/powered/mechtransport) "uN" = ( /obj/structure/closet/crate/secure/loot, @@ -223,7 +223,7 @@ /area/ruin/space/has_grav/powered/mechtransport) "DM" = ( /obj/structure/mecha_wreckage/odysseus, -/turf/open/floor/iron/recharge_floor/Airless, +/turf/open/floor/iron/recharge_floor/airless, /area/ruin/space/has_grav/powered/mechtransport) "Ga" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -249,7 +249,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/layer4{ dir = 4 }, -/turf/open/floor/catwalk_floor/titanium/Airless, +/turf/open/floor/catwalk_floor/titanium/airless, /area/ruin/space/has_grav/powered/mechtransport) "Il" = ( /obj/effect/spawner/structure/window/reinforced/shuttle, @@ -280,7 +280,7 @@ /area/ruin/space/has_grav/powered/mechtransport) "NG" = ( /obj/vehicle/sealed/mecha/ripley, -/turf/open/floor/iron/recharge_floor/Airless, +/turf/open/floor/iron/recharge_floor/airless, /area/ruin/space/has_grav/powered/mechtransport) "Oh" = ( /obj/machinery/mech_bay_recharge_port{ @@ -293,7 +293,7 @@ /turf/open/floor/catwalk_floor/iron_smooth/airless, /area/ruin/space/has_grav/powered/mechtransport) "OJ" = ( -/turf/open/floor/iron/recharge_floor/Airless, +/turf/open/floor/iron/recharge_floor/airless, /area/ruin/space/has_grav/powered/mechtransport) "PG" = ( /obj/item/stack/rods, @@ -303,7 +303,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/layer2{ dir = 8 }, -/turf/open/floor/catwalk_floor/titanium/Airless, +/turf/open/floor/catwalk_floor/titanium/airless, /area/ruin/space/has_grav/powered/mechtransport) "Ry" = ( /obj/structure/closet/crate/secure/loot, diff --git a/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm b/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm index 85c2910d1fa..494e6467666 100644 --- a/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm +++ b/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm @@ -95,7 +95,7 @@ id = "ruined_infiltrator_shutters" }, /obj/item/knife/combat/survival, -/obj/item/reagent_containers/pill/cyanide{ +/obj/item/reagent_containers/applicator/pill/cyanide{ pixel_y = -2; pixel_x = 6 }, @@ -720,11 +720,11 @@ /area/ruin/space/unpowered) "YN" = ( /obj/structure/table, -/obj/item/reagent_containers/pill/morphine{ +/obj/item/reagent_containers/applicator/pill/morphine{ pixel_y = 8; pixel_x = 6 }, -/obj/item/reagent_containers/pill/morphine{ +/obj/item/reagent_containers/applicator/pill/morphine{ pixel_x = 4 }, /turf/open/floor/mineral/plastitanium/red/airless, @@ -739,10 +739,10 @@ pixel_y = 3; pixel_x = 19 }, -/obj/item/reagent_containers/pill/stimulant{ +/obj/item/reagent_containers/applicator/pill/stimulant{ pixel_y = -2 }, -/obj/item/reagent_containers/pill/epinephrine{ +/obj/item/reagent_containers/applicator/pill/epinephrine{ pixel_y = 4; pixel_x = -2 }, diff --git a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm index 592b4253850..82da41ac206 100644 --- a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm @@ -3340,11 +3340,9 @@ /turf/open/floor/plating/airless, /area/ruin/space/ks13/engineering/atmos) "zP" = ( -/obj/item/shard{ - icon_state = "small" - }, -/obj/item/shard, /obj/effect/mapping_helpers/burnt_floor, +/obj/structure/table, +/obj/item/stock_parts/power_store/battery/high, /turf/open/floor/iron/airless, /area/ruin/space/ks13/engineering/tech_storage) "zR" = ( diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index 3dc485b2572..823332f9297 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -2390,13 +2390,6 @@ "ms" = ( /turf/closed/indestructible/rock/snow/ice, /area/awaymission/cabin/caves) -"my" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/gun/ballistic/rifle/sks/chekhov, -/turf/open/floor/mineral/plastitanium/red{ - name = "soviet floor" - }, -/area/awaymission/cabin/caves/sovietcave) "mI" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/south, @@ -2546,16 +2539,6 @@ name = "soviet floor" }, /area/awaymission/cabin/caves/sovietcave) -"nw" = ( -/obj/effect/decal/cleanable/blood, -/obj/item/reagent_containers/pill/patch/libital, -/obj/effect/light_emitter{ - set_cap = 3; - set_luminosity = 6; - light_color = "#9bbbff" - }, -/turf/open/floor/plating/snowed/snow_cabin, -/area/awaymission/cabin/snowforest/sovietsurface) "nB" = ( /obj/structure/table/wood/poker, /obj/item/dice/d6{ @@ -2648,6 +2631,13 @@ }, /turf/closed/wall/ice, /area/awaymission/cabin/caves) +"oB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/gun/ballistic/rifle/sks/chekhov, +/turf/open/floor/mineral/plastitanium/red{ + name = "soviet floor" + }, +/area/awaymission/cabin/caves/sovietcave) "oH" = ( /obj/item/clothing/suit/armor/vest/russian_coat{ pixel_x = 16; @@ -2871,6 +2861,16 @@ }, /turf/open/floor/wood/freezing, /area/awaymission/cabin/snowforest) +"qA" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/reagent_containers/applicator/patch/libital, +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 6; + light_color = "#9bbbff" + }, +/turf/open/floor/plating/snowed/snow_cabin, +/area/awaymission/cabin/snowforest/sovietsurface) "qF" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 9 @@ -3857,6 +3857,16 @@ }, /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/snowforest) +"BL" = ( +/obj/effect/decal/cleanable/blood/gibs, +/obj/item/reagent_containers/applicator/patch/libital, +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 6; + light_color = "#9bbbff" + }, +/turf/open/floor/plating/snowed/snow_cabin, +/area/awaymission/cabin/snowforest/sovietsurface) "BR" = ( /mob/living/basic/skeleton/ice{ desc = "A reanimated skeleton covered in thick sheet of natural ice. It is obvious to tell that they look really slow."; @@ -4259,15 +4269,6 @@ }, /turf/open/floor/plating/snowed/snow_cabin, /area/awaymission/cabin/snowforest/sovietsurface) -"IJ" = ( -/obj/item/reagent_containers/pill/patch/libital, -/obj/effect/light_emitter{ - set_cap = 3; - set_luminosity = 6; - light_color = "#9bbbff" - }, -/turf/open/floor/plating/snowed/snow_cabin, -/area/awaymission/cabin/snowforest/sovietsurface) "IR" = ( /obj/structure/chair, /obj/effect/decal/cleanable/blood, @@ -4510,6 +4511,15 @@ /obj/structure/sign/warning/no_smoking/directional/east, /turf/open/floor/wood/freezing, /area/awaymission/cabin/lumbermill) +"LB" = ( +/obj/item/reagent_containers/applicator/patch/libital, +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 6; + light_color = "#9bbbff" + }, +/turf/open/floor/plating/snowed/snow_cabin, +/area/awaymission/cabin/snowforest/sovietsurface) "LE" = ( /obj/item/nullrod/claymore/multiverse{ anchored = 1; @@ -5552,16 +5562,6 @@ }, /turf/open/floor/plating/snowed/snow_cabin, /area/awaymission/cabin/snowforest) -"ZB" = ( -/obj/effect/decal/cleanable/blood/gibs, -/obj/item/reagent_containers/pill/patch/libital, -/obj/effect/light_emitter{ - set_cap = 3; - set_luminosity = 6; - light_color = "#9bbbff" - }, -/turf/open/floor/plating/snowed/snow_cabin, -/area/awaymission/cabin/snowforest/sovietsurface) "ZH" = ( /obj/item/lighter/greyscale, /obj/effect/light_emitter{ @@ -42285,7 +42285,7 @@ Ae Ae qn Ae -ZB +BL Ae Ae Ae @@ -42793,7 +42793,7 @@ Jz Jz vH IR -nw +qA QC Ae Ae @@ -43055,7 +43055,7 @@ SK uF Ae zT -IJ +LB QV Ie SK @@ -44596,7 +44596,7 @@ Ae zT Ae Ae -IJ +LB Hk Ae Ae @@ -58987,7 +58987,7 @@ ii ii ii mO -my +oB kF im im diff --git a/_maps/RandomZLevels/museum.dmm b/_maps/RandomZLevels/museum.dmm index d9c7d0aa705..b85746b3249 100644 --- a/_maps/RandomZLevels/museum.dmm +++ b/_maps/RandomZLevels/museum.dmm @@ -5527,10 +5527,10 @@ /turf/open/floor/holofloor/asteroid, /area/awaymission/museum) "UD" = ( -/obj/item/reagent_containers/pill/patch/ondansetron, +/obj/item/reagent_containers/applicator/patch/ondansetron, /obj/structure/rack, /obj/effect/decal/cleanable/dirt/dust, -/obj/item/reagent_containers/pill/patch/libital, +/obj/item/reagent_containers/applicator/patch/libital, /turf/open/indestructible/plating, /area/awaymission/museum) "UG" = ( diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index a70b8933bab..d3d9330d9a7 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -22,10 +22,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/electrical) -"aau" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) "aav" = ( /obj/structure/sink/directional/west, /obj/structure/mirror/directional/east, @@ -41,6 +37,22 @@ /obj/structure/window/spawner/directional/west, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"aaR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/small, +/area/station/service/bar) +"aaV" = ( +/obj/machinery/door/airlock/command{ + name = "Research Division Server Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/server) "aaZ" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/tile/blue, @@ -54,15 +66,14 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"abh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ +"abo" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, /turf/open/floor/iron, -/area/station/hallway/primary/aft) +/area/station/science/xenobiology) "abt" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, @@ -93,6 +104,16 @@ }, /turf/open/floor/iron, /area/station/security/tram) +"abS" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "acg" = ( /obj/machinery/power/smes/engineering, /turf/open/floor/plating, @@ -112,11 +133,6 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"acM" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/machinery/light/small/directional/west, -/turf/open/floor/grass, -/area/station/science/xenobiology) "acS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -124,55 +140,13 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) -"adh" = ( +"add" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/trap/stun, +/obj/structure/alien/weeds, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"adl" = ( -/obj/structure/bodycontainer/morgue/beeper_off{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"adL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, /turf/open/floor/iron, -/area/station/hallway/primary/aft) -"aef" = ( -/obj/structure/flora/bush/flowers_yw/style_3{ - pixel_x = 5; - pixel_y = -5 - }, -/obj/structure/flora/bush/flowers_br/style_random{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/effect/light_emitter/fake_outdoors, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/grass/Airless, -/area/station/hallway/primary/central/aft) -"aej" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/science/robotics/lab) +/area/station/maintenance/starboard/greater) "aem" = ( /obj/machinery/power/terminal, /obj/structure/cable, @@ -182,15 +156,6 @@ /obj/structure/grille, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"aeA" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "aeC" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -211,16 +176,11 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/science/genetics) -"aeG" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) +"aeN" = ( +/obj/machinery/rnd/production/protolathe/department/science, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/lab) "aeX" = ( /obj/structure/window/spawner/directional/east, /obj/item/kirbyplants/random, @@ -278,6 +238,12 @@ dir = 1 }, /area/station/hallway/secondary/entry) +"afW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "afZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -300,29 +266,38 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) +"agd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side, +/area/station/science/lower) "agp" = ( /obj/structure/table/wood, /obj/item/cigarette/cigar/cohiba, /turf/open/floor/carpet, /area/station/commons/dorms) -"agy" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light/cold/directional/south, -/obj/machinery/atmospherics/components/tank/oxygen{ +"agx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table/wood, +/obj/item/hemostat{ + desc = "Ah yes, the Haircutting Device."; + name = "Totally Not Scissors" + }, +/turf/open/floor/iron/small, +/area/station/service/barber) +"agJ" = ( +/obj/effect/turf_decal/siding{ dir = 4 }, -/turf/open/floor/plating, -/area/station/science/ordnance/storage) -"agI" = ( -/obj/machinery/firealarm/directional/south, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) +/turf/open/floor/iron/white, +/area/station/science/cytology) "agR" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 6 @@ -354,6 +329,9 @@ /obj/structure/flora/tree/jungle/style_5, /turf/open/floor/grass, /area/station/service/chapel) +"ahn" = ( +/turf/closed/wall, +/area/station/medical/morgue) "ahr" = ( /obj/machinery/door/airlock/maintenance{ name = "Maintenance" @@ -412,23 +390,26 @@ "aid" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) -"aip" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 1 +"aig" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white/small, -/area/station/medical/storage) -"ait" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/rnd_secure_all, -/obj/effect/turf_decal/siding/dark, -/obj/machinery/light/small/directional/north, -/obj/machinery/camera/autoname/motion/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/engineering/storage/tech) +/area/station/hallway/primary/starboard) +"aiz" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "aiI" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/iron, @@ -443,12 +424,6 @@ }, /turf/open/floor/plating, /area/station/engineering/lobby) -"aiX" = ( -/obj/structure/broken_flooring/singular/directional/east, -/obj/structure/alien/weeds, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "ajg" = ( /obj/machinery/camera/directional/north{ c_tag = "atmospherics - upper" @@ -456,6 +431,31 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) +"ajj" = ( +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark, +/area/station/security/prison/workout) +"ajk" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/orange, +/obj/item/restraints/handcuffs, +/obj/item/reagent_containers/spray/pepper, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron, +/area/station/security/execution/transfer) +"akn" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "ako" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -481,6 +481,11 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/cafeteria, /area/station/commons/dorms) +"akB" = ( +/obj/machinery/light_switch/directional/east, +/obj/structure/closet/firecloset, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) "akF" = ( /obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod, /turf/closed/wall, @@ -496,25 +501,24 @@ /turf/open/floor/iron, /area/station/security) "alb" = ( -/obj/machinery/airalarm/directional/south, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "als" = ( /obj/machinery/holopad, /turf/open/floor/iron/kitchen/small, /area/station/service/kitchen) -"alF" = ( +"aly" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "alJ" = ( /obj/structure/cable, /turf/open/floor/iron/small, @@ -559,17 +563,6 @@ }, /turf/open/floor/iron/textured_half, /area/station/security/execution/transfer) -"amK" = ( -/obj/effect/turf_decal/weather/snow, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/binary/pump/on, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "amX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/item/radio/intercom/directional/south, @@ -628,11 +621,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"aop" = ( -/obj/structure/steam_vent, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "aoz" = ( /obj/structure/closet/secure_closet/captains, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -646,6 +634,23 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) +"aoY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/steam_vent, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"apb" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/science/xenobiology) "api" = ( /obj/machinery/skill_station, /turf/open/floor/wood/parquet, @@ -660,18 +665,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron, /area/station/security) -"apl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/left{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "apo" = ( /obj/structure/cable, /turf/open/floor/iron/kitchen/small, @@ -682,17 +675,20 @@ }, /turf/open/floor/wood, /area/station/service/chapel) +"apz" = ( +/obj/machinery/button/door/directional/west{ + id = "aibridge"; + name = "AI Maintenance Space Bridge Control"; + req_access = list("command") + }, +/turf/open/floor/plating, +/area/station/ai_monitored/turret_protected/aisat/maint) "apB" = ( /obj/structure/disposalpipe/junction{ dir = 4 }, /turf/open/floor/iron/checker, /area/station/security/breakroom) -"apF" = ( -/obj/machinery/rnd/destructive_analyzer, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/lab) "apP" = ( /obj/effect/spawner/random/trash, /obj/effect/decal/cleanable/dirt, @@ -701,6 +697,18 @@ "apZ" = ( /turf/open/floor/engine/helium, /area/station/ai_monitored/turret_protected/ai) +"aqc" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/subspace/transmitter, +/obj/item/stock_parts/subspace/transmitter, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/amplifier, +/obj/item/stock_parts/subspace/amplifier, +/obj/item/stock_parts/subspace/amplifier, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "aqf" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -710,10 +718,20 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"aqj" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "aqo" = ( /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"aqx" = ( +/turf/open/floor/iron, +/area/station/cargo/sorting) "aqG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -729,6 +747,22 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"aqR" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/structure/steam_vent, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"aqV" = ( +/obj/machinery/door/airlock/glass, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "aqW" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/sofa/bench/right{ @@ -786,6 +820,24 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/smooth, /area/station/maintenance/department/electrical) +"arS" = ( +/obj/structure/cable, +/obj/effect/landmark/navigate_destination, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Tech Storage" + }, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/storage/tech) "asb" = ( /obj/effect/turf_decal/siding/white, /turf/open/floor/iron/dark/small, @@ -813,17 +865,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/textured_half, /area/station/security/prison/workout) -"asm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/siding/blue, -/turf/open/floor/iron/white, -/area/station/medical/paramedic) -"asG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark/small, -/area/station/tcommsat/server) "asS" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral/opposingcorners{ @@ -860,6 +901,15 @@ /obj/machinery/hydroponics/soil, /turf/open/misc/sandy_dirt, /area/station/science/cytology) +"atl" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/fore) "atm" = ( /obj/structure/table, /obj/item/stack/spacecash/c1{ @@ -922,11 +972,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/engine) -"auf" = ( -/obj/structure/cable, -/obj/machinery/light/small/dim/directional/south, -/turf/open/floor/iron, -/area/station/maintenance/port/aft) "aul" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/dark_red{ @@ -946,12 +991,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/glass, /area/station/hallway/primary/central/aft) -"auG" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) "auI" = ( /obj/structure/closet/emcloset, /turf/open/floor/iron, @@ -979,12 +1018,20 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/iron/smooth, /area/station/command/gateway) -"avc" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 +"avb" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/closed/wall, -/area/station/medical/morgue) +/obj/machinery/door/airlock/maintenance_hatch{ + name = "AISat Maintenance" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/any/command/maintenance, +/turf/open/floor/plating, +/area/station/ai_monitored/turret_protected/aisat/maint) "avd" = ( /obj/machinery/atmospherics/components/binary/volume_pump{ dir = 8 @@ -998,6 +1045,11 @@ "ave" = ( /turf/open/space, /area/space) +"avn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "avp" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -1015,6 +1067,12 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) +"avz" = ( +/obj/machinery/flasher/directional/east{ + id = "hopflash" + }, +/turf/open/floor/iron/half, +/area/station/hallway/primary/central/fore) "avB" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -1033,6 +1091,20 @@ }, /turf/open/floor/iron/white, /area/station/science/cytology) +"avO" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/command/meeting_room) "avP" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 8 @@ -1091,18 +1163,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"awE" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/science/xenobiology, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light/cold/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/lower) +"awG" = ( +/obj/structure/bed/dogbed/renault, +/mob/living/basic/pet/fox/renault, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/captain/private) "awH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/structure/cable, @@ -1118,15 +1184,11 @@ }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"awQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable, +"awP" = ( +/obj/effect/landmark/start/hangover, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/lower) +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) "awT" = ( /obj/machinery/light/small/directional/east, /obj/structure/window/spawner/directional/west, @@ -1173,12 +1235,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/maintenance/central/lesser) -"axN" = ( -/obj/machinery/sparker/directional/north{ - id = "Xenobio" - }, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) "axP" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -1215,6 +1271,20 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"ayu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white/small, +/area/station/science/cubicle) +"ayI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "ayK" = ( /turf/closed/wall/r_wall, /area/station/engineering/supermatter/room) @@ -1348,22 +1418,21 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/dark, /area/station/security/office) +"aAm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/status_display/ai/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/storage/tech) "aAD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/item/book/manual/wiki/tcomms, /turf/open/floor/circuit, /area/station/tcommsat/server) -"aAL" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "aAQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/junction/flip{ @@ -1430,11 +1499,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/wood/tile, /area/station/science/lower) -"aBv" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "aBB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral{ @@ -1457,6 +1521,22 @@ }, /turf/open/floor/carpet/blue, /area/station/commons/dorms) +"aBN" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/green{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "aBQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1469,14 +1549,6 @@ }, /turf/open/floor/iron, /area/station/cargo/office) -"aBV" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/sign/departments/science/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "aCi" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -1515,6 +1587,33 @@ /obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/maint_right, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) +"aCS" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/purple{ + dir = 1 + }, +/obj/structure/table, +/obj/item/storage/box/monkeycubes{ + pixel_x = 16; + pixel_y = 9 + }, +/obj/item/storage/box/monkeycubes{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/storage/pill_bottle/mutadone{ + pixel_x = -7; + pixel_y = 13 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/north, +/obj/machinery/camera/autoname/directional/north, +/obj/structure/cable, +/obj/item/flesh_shears{ + pixel_x = -5 + }, +/turf/open/floor/iron/dark, +/area/station/science/genetics) "aDe" = ( /obj/item/target, /obj/structure/window/reinforced/spawner/directional/east, @@ -1523,13 +1622,25 @@ }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"aDC" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 +"aDg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/cold_temp/directional/north, +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/science/xenobiology) +"aDx" = ( /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "aEa" = ( /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/tram, @@ -1563,6 +1674,15 @@ dir = 8 }, /area/station/hallway/primary/central/fore) +"aEh" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/machinery/holopad, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) "aEo" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 @@ -1581,17 +1701,6 @@ /obj/item/storage/bag/plants/portaseeder, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"aEJ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, -/turf/open/floor/wood/tile, -/area/station/tcommsat/server) "aEP" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -1599,20 +1708,26 @@ /obj/machinery/shower/directional/west, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/engine) -"aFb" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/flora/bush/large/style_2, -/obj/effect/turf_decal/weather/dirt{ - dir = 1 +"aEV" = ( +/obj/item/radio/intercom/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 4 }, -/turf/open/floor/grass, -/area/station/service/chapel) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "aFh" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) +"aFj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/closed/wall/r_wall, +/area/station/science/ordnance) "aFo" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/plating/airless, @@ -1645,46 +1760,22 @@ }, /turf/open/space/basic, /area/space/nearstation) +"aFP" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/closet/l3closet/janitor, +/obj/item/clothing/gloves/color/orange, +/obj/item/clothing/shoes/galoshes, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/iron/small, +/area/station/service/janitor) "aFR" = ( /turf/open/floor/plating, /area/station/security/tram) -"aFY" = ( -/obj/machinery/firealarm/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/stairs{ - dir = 8 - }, -/area/station/science/xenobiology) "aGa" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/fuchsia, /turf/open/space/basic, /area/space/nearstation) -"aGb" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/science/ordnance/testlab) -"aGq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"aGv" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/command/heads_quarters/rd) "aGy" = ( /obj/structure/flora/bush/large/style_random{ pixel_y = -3 @@ -1699,25 +1790,23 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) -"aGH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"aGR" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "aGU" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"aHj" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/crystal, +/obj/item/stock_parts/subspace/crystal, +/obj/item/stock_parts/subspace/crystal, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tcomms) "aHl" = ( /obj/structure/railing/corner, /obj/structure/disposalpipe/segment, @@ -1736,24 +1825,41 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"aHF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/lower) "aHJ" = ( /obj/structure/window/spawner/directional/north, /obj/machinery/hydroponics/soil, /obj/machinery/airalarm/directional/west, /turf/open/floor/grass, /area/station/security/prison/garden) -"aHV" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/cytology) "aIb" = ( /obj/machinery/door/airlock{ name = "Maintenance" }, /turf/open/floor/plating, /area/station/maintenance/central/lesser) +"aIf" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/siding/green{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "aIi" = ( /obj/machinery/door/airlock/public/glass{ name = "Library" @@ -1790,6 +1896,18 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/white/small, /area/station/medical/psychology) +"aIF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "aIO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1835,6 +1953,11 @@ }, /turf/open/floor/iron/small, /area/station/maintenance/port/lesser) +"aJJ" = ( +/obj/machinery/firealarm/directional/east, +/obj/machinery/vending/cigarette, +/turf/open/floor/iron/smooth, +/area/station/hallway/secondary/command) "aJP" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -1853,26 +1976,14 @@ /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/iron/smooth, /area/station/security/evidence) -"aJX" = ( +"aKl" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/science/xenobiology) -"aJZ" = ( -/obj/machinery/door/airlock/engineering{ - name = "Auxillary Base Construction" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base, -/obj/machinery/door/firedoor, -/obj/effect/landmark/navigate_destination, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/construction/mining/aux_base) +/obj/structure/sign/warning/radiation/rad_area/directional/east, +/turf/open/floor/iron, +/area/station/maintenance/hallway/abandoned_command) "aKm" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/orange{ @@ -1884,24 +1995,30 @@ /obj/machinery/holopad, /turf/open/floor/iron/dark/small, /area/station/tcommsat/server) -"aKJ" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "aKS" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark/small, /area/station/hallway/secondary/dock) +"aLg" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/requests_console/directional/east{ + department = "Xenobiology"; + name = "Xenobiology Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/science/xenobiology) +"aLi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/science/genetics) "aLk" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/dark_red{ @@ -1923,10 +2040,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/construction/mining/aux_base) -"aLs" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "aLv" = ( /obj/structure/transport/linear/tram, /obj/effect/turf_decal/stripes/white/line{ @@ -1938,6 +2051,12 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/maintenance/port/aft) +"aLA" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "aLB" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/camera/autoname/directional/north, @@ -1950,16 +2069,18 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/small, /area/station/hallway/secondary/service) -"aLC" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/cold/directional/east, -/obj/machinery/power/apc/auto_name/directional/east{ - areastring = "/area/station/science/ordnance/burnchamber" +"aLI" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/obj/structure/cable, +/turf/open/floor/iron/small, +/area/station/commons/fitness/locker_room) +"aLK" = ( +/obj/machinery/vending/assist, +/obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, -/area/station/science/ordnance) +/area/station/engineering/storage/tech) "aLS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, @@ -1974,6 +2095,14 @@ }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) +"aLV" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/spawner/random/entertainment/dice, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "aMa" = ( /obj/item/bodypart/leg/left, /turf/open/floor/plating/airless, @@ -1987,13 +2116,39 @@ }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"aMp" = ( +"aMt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/chapel{ +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ dir = 4 }, -/area/station/maintenance/starboard/greater) +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"aMy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, +/turf/open/floor/plating, +/area/station/science/ordnance/testlab) +"aMC" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/light/small/broken/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) +"aMH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/science/cytology) "aMI" = ( /obj/machinery/mineral/ore_redemption{ dir = 4; @@ -2040,6 +2195,17 @@ /obj/structure/sign/warning/pods/directional/north, /turf/open/floor/plating, /area/station/maintenance/department/electrical) +"aNy" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/science/xenobiology) "aNE" = ( /obj/machinery/computer/cargo{ dir = 4 @@ -2072,18 +2238,6 @@ /obj/machinery/camera/directional/west, /turf/open/floor/iron, /area/station/engineering/atmos/project) -"aNX" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/entry) "aNZ" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -2120,16 +2274,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"aOz" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/machinery/holopad, -/obj/machinery/light/floor, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/genetics) "aOX" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 6 @@ -2145,6 +2289,13 @@ }, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) +"aPp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "aPx" = ( /obj/structure/chair{ dir = 1 @@ -2169,13 +2320,6 @@ }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"aPK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "aPM" = ( /obj/structure/chair/sofa/bench/right, /obj/machinery/firealarm/directional/north, @@ -2188,11 +2332,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"aPX" = ( -/obj/machinery/holopad, -/obj/structure/cable, -/turf/open/floor/iron/smooth_large, -/area/station/science/robotics/mechbay) +"aQd" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "aQf" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2202,27 +2347,10 @@ }, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) -"aQl" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/directional/west, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/science/research) "aQm" = ( /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark/small, /area/station/security/checkpoint/customs) -"aQr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/cryo) "aQx" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/hidden, /obj/effect/turf_decal/tile/yellow, @@ -2245,6 +2373,26 @@ /obj/effect/turf_decal/siding/wideplating/dark/corner, /turf/open/floor/iron, /area/station/security) +"aQJ" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/airlock/command/glass{ + name = "Telecommunications Server Room" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "comms-entrance-south" + }, +/obj/structure/cable, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) +"aQL" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "aQX" = ( /obj/effect/turf_decal/siding/wideplating{ dir = 4 @@ -2257,17 +2405,6 @@ }, /turf/open/floor/engine, /area/station/science/cytology) -"aRa" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/hallway/secondary/exit/departure_lounge) "aRo" = ( /obj/effect/turf_decal/trimline/white/line{ dir = 4 @@ -2277,12 +2414,12 @@ }, /turf/open/floor/wood, /area/station/commons/fitness/recreation) -"aRv" = ( -/obj/machinery/camera/autoname/directional/north, +"aRw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/dorms) +/turf/open/floor/iron/chapel{ + dir = 4 + }, +/area/station/maintenance/starboard/greater) "aRx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /obj/structure/cable, @@ -2291,6 +2428,14 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"aRA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron, +/area/station/science/xenobiology) "aRC" = ( /obj/structure/table, /obj/item/flashlight/lamp/green{ @@ -2311,12 +2456,6 @@ /obj/effect/turf_decal/trimline/neutral/end, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"aRT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/newscaster/directional/west, -/obj/structure/sign/poster/official/soft_cap_pop_art/directional/north, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) "aSt" = ( /obj/effect/spawner/random/structure/closet_private, /obj/machinery/light/small/directional/north, @@ -2343,6 +2482,15 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"aSX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/broken_flooring/singular/directional/east, +/obj/structure/steam_vent, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "aTb" = ( /obj/structure/toilet{ dir = 4 @@ -2364,6 +2512,19 @@ "aTg" = ( /turf/open/floor/iron/kitchen/small, /area/station/service/kitchen) +"aTh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood/tile, +/area/station/service/bar) "aTn" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/spawner/random/maintenance, @@ -2428,6 +2589,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/engineering/main) +"aUg" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/landmark/start/cargo_technician, +/turf/open/floor/iron, +/area/station/cargo/sorting) "aUA" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2438,6 +2604,13 @@ /obj/machinery/vending/wardrobe/robo_wardrobe, /turf/open/floor/catwalk_floor/iron_white, /area/station/science/robotics/augments) +"aUH" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/smooth, +/area/station/hallway/secondary/command) "aUJ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -2450,6 +2623,24 @@ }, /turf/open/floor/stone, /area/station/command/heads_quarters/hos) +"aVa" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/science/xenobiology) +"aVu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/smooth, +/area/station/hallway/secondary/command) "aVA" = ( /obj/structure/closet/secure_closet/freezer/empty, /obj/item/food/grown/tomato{ @@ -2486,11 +2677,11 @@ }, /turf/open/floor/iron/kitchen/small, /area/station/service/kitchen) -"aVF" = ( +"aVL" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "aVT" = ( /obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior, /obj/effect/mapping_helpers/airlock/locked, @@ -2554,32 +2745,25 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/electrical) -"aWz" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "aWA" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/iron/small, /area/station/engineering/break_room) -"aWB" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"aXi" = ( -/obj/effect/decal/cleanable/dirt, +"aWV" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) +/area/station/hallway/primary/aft) +"aXy" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Freezer" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/freezerchamber) "aXC" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -2589,12 +2773,6 @@ "aXI" = ( /turf/closed/wall/r_wall, /area/station/science/lobby) -"aXT" = ( -/obj/machinery/duct, -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white/small, -/area/station/medical/storage) "aXU" = ( /obj/structure/easel, /obj/item/canvas/twentythree_twentythree, @@ -2644,34 +2822,21 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/maintenance/port/aft) -"aYJ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/rack, -/obj/item/food/grown/grapes{ - pixel_y = 4; - pixel_x = -5 - }, -/obj/item/food/grown/grapes{ - pixel_y = 4 - }, -/obj/item/food/grown/grapes{ - pixel_y = 2; - pixel_x = 5 - }, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) -"aYN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/item/radio/intercom/command/directional/north, -/obj/effect/turf_decal/siding/dark/corner, -/turf/open/floor/iron/edge{ - dir = 8 +"aYw" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 }, +/obj/item/multitool, +/obj/item/clothing/glasses/meson, +/turf/open/floor/iron/dark, /area/station/engineering/storage/tech) +"aYR" = ( +/obj/structure/broken_flooring/singular/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "aYU" = ( /obj/structure/chair/wood{ dir = 8 @@ -2703,6 +2868,19 @@ /obj/effect/turf_decal/tile/brown/opposingcorners, /turf/open/floor/iron/small, /area/station/engineering/atmos/office) +"aZq" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/storage/tech) +"aZy" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/medical/central) "aZG" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/turf_decal/siding/wood{ @@ -2712,30 +2890,12 @@ /obj/structure/table/wood, /turf/open/floor/iron/grimy, /area/station/hallway/secondary/entry) -"aZL" = ( +"aZU" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"aZS" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/command/meeting_room) -"bah" = ( -/obj/structure/cable, -/obj/machinery/keycard_auth/wall_mounted/directional/south, -/obj/machinery/pdapainter{ - pixel_y = 2 - }, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/station/command/heads_quarters/hop) +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "bat" = ( /turf/open/floor/engine/n2o, /area/station/ai_monitored/turret_protected/ai) @@ -2751,15 +2911,6 @@ /obj/structure/alien/weeds, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) -"baJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "baO" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/effect/spawner/random/entertainment/arcade{ @@ -2781,6 +2932,25 @@ /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/supermatter) +"bbL" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"bbR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/edge{ + dir = 4 + }, +/area/station/engineering/storage/tech) "bbT" = ( /obj/structure/chair/sofa/bench/left{ dir = 8 @@ -2807,13 +2977,6 @@ /obj/effect/turf_decal/stripes/end, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"bcv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/small, -/area/station/medical/medbay/lobby) "bcC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -2828,13 +2991,15 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron/cafeteria, /area/station/science/circuits) -"bcO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/stairs{ +"bdb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/area/station/science/xenobiology) +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/service/barber) "bdi" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/wood, @@ -2874,13 +3039,23 @@ }, /turf/open/floor/wood, /area/station/service/chapel) -"bey" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"beC" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Xenobiology Kill Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, /obj/structure/cable, -/turf/open/floor/iron/large, -/area/station/engineering/storage/tech) +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron, +/area/station/science/xenobiology) +"beJ" = ( +/obj/structure/bed/medical/emergency, +/obj/machinery/iv_drip, +/obj/effect/turf_decal/bot_white, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "beK" = ( /turf/open/floor/iron/smooth, /area/station/security/evidence) @@ -2902,6 +3077,15 @@ /obj/machinery/light/warm/directional/west, /turf/open/floor/iron/white, /area/station/science/cytology) +"bfl" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side, +/area/station/science/xenobiology) "bfE" = ( /obj/effect/turf_decal/siding/green/end{ dir = 1 @@ -2952,6 +3136,11 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/grimy, /area/station/service/library/private) +"bgm" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/junction/flip, +/turf/open/floor/iron/smooth, +/area/station/hallway/secondary/command) "bgn" = ( /obj/machinery/door/airlock/maintenance{ name = "Atmospherics Maintenance" @@ -2994,31 +3183,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) -"bgA" = ( -/obj/effect/turf_decal/siding/dark_blue{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"bgB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"bgE" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/red{ +"bgQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) +/turf/open/floor/iron/dark/small, +/area/station/tcommsat/server) "bho" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -3026,6 +3196,16 @@ /obj/structure/hedge, /turf/open/floor/iron/grimy, /area/station/hallway/secondary/entry) +"bhs" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) "bhv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3050,44 +3230,20 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"biB" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/table/reinforced/rglass, -/obj/item/reagent_containers/cup/glass/mug/nanotrasen{ - pixel_y = 6; - pixel_x = -7 +"bhZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, -/obj/item/storage/box/coffeepack{ - pixel_x = 8; - pixel_y = 6 - }, -/obj/item/phone{ - desc = "Supposedly a direct line to Nanotrasen Central Command. It's not even plugged in."; - pixel_x = 2; - pixel_y = -2 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/checker, -/area/station/command/bridge) -"biM" = ( -/obj/machinery/holopad, -/obj/structure/cable, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "biV" = ( /obj/effect/turf_decal/delivery, /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron, /area/station/cargo/miningfoundry) -"biZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "bja" = ( /obj/structure/railing/corner/end/flip{ dir = 8 @@ -3147,6 +3303,17 @@ "bjt" = ( /turf/open/floor/engine/vacuum, /area/station/engineering/atmos) +"bjz" = ( +/obj/effect/turf_decal/tile/blue, +/obj/machinery/light/directional/north, +/obj/structure/filingcabinet/chestdrawer{ + pixel_y = 2 + }, +/obj/machinery/status_display/evac/directional/north, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, +/area/station/command/heads_quarters/hop) "bjL" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/table, @@ -3164,58 +3331,34 @@ "bjZ" = ( /turf/open/floor/tram, /area/station/security/tram) -"bka" = ( +"bkc" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/light/floor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/structure/sign/departments/chemistry/pharmacy/directional/west, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/primary/aft) +/turf/open/floor/iron/white/small, +/area/station/science/cubicle) "bkd" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/lime, /turf/open/space/basic, /area/space/nearstation) -"bkg" = ( -/obj/effect/turf_decal/siding/thinplating_new/light{ - dir = 8 - }, -/obj/effect/landmark/event_spawn, -/obj/machinery/light/floor, -/obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/station/science/cubicle) "bkl" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"bkX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"bla" = ( +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) -"bkY" = ( +/obj/effect/landmark/start/depsec/science, +/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/machinery/requests_console/directional/west{ - department = "Chief Medical Officer's Desk"; - name = "Chief Medical Officer's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) +/turf/open/floor/iron, +/area/station/security/checkpoint/science) "blb" = ( /obj/structure/lattice, /turf/open/space/basic, @@ -3253,12 +3396,6 @@ /obj/effect/spawner/random/engineering/flashlight, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"blm" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/tcommsat/server) "blt" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer4, @@ -3271,6 +3408,16 @@ /obj/structure/closet/crate/miningcar, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"blA" = ( +/obj/item/clothing/head/cone{ + pixel_x = 6; + pixel_y = 17 + }, +/obj/structure/broken_flooring/singular/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "blC" = ( /obj/effect/turf_decal/siding/thinplating, /obj/effect/spawner/random/entertainment/arcade{ @@ -3278,36 +3425,40 @@ }, /turf/open/floor/eighties/red, /area/station/hallway/primary/central/fore) +"blF" = ( +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) +"blJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) +"blN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/service/barber) "blP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/dorms) -"bmr" = ( -/obj/machinery/telecomms/broadcaster/preset_right, +"blW" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) -"bmz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) -"bmA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/hallway/secondary/construction) +/area/station/maintenance/department/medical/central) "bmB" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /mob/living/basic/bot/medbot/autopatrol, @@ -3349,23 +3500,11 @@ /turf/open/floor/iron, /area/station/hallway/primary/central/aft) "bnd" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/storage/tech) -"bnn" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/structure/closet/firecloset, +/obj/machinery/status_display/evac/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/primary/fore) +/area/station/commons/dorms) "bno" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3379,12 +3518,6 @@ /obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"bnr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/alien/weeds, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "bnz" = ( /obj/machinery/light_switch/directional/south, /obj/structure/cable, @@ -3422,13 +3555,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/engineering) -"bnX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/herringbone, -/area/station/commons/dorms) "bob" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, @@ -3508,6 +3634,11 @@ }, /turf/open/floor/plating, /area/station/service/janitor) +"boY" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "bpe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, @@ -3518,6 +3649,24 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"bpk" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 10 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/tank_dispenser/oxygen{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 4 + }, +/area/station/ai_monitored/command/storage/eva) "bpl" = ( /obj/machinery/flasher/directional/north{ id = "IsolationFlash" @@ -3525,33 +3674,32 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white/small, /area/station/security/execution/education) -"bpo" = ( -/obj/structure/disposalpipe/segment{ +"bpO" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Construction Hatch" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/head/cone{ - pixel_x = 6; - pixel_y = -8 - }, -/obj/effect/decal/cleanable/blood, -/obj/machinery/light/broken/directional/north, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"bpI" = ( -/obj/structure/table, -/obj/item/storage/box/donkpockets, -/obj/machinery/light/small/directional/west, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/cafeteria, -/area/station/science/breakroom) "bpS" = ( /obj/item/kirbyplants/random/fullysynthetic, /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/medical/virology) +"bpW" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/coroner, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "bpY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3575,6 +3723,17 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/security/prison/safe) +"bqi" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/trunk, +/obj/machinery/firealarm/directional/west, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/blue{ + dir = 9 + }, +/turf/open/floor/iron/white/small, +/area/station/command/heads_quarters/cmo) "bqm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, @@ -3590,14 +3749,6 @@ /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"bqu" = ( -/obj/structure/table/reinforced, -/obj/machinery/light_switch/directional/west, -/obj/item/crowbar, -/obj/item/wrench, -/obj/item/pai_card, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "bqx" = ( /obj/structure/cable, /turf/open/floor/iron/dark, @@ -3632,6 +3783,12 @@ }, /turf/open/floor/iron/white/small, /area/station/medical/virology) +"bqM" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/structure/cable, +/turf/open/floor/iron/small, +/area/station/engineering/break_room) "bqR" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/closet/crate/mod, @@ -3646,6 +3803,17 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark/small, /area/station/service/chapel/storage) +"brk" = ( +/obj/structure/rack, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/obj/machinery/firealarm/directional/north, +/obj/item/melee/chainofcommand, +/obj/item/binoculars, +/turf/open/floor/iron/smooth, +/area/station/command/bridge) "bro" = ( /obj/structure/frame/machine, /turf/open/floor/tram, @@ -3704,6 +3872,13 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"brQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/iron/white/small, +/area/station/medical/psychology) "brZ" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -3728,14 +3903,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"bsv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "bsy" = ( /obj/machinery/camera/directional/east{ c_tag = "MiniSat Exterior - Fore Port"; @@ -3776,6 +3943,13 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"btA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "btG" = ( /obj/structure/rack, /obj/effect/turf_decal/delivery/white, @@ -3830,33 +4004,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security) -"buk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"buA" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/science/xenobiology) "buI" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -3880,6 +4027,14 @@ /obj/machinery/bluespace_vendor/directional/south, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) +"buK" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/stairs{ + dir = 8 + }, +/area/station/command/bridge) "buU" = ( /obj/structure/table, /obj/item/stack/sheet/iron/five, @@ -3891,12 +4046,21 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"buV" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ +"buZ" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"bvd" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/siding/corner{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/science/cytology) "bvh" = ( /obj/structure/chair/sofa/bench/right{ dir = 8 @@ -3919,27 +4083,32 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white/small, /area/station/security/warden) -"bvP" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, -/obj/machinery/door/airlock{ - name = "Maintenance" +"bvX" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/landmark/start/roboticist, +/obj/machinery/conveyor_switch/oneway{ + id = "fab1"; + pixel_x = 10; + pixel_y = 11 }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "bwz" = ( /obj/effect/spawner/random/entertainment/arcade, /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"bwT" = ( +"bwU" = ( /obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/hallway/secondary/entry) +/area/station/cargo/office) "bwW" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/siding/yellow{ @@ -3967,31 +4136,15 @@ /obj/item/cigarette/rollie, /turf/open/floor/iron/dark/smooth_large, /area/station/maintenance/central/lesser) -"bxl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/weather/snow, -/obj/machinery/food_cart, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"bxB" = ( +"bxS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/diagonal, -/area/station/ai_monitored/command/storage/eva) -"bxI" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/science/robotics, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 6 - }, -/area/station/science/lower) +/obj/machinery/light/directional/south, +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/engine_access, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "bxT" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/navigate_destination/dockescpod, @@ -4001,21 +4154,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"bxY" = ( -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/obj/machinery/vending/wardrobe/sec_wardrobe, -/turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs) -"byq" = ( +"byk" = ( +/obj/effect/turf_decal/siding/thinplating_new/light, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/command/bridge) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/smooth_large, +/area/station/science/robotics/mechbay) "byt" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, @@ -4031,21 +4175,6 @@ }, /turf/open/floor/iron, /area/station/security/brig/entrance) -"byx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/machinery/status_display/evac/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/dock) "byD" = ( /obj/effect/turf_decal/stripes/asteroid/end, /turf/open/floor/circuit/green, @@ -4056,15 +4185,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) -"byR" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/disposalpipe/segment, -/obj/item/radio/intercom/directional/west, -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "byU" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt, @@ -4081,6 +4201,15 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"bzi" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "bzj" = ( /obj/machinery/rnd/production/techfab/department/service, /obj/effect/turf_decal/tile/neutral/opposingcorners{ @@ -4092,13 +4221,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/small, /area/station/hallway/secondary/service) -"bzm" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/science/xenobiology) "bzF" = ( /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4132,25 +4254,13 @@ /obj/effect/spawner/random/trash, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"bAI" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/mug{ - pixel_x = 6; - pixel_y = 4 +"bBe" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 8 }, -/obj/item/storage/fancy/cigarettes/cigpack_shadyjims{ - pixel_x = -6; - pixel_y = 3 - }, -/obj/effect/spawner/random/entertainment/lighter, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) -"bAT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) +/obj/structure/cable, +/turf/open/floor/iron/smooth_large, +/area/station/science/robotics/mechbay) "bBh" = ( /obj/effect/turf_decal/weather/dirt{ dir = 1 @@ -4177,13 +4287,6 @@ /obj/machinery/door/window/brigdoor/right/directional/north, /turf/open/floor/iron/dark, /area/station/security/processing) -"bBr" = ( -/obj/item/radio/intercom/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/cubicle) "bBL" = ( /obj/effect/landmark/start/cook, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4231,6 +4334,14 @@ dir = 1 }, /area/station/hallway/secondary/construction) +"bCB" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/siding/green/corner{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "bCG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -4247,15 +4358,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) -"bCQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/lower) "bDg" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1 @@ -4283,42 +4385,12 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"bDj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 9 - }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/dark, -/area/station/medical/cryo) "bDq" = ( /obj/structure/table, /obj/item/shovel, /obj/structure/alien/weeds, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) -"bDr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"bDD" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/green{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) "bDN" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/brown/half/contrasted{ @@ -4326,13 +4398,6 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"bDQ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/light/no_nightlight/directional/north, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) "bEd" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/mapping_helpers/broken_floor, @@ -4356,6 +4421,18 @@ }, /turf/closed/wall, /area/station/hallway/secondary/entry) +"bEA" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) "bEB" = ( /obj/machinery/vending/cigarette, /obj/structure/extinguisher_cabinet/directional/north, @@ -4385,6 +4462,15 @@ dir = 1 }, /area/station/hallway/secondary/entry) +"bER" = ( +/obj/structure/broken_flooring/pile/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/obj/structure/alien/weeds, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "bEW" = ( /obj/effect/spawner/structure/window/reinforced/shuttle, /turf/open/floor/plating, @@ -4397,12 +4483,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"bFt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/dorms) "bFw" = ( /obj/machinery/telecomms/server/presets/science, /turf/open/floor/circuit, @@ -4424,24 +4504,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"bFU" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Research Wing" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/hallway/primary/starboard) -"bFW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "bGe" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -4452,20 +4514,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/science/circuits) -"bGi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) -"bGk" = ( -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/siding/dark_blue/corner{ - dir = 4 - }, -/obj/structure/mannequin/skeleton, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "bGn" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -4473,6 +4521,18 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/construction) +"bGp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + location = "Research" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "bGq" = ( /obj/machinery/porta_turret/ai, /obj/machinery/computer/security/telescreen/minisat/directional/east, @@ -4509,6 +4569,20 @@ /obj/machinery/chem_heater/withbuffer, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) +"bHg" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "bHp" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, @@ -4548,13 +4622,6 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron, /area/station/science/ordnance/testlab) -"bHF" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "bHU" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/camera/autoname/directional/south, @@ -4582,12 +4649,23 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) +"bIz" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Xenobiology Lab - Test Chamber"; + network = list("ss13","rd","xeno") + }, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "bIJ" = ( /obj/effect/turf_decal/weather/dirt{ dir = 4 }, /turf/open/floor/grass, /area/station/service/chapel) +"bIM" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "bIN" = ( /obj/structure/chair/stool/bar/directional/north, /obj/effect/turf_decal/siding/wood{ @@ -4602,6 +4680,21 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/fore/greater) +"bJp" = ( +/obj/machinery/door/airlock{ + name = "Law Office Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/lawyer, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) +"bJw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/broken_flooring/singular/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) "bJx" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -4616,6 +4709,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"bJQ" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/structure/filingcabinet/chestdrawer, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) "bJZ" = ( /obj/structure/chair/stool/directional/south, /turf/open/floor/iron, @@ -4625,6 +4727,13 @@ /obj/machinery/incident_display/tram/directional/north, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"bKk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "bKl" = ( /obj/structure/railing/corner{ dir = 8 @@ -4632,6 +4741,19 @@ /obj/effect/turf_decal/siding/wideplating, /turf/open/floor/wood, /area/station/engineering/main) +"bKp" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) +"bKq" = ( +/obj/machinery/photocopier, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "bKv" = ( /obj/structure/flora/tree/jungle/style_4, /obj/effect/turf_decal/weather/dirt, @@ -4685,6 +4807,25 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"bKW" = ( +/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/security/general, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) +"bLh" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "bLp" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 @@ -4700,6 +4841,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/cargo/office) +"bLK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden, +/turf/open/floor/wood/tile, +/area/station/tcommsat/server) "bLS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -4717,40 +4869,17 @@ /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /turf/open/floor/plating, /area/station/service/library) -"bLT" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "bMc" = ( /obj/structure/table, /obj/item/rcl/pre_loaded, /obj/machinery/light/small/directional/south, /turf/open/floor/iron, /area/station/commons/storage/art) -"bMn" = ( -/obj/effect/turf_decal/weather/snow, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 4 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"bMU" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/command_all, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) +"bMH" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/hallway/secondary/dock) "bMV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -4760,12 +4889,16 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"bMW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/iv_drip, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/medical/virology) +"bNb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/public/glass{ + name = "Lockers" + }, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/commons/fitness/locker_room) "bNd" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/modular_computer/preset/id{ @@ -4791,6 +4924,14 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"bNG" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/fore) "bNL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4800,41 +4941,39 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"bNP" = ( -/obj/structure/broken_flooring/pile/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/structure/alien/weeds, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) -"bNQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "bOa" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/frame/machine, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/electrical) +"bOb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/vehicle/ridden/wheelchair{ + dir = 4 + }, +/obj/structure/sign/departments/psychology/directional/south, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/lobby) +"bOf" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/turf_decal/bot_white, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"bOo" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/service/lawoffice) "bOG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/closed/wall, /area/station/service/kitchen) -"bON" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) "bOR" = ( /obj/machinery/light/small/directional/west, /obj/structure/flora/bush/flowers_yw, @@ -4872,10 +5011,32 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/small, /area/station/hallway/secondary/service) +"bPO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/status_display/ai/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "bPU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, /turf/open/floor/iron, /area/station/engineering/atmos) +"bPY" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8 + }, +/obj/effect/mapping_helpers/mail_sorting/science/xenobiology, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/light/cold/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side, +/area/station/science/lower) "bQc" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -4891,6 +5052,11 @@ /obj/structure/flora/grass/jungle/b/style_2, /turf/open/misc/dirt/station, /area/station/service/chapel) +"bQh" = ( +/obj/effect/spawner/random/trash, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/aft) "bQi" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, @@ -4903,6 +5069,11 @@ /obj/machinery/computer/records/security, /turf/open/floor/wood/tile, /area/station/command/bridge) +"bQs" = ( +/obj/machinery/holopad, +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/iron, +/area/station/security/courtroom) "bQy" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4914,6 +5085,31 @@ /obj/machinery/photobooth/security, /turf/open/floor/iron, /area/station/security/execution/transfer) +"bQQ" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) +"bQX" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/tcommsat/server) +"bRe" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/siding{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/lobby) "bRf" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/spawner/random/structure/steam_vent, @@ -4939,13 +5135,6 @@ /obj/structure/alien/weeds, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"bRr" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/turf_decal/siding/brown, -/turf/open/floor/iron/smooth, -/area/station/maintenance/port/aft) "bRt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -4954,6 +5143,11 @@ "bRA" = ( /turf/open/floor/catwalk_floor/iron_dark, /area/station/cargo/lobby) +"bRG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth_half, +/area/station/hallway/primary/central/fore) "bRK" = ( /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 4 @@ -4995,6 +5189,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/prison) +"bSL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/iron/grimy, +/area/station/hallway/secondary/entry) "bSX" = ( /obj/machinery/flasher/directional/east{ id = "AI"; @@ -5019,16 +5220,36 @@ }, /turf/open/floor/iron/textured_half, /area/station/cargo/miningoffice) +"bTG" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/cyborg, +/obj/machinery/turretid{ + control_area = "/area/station/ai_monitored/turret_protected/ai_upload"; + icon_state = "control_stun"; + name = "AI Upload Turret Control"; + pixel_y = -28 + }, +/obj/machinery/status_display/ai/directional/west, +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload_foyer) +"bTH" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Testing Chamber" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "bTI" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/incinerator_input, /turf/open/floor/engine/vacuum, /area/station/maintenance/disposal/incinerator) -"bUq" = ( -/obj/structure/cable, -/obj/item/reagent_containers/pill/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "bUr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/blue{ @@ -5037,15 +5258,6 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"bUD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "bUE" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -5075,6 +5287,21 @@ /obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plating, /area/station/science/ordnance/storage) +"bVE" = ( +/obj/structure/broken_flooring/corner/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"bVH" = ( +/obj/machinery/firealarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "bVI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5096,6 +5323,13 @@ /obj/effect/landmark/start/head_of_security, /turf/open/floor/iron/small, /area/station/security/office) +"bVR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "bWh" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -5137,6 +5371,14 @@ }, /turf/open/space/basic, /area/space/nearstation) +"bWn" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/sign/plaques/kiddie{ + pixel_y = -4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload) "bWp" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -5151,6 +5393,22 @@ /obj/machinery/chem_heater/withbuffer, /turf/open/floor/iron, /area/station/science/xenobiology) +"bWD" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) +"bWM" = ( +/obj/machinery/door/airlock{ + name = "Abandoned Lab" + }, +/obj/structure/barricade/wooden, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/turf/open/floor/plating, +/area/station/science/xenobiology) "bXi" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5163,26 +5421,19 @@ dir = 8 }, /area/station/security/brig/entrance) +"bXn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "bXu" = ( /obj/item/kirbyplants/random, /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark, /area/station/medical/cryo) -"bXG" = ( -/obj/machinery/light_switch/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/robotics/augments) -"bXH" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/closet/crate/bin, -/turf/open/floor/iron/white, -/area/station/medical/virology) "bXO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5191,13 +5442,6 @@ }, /turf/open/floor/iron/white/small, /area/station/medical/storage) -"bXR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/table/wood, -/turf/open/floor/stone, -/area/station/service/bar) "bYf" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/turf_decal/stripes/line{ @@ -5209,6 +5453,11 @@ /obj/structure/flora/bush/flowers_yw/style_3, /turf/open/floor/grass, /area/station/service/chapel) +"bYj" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/iron/dark, +/area/station/science/server) "bYk" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/white/small, @@ -5222,25 +5471,6 @@ dir = 1 }, /area/station/engineering/hallway) -"bYo" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1 - }, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/science/xenobiology) -"bYC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark/small, -/area/station/tcommsat/server) "bYK" = ( /obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, @@ -5267,22 +5497,19 @@ }, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) +"bZp" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "bZs" = ( /obj/structure/table, /obj/item/reagent_containers/cup/glass/drinkingglass, /obj/item/flashlight/flare/candle/infinite, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"bZt" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden, -/turf/open/floor/wood/tile, -/area/station/tcommsat/server) "bZy" = ( /obj/effect/landmark/start/ai/secondary, /obj/item/radio/intercom/directional/west{ @@ -5306,15 +5533,6 @@ }, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) -"bZz" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) "bZN" = ( /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 4 @@ -5327,6 +5545,20 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"bZY" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/sign/poster/greenscreen/directional/south, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/captain/private) +"caa" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side, +/area/station/science/xenobiology) "cam" = ( /obj/machinery/flasher/directional/east{ id = "AI"; @@ -5356,30 +5588,33 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"caG" = ( -/obj/effect/turf_decal/tile/blue{ +"caO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ dir = 8 }, -/obj/structure/table, -/obj/item/reagent_containers/cup/beaker/large{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/medkit{ - pixel_y = -2 - }, /turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) -"caI" = ( -/obj/effect/decal/cleanable/glass, -/obj/structure/cable, -/turf/open/floor/eighties, -/area/station/service/abandoned_gambling_den/gaming) -"caK" = ( -/obj/structure/closet/secure_closet/personal, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) +/area/station/hallway/primary/central/fore) +"caS" = ( +/obj/structure/table/bronze, +/obj/item/food/grown/cannabis{ + pixel_x = -11 + }, +/obj/item/food/grown/cannabis{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/machinery/light/small/directional/north, +/obj/machinery/status_display/ai/directional/north, +/turf/open/floor/iron/dark/small, +/area/station/command/heads_quarters/captain/private) "caW" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -5445,12 +5680,14 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron/smooth, /area/station/command/heads_quarters/qm) -"cbH" = ( -/obj/item/kirbyplants/random, -/obj/machinery/power/apc/auto_name/directional/south, +"cbL" = ( /obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/maintenance/solars/starboard/fore) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/floor, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "cbO" = ( /obj/structure/chair{ dir = 1 @@ -5484,6 +5721,11 @@ }, /turf/open/floor/iron, /area/station/security/execution/transfer) +"ccv" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/white/side, +/area/station/science/xenobiology) "ccA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5513,10 +5755,6 @@ /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"cdg" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) "cdn" = ( /obj/machinery/telecomms/server/presets/medical, /turf/open/floor/circuit, @@ -5531,6 +5769,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"cdx" = ( +/obj/machinery/power/apc/auto_name/directional/west{ + areastring = "/area/station/science/ordnance/freezerchamber" + }, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "cdz" = ( /obj/effect/turf_decal/tile/yellow, /obj/machinery/light/cold/dim/directional/west, @@ -5556,17 +5802,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) -"cea" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/poddoor/shutters{ - dir = 1; - id = "aibridge" - }, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) "ceD" = ( /obj/machinery/door/airlock/grunge{ name = "Janitorial Closet" @@ -5610,6 +5845,30 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"ceY" = ( +/obj/structure/table/glass, +/obj/machinery/fax{ + fax_name = "Chief Medical Officer's Office"; + name = "Chief Medical Officer's Fax Machine"; + pixel_y = 13 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/button/door/directional/south{ + id = "cmoprivacy"; + name = "CMO Privacy Shutters"; + pixel_x = -6; + req_access = list("cmo") + }, +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/button/door/directional/south{ + id = "medlock"; + name = "Medbay Lockdown Control"; + pixel_x = 6; + req_access = list("medical") + }, +/obj/machinery/keycard_auth/wall_mounted/directional/east, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/cmo) "cfa" = ( /obj/structure/closet/lasertag/red, /obj/effect/turf_decal/stripes/red/line{ @@ -5644,27 +5903,29 @@ /obj/effect/spawner/structure/window/survival_pod, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/ai) -"cfq" = ( -/obj/machinery/door/poddoor/shutters{ - id = "evashutter"; - name = "E.V.A. Storage Shutter"; - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/iron/smooth_half{ +"cfH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/area/station/ai_monitored/command/storage/eva) -"cfy" = ( -/obj/machinery/door/airlock/glass, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) +"cfZ" = ( +/obj/machinery/telecomms/processor/preset_one, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/circuit, +/area/station/tcommsat/server) +"cgi" = ( +/obj/structure/flora/bush/sparsegrass{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "cgs" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral/opposingcorners{ @@ -5677,14 +5938,6 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/hallway/secondary/service) -"cgt" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "cgy" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 4 @@ -5702,6 +5955,10 @@ "cgM" = ( /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) +"cgT" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/department/science/xenobiology) "cgV" = ( /obj/effect/turf_decal/weather/dirt{ dir = 9 @@ -5732,6 +5989,14 @@ }, /turf/open/floor/iron, /area/station/security/brig/entrance) +"chk" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/large/style_2, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "chp" = ( /obj/structure/cable, /turf/closed/wall/r_wall, @@ -5764,6 +6029,17 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/port/aft) +"chT" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "chU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5773,13 +6049,17 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/security) -"cib" = ( -/obj/effect/turf_decal/weather/dirt{ +"chZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/dark/corner{ dir = 1 }, -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/command/bridge) "cig" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -5796,17 +6076,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/wood/parquet, /area/station/service/library) -"cip" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/effect/landmark/start/depsec/science, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/checkpoint/science) "cis" = ( /obj/machinery/atmospherics/pipe/smart/simple/general/visible{ dir = 9 @@ -5822,15 +6091,40 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"ciR" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 9 +"ciw" = ( +/obj/machinery/atmospherics/components/binary/volume_pump{ + dir = 8 }, -/obj/effect/turf_decal/weather/dirt{ - dir = 5 +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"ciB" = ( +/obj/structure/table/glass, +/obj/machinery/reagentgrinder{ + pixel_x = -5; + pixel_y = 14 }, -/turf/open/floor/plating/rust, -/area/station/medical/morgue) +/obj/item/reagent_containers/cup/beaker/large{ + pixel_x = 16; + pixel_y = 14 + }, +/obj/item/reagent_containers/cup/beaker{ + pixel_x = 12; + pixel_y = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/science/cytology) +"ciI" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Research Wing" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/hallway/primary/starboard) "ciT" = ( /obj/structure/table/glass, /obj/item/radio/intercom/directional/east, @@ -5879,6 +6173,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos) +"cjQ" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "cjR" = ( /obj/structure/disposalpipe/segment, /obj/structure/plasticflaps/opaque, @@ -5892,14 +6194,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/engineering/atmos/pumproom) -"cjY" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "ckb" = ( /obj/structure/chair/comfy/beige{ dir = 4 @@ -5926,6 +6220,10 @@ /obj/structure/sign/departments/engineering/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"ckt" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "cku" = ( /obj/structure/barricade/wooden/crude, /turf/open/floor/noslip, @@ -5974,11 +6272,6 @@ /obj/structure/chair/stool/directional/north, /turf/open/floor/iron/kitchen/small, /area/station/maintenance/aft) -"clf" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/lawoffice) "cll" = ( /obj/machinery/door/window/right/directional/west{ name = "Fitness Ring" @@ -5986,31 +6279,16 @@ /obj/structure/window/spawner/directional/north, /turf/open/floor/iron/dark, /area/station/commons/dorms) -"clq" = ( +"clm" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, /obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"clt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/siding/blue, -/turf/open/floor/iron/white/small, -/area/station/command/heads_quarters/cmo) -"clH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage/tech) +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "clV" = ( /obj/structure/table, /obj/effect/mapping_helpers/broken_floor, @@ -6023,18 +6301,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/smooth, /area/station/command/gateway) -"clZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"cmd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) "cmf" = ( /turf/closed/wall/rust, /area/station/maintenance/department/engine/atmos) @@ -6055,40 +6321,11 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/storage/tcomms) -"cmw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "cmz" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"cmA" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - dir = 4 - }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) -"cmD" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "cmX" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 8 @@ -6098,15 +6335,22 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/security/tram) -"cnn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"cnb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) +"cns" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 5 }, -/turf/open/floor/iron/small, -/area/station/service/barber) +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "cnC" = ( /obj/structure/lattice, /obj/structure/window/reinforced/spawner/directional/west, @@ -6116,6 +6360,26 @@ /obj/machinery/suit_storage_unit/rd, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/rd) +"cnJ" = ( +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/siding/dark_blue/corner{ + dir = 4 + }, +/obj/structure/mannequin/skeleton, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"cnK" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "cob" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -6135,6 +6399,14 @@ }, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) +"col" = ( +/obj/effect/landmark/start/coroner, +/obj/machinery/holopad, +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 2 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "cop" = ( /obj/machinery/portable_atmospherics/canister/anesthetic_mix, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -6150,12 +6422,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /turf/closed/wall/r_wall, /area/station/engineering/atmos) -"cov" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/science/lobby) "cow" = ( /turf/closed/wall, /area/station/engineering/lobby) @@ -6169,20 +6435,18 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"cpA" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +"cpa" = ( +/obj/machinery/door/window/left/directional/east{ + name = "Medical Supplies"; + req_access = list("medical") + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/obj/effect/turf_decal/siding/blue{ dir = 4 }, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "AISat Maintenance" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/any/command/maintenance, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat/maint) +/turf/open/floor/iron/white/small, +/area/station/medical/storage) "cpE" = ( /obj/structure/closet/emcloset, /turf/open/floor/iron, @@ -6195,6 +6459,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"cpJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/transit_tube/horizontal, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "cpP" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -6202,6 +6472,10 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"cpQ" = ( +/obj/effect/spawner/random/trash/caution_sign, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "cpT" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/wood, @@ -6209,16 +6483,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/hop) -"cpU" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Cubicle" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/research) "cqa" = ( /obj/machinery/status_display/ai/directional/west, /turf/open/floor/iron, @@ -6232,11 +6496,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) -"cqn" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/side, -/area/station/science/xenobiology) "cqr" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/chapel{ @@ -6294,6 +6553,14 @@ }, /turf/open/floor/plating, /area/station/service/janitor) +"cqW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "cri" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6329,20 +6596,37 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"crE" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/poddoor/shutters{ - dir = 1; - id = "aibridge" - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) "crJ" = ( /obj/effect/turf_decal/siding/red{ dir = 6 }, /turf/open/floor/iron/small, /area/station/security/brig) +"crN" = ( +/obj/effect/mapping_helpers/airlock/access/all/medical/coroner, +/obj/machinery/door/airlock/medical/glass, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"crQ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/autoname/motion/directional/south, +/turf/open/floor/iron/dark/diagonal, +/area/station/ai_monitored/command/storage/eva) "csj" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -6361,6 +6645,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"csp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/mineral/titanium, +/area/station/command/heads_quarters/ce) "css" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10 @@ -6411,6 +6701,14 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat/foyer) +"csU" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "ctb" = ( /obj/effect/turf_decal/siding/yellow{ dir = 6 @@ -6422,6 +6720,20 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) +"ctg" = ( +/obj/machinery/computer/operating, +/obj/machinery/requests_console/auto_name/directional/north, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"cth" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "ctl" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6429,13 +6741,19 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron, /area/station/security/prison/work) -"ctu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/girder, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +"cto" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/science/xenobiology) "ctH" = ( /turf/open/floor/iron/herringbone, /area/station/commons/dorms) @@ -6462,10 +6780,25 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron, /area/station/security/prison/rec) -"cuw" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/closed/wall, -/area/station/command/corporate_showroom) +"cuz" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) +"cuK" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "cuZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6473,15 +6806,6 @@ /obj/effect/turf_decal/siding/thinplating_new, /turf/open/floor/iron/smooth, /area/station/cargo/miningfoundry) -"cvc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/obj/structure/table, -/obj/item/stack/sheet/mineral/plasma/five, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "cvk" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/spawner/random/maintenance, @@ -6558,6 +6882,20 @@ }, /turf/open/floor/wood, /area/station/engineering/atmos/storage) +"cws" = ( +/obj/structure/table/wood, +/obj/item/hand_labeler_refill{ + pixel_x = -4; + pixel_y = 26 + }, +/obj/structure/sign/poster/official/random/directional/south, +/obj/machinery/fax{ + fax_name = "Quartermaster's Office"; + name = "Quartermaster's Fax Machine"; + pixel_y = 7 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/qm) "cwt" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -6574,15 +6912,6 @@ /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/tram) -"cwS" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "cwX" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "aigas" @@ -6590,16 +6919,14 @@ /obj/effect/spawner/structure/window/survival_pod, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) -"cxy" = ( -/obj/structure/disposalpipe/junction{ - dir = 1 +"cwZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/broken_flooring/singular/directional/east, +/obj/structure/sign/departments/rndserver/directional/south, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/hallway/secondary/dock) +/turf/open/floor/iron/white/side, +/area/station/science/research) "cxz" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -6607,25 +6934,6 @@ /obj/effect/turf_decal/siding/wood/corner, /turf/open/floor/wood, /area/station/service/chapel) -"cxO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/cubicle) -"cyf" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/item/kirbyplants/random, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "cyk" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, @@ -6720,15 +7028,15 @@ dir = 8 }, /area/station/service/janitor) -"cAb" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"czH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/lower) +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "cAd" = ( /obj/structure/filingcabinet/chestdrawer, /obj/item/radio/intercom/directional/south, @@ -6745,19 +7053,6 @@ }, /turf/open/floor/iron/white/small, /area/station/medical/surgery/theatre) -"cAl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood/tile, -/area/station/service/bar) "cAm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/box/corners{ @@ -6768,23 +7063,17 @@ }, /turf/open/floor/engine, /area/station/science/explab) -"cAr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +"cAu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"cAt" = ( /obj/machinery/door/poddoor/shutters{ - dir = 8; - id = "mechbay"; - name = "Mech Bay Shutters" + dir = 1; + id = "aibridge" }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/science/robotics/mechbay) +/obj/effect/spawner/random/structure/grille, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "cAv" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 4 @@ -6812,13 +7101,6 @@ /obj/machinery/meter, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"cBu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/junction/flip, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "cBw" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/structure/filingcabinet/chestdrawer, @@ -6830,22 +7112,6 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) -"cBA" = ( -/obj/machinery/door/airlock/command/glass{ - name = "E.V.A. Storage" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/eva, -/obj/effect/turf_decal/stripes/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/ai_monitored/command/storage/eva) "cCb" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line{ @@ -6862,17 +7128,9 @@ /turf/open/floor/iron/white, /area/station/science/cytology) "cCl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/primary/central/fore) +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "cCv" = ( /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/siding/wideplating_new/terracotta, @@ -6886,6 +7144,14 @@ }, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"cCz" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 4 + }, +/area/station/command/heads_quarters/hop) "cCC" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -6910,12 +7176,6 @@ }, /turf/open/misc/asteroid/airless, /area/space/nearstation) -"cCK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "cCM" = ( /obj/structure/cable, /obj/structure/sink/kitchen/directional/east, @@ -6927,6 +7187,14 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) +"cCR" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "cCV" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6957,6 +7225,10 @@ /obj/effect/landmark/start/head_of_security, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) +"cDf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "cDt" = ( /obj/structure/chair/comfy/shuttle, /obj/structure/transport/linear/tram, @@ -7021,6 +7293,14 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos/pumproom) +"cEh" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "cEn" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, @@ -7039,6 +7319,36 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"cEr" = ( +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/machinery/door/airlock/freezer{ + name = "Freezer" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 1 + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen) +"cEs" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"cEB" = ( +/obj/machinery/door/airlock{ + name = "Sec Post Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "cED" = ( /obj/structure/railing/corner, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -7093,16 +7403,6 @@ }, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) -"cEX" = ( -/obj/effect/turf_decal/siding/thinplating_new/terracotta{ - dir = 1 - }, -/obj/machinery/modular_computer/preset/engineering{ - dir = 1 - }, -/obj/effect/turf_decal/siding/yellow, -/turf/open/floor/wood/tile, -/area/station/command/bridge) "cFg" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -7115,12 +7415,22 @@ }, /turf/open/floor/iron, /area/station/security) -"cFo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"cFj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/alien/weeds, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) +"cFl" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ dir = 1 }, -/turf/open/floor/iron/white/side, -/area/station/science/research) +/turf/open/floor/plating, +/area/station/science/ordnance/freezerchamber) "cFq" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -7148,18 +7458,18 @@ }, /turf/open/floor/iron/small, /area/station/maintenance/port/lesser) -"cFY" = ( -/obj/structure/hedge, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "cGj" = ( /turf/closed/wall/r_wall, /area/station/security/execution/education) +"cGl" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "cGG" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 @@ -7215,27 +7525,6 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/small, /area/station/engineering/atmos/pumproom) -"cHy" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/green{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) -"cHC" = ( -/obj/structure/chair{ - pixel_y = -2 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/lawyer, -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) "cHD" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ dir = 4 @@ -7310,6 +7599,17 @@ /obj/structure/sign/warning/pods/directional/east, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"cJr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/effect/landmark/start/clown, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "cJv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7325,6 +7625,16 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/security/execution/transfer) +"cJF" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/station/science/explab) "cJL" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -7338,6 +7648,15 @@ dir = 4 }, /area/station/science/xenobiology) +"cJM" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 2 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "cJT" = ( /obj/effect/turf_decal/bot_white, /obj/structure/closet/crate{ @@ -7377,24 +7696,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"cKy" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/atmospheric_sanity/ignore_area, -/obj/machinery/camera/autoname/motion/directional/west, -/turf/open/floor/iron, -/area/station/engineering/hallway) -"cKV" = ( -/obj/machinery/light/floor, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/siding/dark{ +"cKL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/bridge) +/turf/open/floor/iron/dark/small, +/area/station/tcommsat/server) "cLa" = ( /obj/machinery/portable_atmospherics/canister, /turf/open/floor/plating, @@ -7444,22 +7751,6 @@ }, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) -"cLS" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/table/glass, -/obj/item/stack/sheet/mineral/plasma/thirty{ - pixel_y = 4 - }, -/obj/item/reagent_containers/dropper{ - pixel_y = -3 - }, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) "cLW" = ( /mob/living/basic/mouse/brown/tom, /obj/item/radio/intercom/prison/directional/south, @@ -7554,13 +7845,6 @@ /obj/machinery/light/very_dim/directional/west, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) -"cNT" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_freezer_chamber_input, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) "cNZ" = ( /obj/effect/turf_decal/box/red/corners{ dir = 8 @@ -7597,24 +7881,6 @@ /obj/structure/table, /turf/open/floor/iron, /area/station/cargo/sorting) -"cOC" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door/directional/south{ - id = "XenoPens"; - name = "Xenobiology Shutters"; - req_access = list("xenobiology") - }, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/science/xenobiology) "cOI" = ( /obj/machinery/atmospherics/components/binary/volume_pump/layer2{ dir = 1 @@ -7646,19 +7912,16 @@ /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"cPc" = ( +/obj/structure/cable, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "cPe" = ( /obj/structure/spider/stickyweb, /turf/open/floor/iron/small, /area/station/maintenance/department/engine/atmos) -"cPh" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/science/auxlab/firing_range) "cPj" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -7673,6 +7936,11 @@ /obj/structure/urinal/directional/east, /turf/open/floor/iron/white/small, /area/station/commons/toilet/restrooms) +"cPu" = ( +/obj/machinery/telecomms/message_server/preset, +/obj/structure/cable, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "cPD" = ( /obj/effect/turf_decal/stripes/end{ dir = 4 @@ -7706,11 +7974,20 @@ }, /turf/closed/wall/r_wall, /area/station/command/heads_quarters/ce) +"cPZ" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/turf/open/floor/iron/white/small, +/area/station/medical/storage) "cQo" = ( /obj/structure/closet/firecloset, /obj/machinery/light/small/dim/directional/west, /turf/open/floor/iron/dark/small, /area/station/maintenance/aft) +"cQt" = ( +/turf/open/floor/circuit/telecomms/mainframe, +/area/station/science/xenobiology) "cQG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -7720,12 +7997,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"cQN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table/wood, -/turf/open/floor/stone, -/area/station/service/bar) "cQP" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -7737,25 +8008,26 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"cRc" = ( +"cQQ" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/atmospherics/pipe/smart/simple/general/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/xenobiology) +"cRe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/sign/departments/court/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "cRm" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"cRn" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/structure/window, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/lobby) "cRo" = ( /obj/machinery/door/airlock/atmos/glass{ name = "HFR Chamber" @@ -7861,18 +8133,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) -"cSy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/neutral/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) "cSC" = ( /turf/closed/wall, /area/station/commons/vacant_room/office) @@ -7880,13 +8140,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"cTp" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) "cTw" = ( /obj/structure/table/wood, /obj/machinery/light/small/directional/south, @@ -7897,41 +8150,10 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/theatre) -"cTC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"cTE" = ( -/obj/machinery/door/airlock{ - name = "Abandoned Brewery" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "cTK" = ( /obj/structure/closet/firecloset, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/engineering/break_room) -"cTP" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) "cTX" = ( /obj/machinery/computer/crew{ dir = 4 @@ -7964,6 +8186,25 @@ }, /turf/closed/wall, /area/station/service/library) +"cUh" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"cUA" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark/diagonal, +/area/station/ai_monitored/command/storage/eva) "cUB" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/structure/chair/stool/bar/directional/south, @@ -7983,6 +8224,12 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/engineering) +"cUP" = ( +/obj/structure/table, +/obj/item/screwdriver, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) "cUU" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 @@ -8064,6 +8311,13 @@ dir = 1 }, /area/station/science/lower) +"cWd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8 + }, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "cWh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8071,34 +8325,34 @@ dir = 4 }, /area/station/maintenance/fore/lesser) -"cWm" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 4; - name = "killroom vent" +"cWj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 }, -/turf/open/floor/circuit/telecomms/mainframe, -/area/station/science/xenobiology) +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) +"cWm" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/holopad, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/diagonal, +/area/station/ai_monitored/command/storage/eva) "cWC" = ( /obj/item/reagent_containers/cup/watering_can/wood, /obj/structure/table, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"cWM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/grunge{ - name = "Morgue" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/medical/morgue) +"cWT" = ( +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "cWZ" = ( /obj/machinery/door/airlock/external{ name = "Primary Docking Bay" @@ -8133,6 +8387,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"cXj" = ( +/obj/effect/spawner/random/maintenance/two, +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "cXp" = ( /obj/effect/mapping_helpers/airlock/access/any/service/general, /obj/structure/disposalpipe/segment, @@ -8157,6 +8418,25 @@ }, /turf/open/floor/iron/kitchen/small, /area/station/security/breakroom) +"cXG" = ( +/obj/structure/flora/bush/flowers_yw/style_3{ + pixel_y = -3 + }, +/obj/structure/flora/bush/flowers_br/style_random{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/structure/flora/bush/flowers_pp{ + pixel_x = -3; + pixel_y = -5 + }, +/obj/machinery/light/floor, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/grass/airless, +/area/station/hallway/primary/central/aft) "cXH" = ( /obj/effect/landmark/start/cook, /turf/open/floor/iron/kitchen/small, @@ -8168,16 +8448,25 @@ }, /turf/open/floor/iron/small, /area/station/security/prison/shower) +"cXN" = ( +/obj/structure/broken_flooring/singular/directional/east, +/obj/structure/alien/weeds, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "cYc" = ( /obj/effect/spawner/random/structure/crate, /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"cYk" = ( +"cYe" = ( +/turf/open/floor/iron/smooth, +/area/station/commons/storage/tools) +"cYm" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/sign/departments/telecomms/directional/south, +/obj/item/radio/intercom/directional/south, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -8196,17 +8485,18 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"cYD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table/wood, -/obj/item/hemostat{ - desc = "Ah yes, the Haircutting Device."; - name = "Totally Not Scissors" +"cYz" = ( +/obj/effect/turf_decal/siding/white{ + dir = 10 }, -/turf/open/floor/iron/small, -/area/station/service/barber) +/obj/structure/closet{ + anchored = 1; + name = "Cold protection gear" + }, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/clothing/suit/hooded/wintercoat/science, +/turf/open/floor/iron/dark/small, +/area/station/science/xenobiology) "cYE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8231,13 +8521,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/engine) -"cYR" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) "cYS" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -8250,19 +8533,6 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"cYY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/primary/central/fore) "cZi" = ( /obj/machinery/camera/autoname/directional/south, /obj/item/kirbyplants/random, @@ -8304,11 +8574,6 @@ }, /turf/open/floor/wood, /area/station/service/chapel) -"cZx" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/fitness/recreation) "cZy" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8347,9 +8612,17 @@ /turf/open/floor/iron/white/small, /area/station/service/janitor) "cZW" = ( -/obj/structure/closet/crate/grave, -/turf/open/misc/dirt/station, -/area/station/medical/morgue) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/structure/disposalpipe/junction/flip{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/primary/central/fore) "dah" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -8391,14 +8664,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/ce) -"daH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/floor/iron/dark/small, -/area/station/tcommsat/server) "dba" = ( /obj/structure/chair/sofa/bench/left{ dir = 4 @@ -8440,9 +8705,18 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"dbE" = ( +/obj/effect/spawner/random/structure/grille, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "dbF" = ( /turf/open/floor/plating/rust, /area/station/ai_monitored/turret_protected/aisat/maint) +"dbV" = ( +/obj/machinery/airalarm/directional/south, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) "dbZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ @@ -8459,24 +8733,17 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"dcg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "dcu" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) -"dcx" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/obj/structure/closet{ - anchored = 1; - can_be_unanchored = 1; - name = "Cold protection gear" - }, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/clothing/suit/hooded/wintercoat/science, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) "dcD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/firedoor, @@ -8494,16 +8761,6 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/port) -"dcH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "dcK" = ( /obj/machinery/portable_atmospherics/canister, /obj/effect/turf_decal/bot{ @@ -8563,15 +8820,6 @@ /obj/structure/chair/stool/directional/west, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) -"ddF" = ( -/mob/living/basic/goat/pete, -/obj/effect/turf_decal/weather/snow, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "ddK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -8592,17 +8840,6 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/hallway/secondary/service) -"deh" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) "dex" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, @@ -8615,6 +8852,14 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"deP" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/white, +/area/station/medical/virology) "deQ" = ( /obj/machinery/door/poddoor/preopen{ id = "Xenolab"; @@ -8657,6 +8902,25 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"dfg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/chair/sofa/bench{ + dir = 1 + }, +/obj/machinery/newscaster/directional/south, +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) +"dfi" = ( +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "dfo" = ( /obj/structure/cable, /obj/machinery/status_display/ai/directional/north, @@ -8669,10 +8933,6 @@ dir = 1 }, /area/station/cargo/storage) -"dfO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall/r_wall, -/area/station/maintenance/starboard/central) "dfT" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -8680,6 +8940,16 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron/smooth, /area/station/engineering/main) +"dgj" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Zoo" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/textured_half, +/area/station/hallway/secondary/entry) "dgm" = ( /obj/structure/railing/corner{ dir = 1 @@ -8695,17 +8965,10 @@ }, /turf/open/floor/wood, /area/station/engineering/main) -"dgn" = ( +"dgo" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/broken_flooring/pile/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) +/turf/open/floor/iron/white/corner, +/area/station/science/lower) "dgt" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -8717,6 +8980,12 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/grimy, /area/station/service/library/private) +"dgw" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/courtroom) "dgy" = ( /obj/structure/chair/office{ dir = 1 @@ -8726,6 +8995,37 @@ }, /turf/open/floor/carpet, /area/station/maintenance/hallway/abandoned_recreation) +"dgJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) +"dgN" = ( +/obj/machinery/door/window/left/directional/south, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark, +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/clothing/shoes/magboots{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/shoes/magboots{ + pixel_x = 4; + pixel_y = -3 + }, +/turf/open/floor/iron/dark/smooth_edge, +/area/station/ai_monitored/command/storage/eva) "dgV" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 5 @@ -8737,14 +9037,6 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/dark/small, /area/station/engineering/storage_shared) -"dhb" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "dhh" = ( /obj/structure/cable, /obj/machinery/status_display/ai/directional/north, @@ -8753,37 +9045,6 @@ }, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) -"dhu" = ( -/obj/structure/flora/bush/sparsegrass{ - pixel_x = -5; - pixel_y = 9 - }, -/obj/effect/turf_decal/weather/dirt{ - dir = 10 - }, -/turf/open/floor/grass, -/area/station/service/chapel) -"dhy" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/green{ - dir = 8 - }, -/obj/machinery/light/small/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) -"dhC" = ( -/obj/machinery/vending/assist, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "dhG" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /obj/machinery/atmospherics/pipe/smart/simple/green/visible/layer2, @@ -8791,26 +9052,23 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos) -"dhH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/small, -/area/station/commons/fitness/locker_room) "dhK" = ( /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"dim" = ( +"dhW" = ( +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/medical/pharmacy) +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "din" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -8853,15 +9111,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/project) -"diF" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Barber" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_half, -/area/station/commons/fitness/locker_room) "diG" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/machinery/light/small/directional/east, @@ -8878,15 +9127,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"diK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/effect/landmark/start/mime, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "diN" = ( /obj/effect/spawner/structure/window, /obj/structure/disposalpipe/segment{ @@ -8909,15 +9149,6 @@ /obj/machinery/light/floor, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) -"djc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "djf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -8939,14 +9170,19 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/small, /area/station/security/brig) -"djE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"djy" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "abandoned_lab"; + name = "Abandoned Lab Shutters" }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) +"djD" = ( +/obj/structure/table/glass, +/turf/open/floor/iron/smooth, +/area/station/hallway/secondary/command) "djO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -8970,16 +9206,6 @@ }, /turf/open/floor/iron/smooth, /area/station/engineering/main) -"djY" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Dorms" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half, -/area/station/commons/dorms) "dkh" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -8990,16 +9216,15 @@ }, /turf/open/floor/stone, /area/station/service/chapel) +"dkp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/trimline/blue/filled/corner, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "dkv" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"dkw" = ( -/obj/effect/turf_decal/trimline/dark/end{ - dir = 8 - }, -/turf/open/floor/iron/dark/small, -/area/station/maintenance/department/science/xenobiology) "dkz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9008,17 +9233,23 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/security/tram) -"dkD" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/obj/structure/cable, -/turf/open/floor/iron/small, -/area/station/engineering/break_room) "dkI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/small, /area/station/security/execution/education) +"dkP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/chair/sofa/bench/left{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "dkT" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/turf_decal/stripes/line{ @@ -9027,6 +9258,12 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/hallway/secondary/construction) +"dle" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood, +/area/station/hallway/secondary/entry) "dlj" = ( /obj/structure/reflector/single/anchored{ dir = 9 @@ -9054,14 +9291,6 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/misc/dirt/station, /area/station/service/chapel) -"dlG" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) "dlJ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/crate, @@ -9073,16 +9302,14 @@ /obj/effect/landmark/start/depsec/medical, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs/auxiliary) -"dml" = ( +"dmE" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 4 +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/cryo) +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "dmG" = ( /obj/structure/transport/linear/tram, /obj/structure/tram, @@ -9091,20 +9318,6 @@ "dmO" = ( /turf/open/floor/iron/dark, /area/station/cargo/lobby) -"dmT" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Xenobiology - Cell 2"; - name = "xenobiology camera"; - network = list("ss13","xeno","rd") - }, -/obj/effect/turf_decal/box/red/corners{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 10 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "dmW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9115,11 +9328,6 @@ dir = 1 }, /area/station/security/prison/safe) -"dnc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "dng" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -9131,6 +9339,11 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) +"dns" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "dnK" = ( /obj/item/kirbyplants/random, /obj/item/storage/briefcase{ @@ -9140,23 +9353,11 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark/small, /area/station/security/detectives_office) -"dnO" = ( -/obj/effect/turf_decal/trimline/white/warning{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/warning{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/fitness/recreation) +"dnN" = ( +/obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "dnU" = ( /obj/machinery/door/airlock/maintenance{ name = "Maintenance" @@ -9197,6 +9398,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"doh" = ( +/obj/machinery/light_switch/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/small, +/area/station/science/server) "doj" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -9210,6 +9417,21 @@ }, /turf/open/floor/iron/white/small, /area/station/command/heads_quarters/cmo) +"doq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/sign/poster/official/random/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/dock) "dor" = ( /obj/machinery/flasher/directional/west{ id = "AI"; @@ -9228,6 +9450,13 @@ /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/aft) +"dow" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "doJ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -9239,6 +9468,9 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"doV" = ( +/turf/open/floor/iron/half, +/area/station/hallway/primary/central/fore) "dph" = ( /obj/structure/railing, /turf/open/floor/catwalk_floor, @@ -9253,6 +9485,16 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"dpz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/primary/aft) "dpH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/mix_output{ dir = 8 @@ -9265,11 +9507,17 @@ }, /turf/open/floor/tram, /area/station/security/tram) -"dqj" = ( -/obj/machinery/power/apc/auto_name/directional/north, +"dqi" = ( +/obj/effect/turf_decal/weather/snow, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/aft) +/obj/machinery/airalarm/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/binary/pump/on, +/obj/effect/mapping_helpers/airalarm/tlv_cold_room, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "dqB" = ( /obj/structure/table, /obj/item/clothing/head/utility/chefhat, @@ -9292,6 +9540,13 @@ /obj/item/storage/photo_album/library, /turf/open/floor/iron/grimy, /area/station/service/library/private) +"dqH" = ( +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "dqO" = ( /turf/open/floor/iron/dark/small, /area/station/security/checkpoint/customs/auxiliary) @@ -9307,6 +9562,17 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/electrical) +"dru" = ( +/obj/structure/chair/sofa/bench{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) "dry" = ( /obj/structure/bed/medical{ dir = 4 @@ -9330,16 +9596,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/station/engineering/main) -"drO" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Maintenance" +"dsa" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/storage/tech) +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) "dsb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9358,18 +9621,19 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"dsj" = ( +/obj/machinery/door/airlock{ + name = "Abandoned Brewery" + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "dsl" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/siding/wood/corner, /turf/open/floor/wood/parquet, /area/station/service/library) -"dsp" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "dss" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/siding/purple, @@ -9377,9 +9641,9 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron/dark, /area/station/science/genetics) -"dst" = ( -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark, +"dsE" = ( +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron/dark/small, /area/station/medical/morgue) "dsK" = ( /obj/effect/turf_decal/tile/red/opposingcorners, @@ -9401,15 +9665,14 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/maintenance/port/aft) -"dsW" = ( -/obj/machinery/door/airlock{ - name = "Abandoned Brewery" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/maintenance/department/science/xenobiology) +"dtd" = ( +/obj/structure/cable, +/turf/closed/wall/r_wall, +/area/station/command/bridge) +"dtk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/closed/wall, +/area/station/science/ordnance/testlab) "dtm" = ( /obj/structure/window/spawner/directional/south, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -9422,33 +9685,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) -"dtC" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/table, -/obj/item/storage/box/monkeycubes{ - pixel_x = 16; - pixel_y = 9 - }, -/obj/item/storage/box/monkeycubes{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/item/storage/pill_bottle/mutadone{ - pixel_x = -7; - pixel_y = 13 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/north, -/obj/machinery/camera/autoname/directional/north, -/obj/structure/cable, -/obj/item/flesh_shears{ - pixel_x = -5 - }, -/turf/open/floor/iron/dark, -/area/station/science/genetics) "dtO" = ( /obj/effect/turf_decal/trimline/neutral/line{ dir = 1 @@ -9518,15 +9754,24 @@ }, /turf/open/floor/iron/small, /area/station/commons/fitness/locker_room) -"dvb" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) "dvd" = ( /turf/open/floor/iron/white/small, /area/station/service/hydroponics) +"dve" = ( +/obj/machinery/door/airlock/command{ + name = "Telecomms Server Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "comms-entrance-north" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) "dvo" = ( /obj/machinery/ore_silo, /obj/effect/turf_decal/bot_white, @@ -9537,13 +9782,16 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/command/nuke_storage) -"dvI" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) +"dvw" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/delivery, +/obj/machinery/button/door/directional/west{ + name = "E.V.A Shutters"; + req_access = list("command"); + id = "evashutter" + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/ai_monitored/command/storage/eva) "dvJ" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/tile/dark_red/fourcorners, @@ -9578,6 +9826,13 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/security/tram) +"dwd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/science/research) "dwr" = ( /obj/structure/flora/bush/lavendergrass/style_random, /obj/structure/flora/rock/pile/jungle/style_random, @@ -9599,25 +9854,19 @@ /obj/structure/cable, /turf/open/floor/iron/smooth_large, /area/station/engineering/storage_shared) -"dwT" = ( -/obj/structure/rack, -/obj/item/poster/random_contraband{ - pixel_y = 8 - }, -/obj/item/poster/random_contraband{ +"dxc" = ( +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = 9; pixel_y = 4 }, -/obj/item/poster/random_contraband, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/item/radio{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/security/science, /turf/open/floor/iron/dark, -/area/station/maintenance/department/science/xenobiology) -"dwX" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) +/area/station/security/checkpoint/science) "dxf" = ( /turf/open/floor/iron/smooth, /area/station/maintenance/department/medical/central) @@ -9627,15 +9876,10 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"dxw" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/light/warm/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) +"dxz" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "dxG" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -9665,15 +9909,6 @@ }, /turf/open/floor/iron/dark/diagonal, /area/station/service/bar) -"dxZ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock{ - name = "Gas Lab Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "dyp" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, @@ -9696,6 +9931,14 @@ /obj/structure/broken_flooring/singular/directional/east, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"dys" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/research) "dyF" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/blue{ @@ -9713,14 +9956,12 @@ /turf/closed/wall/r_wall, /area/station/engineering/supermatter) "dyJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 4 +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "dyO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -9738,6 +9979,18 @@ /obj/structure/closet/firecloset, /turf/open/floor/iron/small, /area/station/maintenance/port/lesser) +"dza" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "dzh" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -9753,23 +10006,31 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"dzE" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +"dzp" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/iron, +/area/station/maintenance/port/aft) +"dzI" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/airlock/command/glass{ + name = "Telecommunications Server Room" }, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) +"dzL" = ( +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/north, +/obj/machinery/disposal/bin/tagger, +/turf/open/floor/iron, +/area/station/cargo/storage) "dAn" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"dAr" = ( -/obj/structure/transit_tube/horizontal, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "dAu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9885,13 +10146,6 @@ dir = 1 }, /area/station/hallway/secondary/exit/departure_lounge) -"dBO" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 8; - name = "killroom vent" - }, -/turf/open/floor/circuit/telecomms/mainframe, -/area/station/science/xenobiology) "dBT" = ( /obj/effect/turf_decal/box/white{ color = "#EFB341" @@ -9921,6 +10175,15 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/maintenance/port/aft) +"dCt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "dCu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line{ @@ -9949,20 +10212,12 @@ dir = 8 }, /area/station/security/office) -"dDc" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Ordnance Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) +"dCW" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/item/folder/red, +/turf/open/floor/iron, +/area/station/security/courtroom) "dDd" = ( /obj/structure/table, /obj/item/exodrone{ @@ -9976,6 +10231,13 @@ dir = 1 }, /area/station/maintenance/starboard/greater) +"dDy" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "dDB" = ( /turf/open/space/basic, /area/space) @@ -9999,16 +10261,6 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"dDO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/box/red/corners{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 9 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "dDQ" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/item/inspector{ @@ -10068,6 +10320,12 @@ }, /turf/open/floor/tram, /area/station/security/tram) +"dEL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/science/ordnance/testlab) "dEY" = ( /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 5 @@ -10111,6 +10369,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"dFR" = ( +/obj/machinery/door/window/right/directional/south{ + name = "Upload Console Window"; + req_access = list("ai_upload") + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload) "dFY" = ( /obj/machinery/power/energy_accumulator/tesla_coil/anchored, /obj/structure/window/reinforced/plasma/spawner/directional/south, @@ -10118,6 +10385,21 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter) +"dGm" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) +"dGo" = ( +/obj/structure/table/reinforced/rglass, +/obj/machinery/coffeemaker/impressa{ + pixel_x = 2 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/turf/open/floor/iron/checker, +/area/station/command/bridge) "dGV" = ( /obj/structure/closet/emcloset, /turf/open/floor/catwalk_floor, @@ -10137,17 +10419,6 @@ }, /turf/open/floor/tram, /area/station/security/tram) -"dHp" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "dHx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -10160,21 +10431,36 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) -"dHy" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) -"dHL" = ( +"dHI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 1 +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/medical/psychology, +/obj/machinery/door/airlock/medical{ + name = "Pychologists Office" }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 +/turf/open/floor/iron/dark/small, +/area/station/medical/psychology) +"dHJ" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Cubicle" }, -/area/station/command/bridge) +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/research) +"dHL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "dHT" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -10228,14 +10514,14 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"dJj" = ( -/obj/effect/turf_decal/tile/neutral{ +"dJh" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/structure/chair/office{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/obj/structure/cable, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "dJn" = ( /obj/machinery/light/small/directional/south{ dir = 4 @@ -10283,10 +10569,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"dKo" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark/small, -/area/station/maintenance/department/science/xenobiology) "dKq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -10319,11 +10601,32 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/dock) +"dKH" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/solars/starboard/fore) "dKQ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/layer3, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"dKX" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/item/storage/fancy/cigarettes/cigars{ + pixel_y = 4 + }, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "dKY" = ( /obj/machinery/light/small/directional/south{ dir = 4 @@ -10333,6 +10636,15 @@ }, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) +"dLb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/turf/open/floor/iron/dark/herringbone, +/area/station/security/courtroom) "dLl" = ( /obj/effect/spawner/structure/window, /obj/structure/curtain/bounty/start_closed, @@ -10342,15 +10654,6 @@ /obj/structure/chair/office, /turf/open/floor/iron/dark/herringbone, /area/station/security/execution/education) -"dLq" = ( -/obj/structure/cable, -/obj/structure/table, -/obj/item/hand_labeler, -/obj/item/camera, -/obj/machinery/firealarm/directional/north, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron, -/area/station/commons/storage/art) "dLv" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -10360,6 +10663,12 @@ }, /turf/open/floor/iron/dark, /area/station/security/processing) +"dLA" = ( +/obj/structure/sign/poster/official/random/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/smooth_large, +/area/station/service/lawoffice) "dLR" = ( /obj/effect/turf_decal/siding/red{ dir = 8 @@ -10374,17 +10683,6 @@ /obj/effect/landmark/start/librarian, /turf/open/floor/carpet, /area/station/service/library) -"dMe" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "dMg" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -10409,6 +10707,19 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"dMw" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Blast Door" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "XenoPens"; + name = "Xenobiology Lockdown" + }, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/hallway/secondary/entry) "dMC" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/south, @@ -10416,14 +10727,6 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/plating, /area/station/hallway/primary/central/fore) -"dMM" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"dMX" = ( -/obj/machinery/holopad/secure, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) "dMY" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/item/wrench, @@ -10436,12 +10739,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/gravity_generator) -"dNo" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "dNq" = ( /turf/closed/wall/r_wall/rust, /area/station/ai_monitored/aisat/exterior) @@ -10459,38 +10756,11 @@ /obj/structure/chair/stool/directional/south, /turf/open/floor/light/colour_cycle/dancefloor_b, /area/station/maintenance/starboard/central) -"dNL" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/end{ - dir = 4 - }, +"dNR" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"dNN" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/reagent_containers/cup/glass{ - pixel_x = -3; - pixel_y = 4 - }, -/obj/item/reagent_containers/cup/glass{ - pixel_x = 5; - pixel_y = 10 - }, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) -"dNU" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/grimy, -/area/station/hallway/secondary/entry) +/turf/open/floor/plating, +/area/station/command/corporate_dock) "dOb" = ( /obj/structure/broken_flooring/singular/directional/east, /obj/structure/alien/weeds, @@ -10524,6 +10794,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"dOK" = ( +/obj/effect/turf_decal/siding/wideplating/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating/corner, +/turf/open/floor/wood, +/area/station/engineering/main) "dOP" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ dir = 1 @@ -10585,6 +10862,14 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/station/service/chapel) +"dPS" = ( +/obj/machinery/door/airlock/engineering{ + name = "Supplies Depot" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/construction) "dPW" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/structure/disposalpipe/segment{ @@ -10601,10 +10886,15 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/engineering/lobby) -"dQm" = ( +"dQk" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/commons/fitness/recreation) +/obj/machinery/camera/directional/west, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/research) "dQn" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -10643,49 +10933,37 @@ /obj/effect/turf_decal/siding/wood/end, /turf/open/floor/stone, /area/station/service/chapel) -"dRv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Research Wing" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "rdrnd"; - name = "Research and Development Shutters" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/hallway/primary/starboard) "dRz" = ( /obj/docking_port/stationary/syndicate/northeast, /turf/open/space/basic, /area/space) -"dRT" = ( +"dRI" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) -"dSb" = ( -/obj/machinery/door/airlock/hatch{ - name = "Secure Pen" - }, -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 4 +/obj/machinery/door/airlock/public/glass{ + name = "Lockers" }, +/turf/open/floor/iron/textured_half, +/area/station/commons/fitness/locker_room) +"dRN" = ( +/obj/item/kirbyplants/organic/applebush, /obj/structure/cable, -/turf/open/floor/iron/white/textured_half{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/bridge) +"dSf" = ( +/obj/structure/sign/poster/official/random/directional/east, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 8 }, -/area/station/science/cytology) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark/textured, +/area/station/command/meeting_room) "dSh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10695,23 +10973,19 @@ }, /turf/open/floor/iron/smooth, /area/station/engineering/break_room) -"dSq" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +"dSn" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) "dSu" = ( /obj/structure/closet/secure_closet/brig, /turf/open/floor/iron, /area/station/security/execution/transfer) -"dSz" = ( -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) "dSO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10745,14 +11019,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/wood, /area/station/cargo/boutique) -"dTg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) "dTi" = ( /obj/machinery/light/cold/directional/west, /obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer2{ @@ -10769,6 +11035,14 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"dTm" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/side, +/area/station/science/xenobiology) "dTo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/effect/turf_decal/stripes/line{ @@ -10776,15 +11050,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"dTB" = ( -/obj/structure/broken_flooring/pile/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/south, -/obj/structure/alien/weeds, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "dTH" = ( /obj/effect/landmark/start/hangover, /obj/effect/turf_decal/trimline/neutral/line, @@ -10797,6 +11062,22 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"dTJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) +"dTO" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "dTW" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/computer/shuttle/mining{ @@ -10805,6 +11086,14 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"dUb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating, +/area/station/science/ordnance/storage) "dUw" = ( /obj/structure/railing{ dir = 4 @@ -10847,24 +11136,26 @@ /obj/machinery/holopad, /turf/open/floor/iron/dark/small, /area/station/science/xenobiology) -"dUS" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Cubicle" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/cubicle) "dUY" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/entertainment/drugs, -/obj/effect/spawner/random/entertainment/drugs, -/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/spawner/structure/window/reinforced/tinted, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +/area/station/tcommsat/server) +"dVi" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) +"dVL" = ( +/obj/structure/flora/bush/jungle, +/obj/structure/marker_beacon/yellow, +/turf/open/floor/grass, +/area/station/medical/morgue) "dVQ" = ( /obj/effect/turf_decal/weather/dirt{ dir = 8 @@ -10883,36 +11174,10 @@ /obj/effect/landmark/start/depsec/supply, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/supply) -"dWh" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/sign/departments/science/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "dWm" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/eighties/red, /area/station/service/abandoned_gambling_den/gaming) -"dWs" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/station/science/xenobiology) -"dWz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) "dWF" = ( /obj/structure/disposalpipe/junction/flip{ dir = 8 @@ -10923,17 +11188,6 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"dWG" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "dWK" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/chair/office{ @@ -10942,44 +11196,10 @@ /obj/effect/landmark/start/warden, /turf/open/floor/iron, /area/station/security/warden) -"dWS" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/security_all, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/bot, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "dWW" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"dXb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/plasticflaps/opaque, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=4"; - location = "Research" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) -"dXe" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/machinery/door/airlock/research/glass{ - name = "Experimentation Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/research, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/science/lower) "dXu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -10988,6 +11208,16 @@ /obj/structure/chair/stool/directional/south, /turf/open/floor/iron, /area/station/cargo/sorting) +"dXx" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "dXO" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /obj/structure/disposalpipe/segment{ @@ -10995,16 +11225,6 @@ }, /turf/open/floor/plating, /area/station/service/janitor) -"dXU" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/science/xenobiology) "dYc" = ( /obj/structure/table, /obj/machinery/recharger{ @@ -11021,6 +11241,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/lockers) +"dYg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/item/kirbyplants/random, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/science/xenobiology) "dYj" = ( /obj/structure/table, /obj/effect/turf_decal/tile/dark_red, @@ -11049,6 +11277,14 @@ /obj/structure/closet/radiation, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) +"dYA" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/airalarm/directional/east, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "dYE" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -11076,11 +11312,6 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"dYW" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "dYX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11111,14 +11342,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai) -"dZp" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) "dZD" = ( /obj/machinery/camera/directional/south{ c_tag = "AI Chamber - Core"; @@ -11138,14 +11361,6 @@ }, /turf/open/floor/iron/small, /area/station/security/prison/shower) -"dZJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "dZT" = ( /obj/machinery/button/transport/tram/directional/south{ id = 2; @@ -11182,15 +11397,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/fore/greater) -"ebc" = ( +"eay" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, -/obj/structure/steam_vent, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/area/station/maintenance/starboard/central) +"eaT" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "ebe" = ( /obj/structure/hoop{ dir = 4; @@ -11218,6 +11441,13 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/dark/side, /area/station/hallway/primary/central/fore) +"ebx" = ( +/obj/effect/landmark/start/hangover, +/obj/structure/broken_flooring/pile/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/hallway/secondary/dock) "ebE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -11297,9 +11527,19 @@ "ecL" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/transit_tube/horizontal, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"ecW" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/lobby) "ecY" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -11310,15 +11550,6 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat/teleporter) -"ede" = ( -/obj/machinery/light/floor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/research) "edk" = ( /obj/effect/turf_decal/tile/green/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -11330,6 +11561,24 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) +"edl" = ( +/obj/structure/table/glass, +/obj/item/book/manual/wiki/cytology{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/reagent_containers/dropper{ + pixel_x = -11; + pixel_y = -4 + }, +/obj/item/biopsy_tool{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/science/cytology) "edA" = ( /obj/machinery/conveyor_switch/oneway{ dir = 8; @@ -11398,13 +11647,6 @@ dir = 8 }, /area/station/cargo/storage) -"eem" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/broken_flooring/singular/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "eeD" = ( /obj/structure/showcase/cyborg/old{ pixel_y = 20 @@ -11420,6 +11662,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"efd" = ( +/obj/machinery/power/port_gen/pacman/pre_loaded, +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/science/xenobiology) "efi" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -11436,32 +11683,34 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"efv" = ( +/obj/effect/turf_decal/weather/snow, +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/item/food/meat/bacon, +/obj/item/food/meat/bacon, +/obj/item/food/meat/slab/monkey, +/obj/item/food/meat/slab/monkey, +/obj/item/food/meat/slab/monkey, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "efy" = ( /obj/item/kirbyplants/organic/plant21, /obj/machinery/status_display/ai/directional/west, /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat/foyer) -"efB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"efK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +"efO" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/power/floodlight, +/obj/structure/alien/weeds, +/obj/effect/gibspawner/human, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 10 - }, -/area/station/science/lower) +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "efS" = ( /obj/machinery/computer/security/qm{ dir = 1 @@ -11523,19 +11772,6 @@ }, /turf/open/floor/iron/small, /area/station/commons/fitness/locker_room) -"egL" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "Research Director's Office" - }, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/cubicle) "egN" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11580,12 +11816,6 @@ }, /turf/open/floor/iron/smooth, /area/station/engineering/main) -"ehf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "ehj" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -11603,6 +11833,19 @@ /obj/effect/turf_decal/loading_area, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"ehM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/engineering/atmospherics_portable, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) +"ehP" = ( +/obj/structure/table/reinforced, +/obj/machinery/firealarm/directional/east, +/obj/item/storage/box/bodybags, +/obj/item/clothing/mask/gas/plaguedoctor, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "ehT" = ( /obj/machinery/door/airlock{ id_tag = "commiss2"; @@ -11622,17 +11865,17 @@ /obj/effect/landmark/start/paramedic, /turf/open/floor/iron/dark, /area/station/medical/paramedic) -"ehZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"ehW" = ( /obj/structure/disposalpipe/segment{ - dir = 10 + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/broken_flooring/singular/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/sign/poster/official/report_crimes/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "eib" = ( /obj/machinery/conveyor_switch/oneway{ id = "QMLoad2"; @@ -11652,11 +11895,27 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat/equipment) +"eis" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side, +/area/station/science/xenobiology) "eiy" = ( /obj/machinery/camera/autoname/directional/south, /obj/machinery/light/cold/directional/south, /turf/open/floor/iron/dark, /area/station/security/office) +"eiA" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "eiC" = ( /obj/structure/cable/multilayer/connected, /obj/structure/rack, @@ -11709,6 +11968,10 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/cargo/bitrunning/den) +"ejx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/science/ordnance/testlab) "ejL" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/hidden, /obj/effect/turf_decal/tile/yellow, @@ -11753,6 +12016,24 @@ }, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) +"ekc" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 8 + }, +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) +"ekk" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/stone, +/area/station/service/bar) "ekr" = ( /obj/effect/turf_decal/siding/dark_red{ dir = 1 @@ -11826,64 +12107,15 @@ /obj/effect/turf_decal/siding/end, /turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) -"elc" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Robotics Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/robotics/mechbay) -"elh" = ( -/obj/structure/sign/warning/cold_temp/directional/west, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "eln" = ( /obj/structure/flora/tree/jungle/small/style_5, /turf/open/floor/grass, /area/station/service/chapel) -"elv" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/command{ - name = "Chief Engineer's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/ce, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/small, -/area/station/engineering/main) -"elw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/table, -/obj/item/reagent_containers/dropper, -/obj/machinery/reagentgrinder{ - pixel_x = -7; - pixel_y = 17 - }, -/turf/open/floor/iron, -/area/station/medical/chemistry) -"ely" = ( -/obj/structure/closet/emcloset, -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/hallway/secondary/exit/departure_lounge) +"elr" = ( +/obj/machinery/door/airlock/glass, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "elC" = ( /obj/structure/table/glass, /obj/machinery/computer/records/medical/laptop{ @@ -11900,15 +12132,6 @@ }, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/cmo) -"elM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "elR" = ( /obj/structure/table, /obj/structure/window/spawner/directional/south, @@ -11916,11 +12139,6 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/station/security/courtroom) -"elT" = ( -/obj/effect/turf_decal/tile/dark_red/anticorner/contrasted, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs) "emd" = ( /turf/open/floor/iron, /area/station/medical/chemistry) @@ -11929,15 +12147,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"emn" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/machinery/holopad, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) "emz" = ( /turf/closed/wall/r_wall/rust, /area/station/maintenance/department/electrical) @@ -11964,14 +12173,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"enb" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/landmark/navigate_destination/aiupload, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "enE" = ( /obj/item/cultivator/rake, /obj/structure/cable, @@ -12010,16 +12211,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/rd) -"eoa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/tile/dark_red{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/prison) "eof" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12054,12 +12245,40 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall, /area/station/maintenance/central/greater) +"eoN" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/commons/dorms) +"eoU" = ( +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) "epa" = ( /obj/machinery/telecomms/bus/preset_four, /obj/effect/decal/cleanable/dirt, /obj/machinery/camera/autoname/directional/east, /turf/open/floor/circuit, /area/station/tcommsat/server) +"epi" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/siding/green{ + dir = 8 + }, +/obj/machinery/airalarm/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "epm" = ( /obj/machinery/light/no_nightlight/directional/east, /obj/machinery/firealarm/directional/east, @@ -12087,6 +12306,12 @@ }, /turf/open/floor/iron/white/textured_large, /area/station/medical/medbay/lobby) +"ept" = ( +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "epu" = ( /obj/machinery/holopad, /turf/open/floor/iron, @@ -12118,10 +12343,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/science/xenobiology) -"eqG" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark/small, -/area/station/maintenance/central/lesser) "eqI" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -12134,6 +12355,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/small, /area/station/hallway/secondary/service) +"eqJ" = ( +/obj/effect/spawner/random/structure/crate_abandoned, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "eqS" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -12156,14 +12381,14 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"erA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +"erp" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 }, +/obj/item/kirbyplants/random, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/hallway/primary/aft) +/area/station/science/lower) "erE" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/tile, @@ -12183,6 +12408,15 @@ /obj/machinery/computer/records/security, /turf/open/floor/iron/small, /area/station/security/office) +"esf" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/lawyer, +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/service/lawoffice) "esr" = ( /obj/effect/turf_decal/tile/blue, /obj/structure/cable, @@ -12201,18 +12435,6 @@ }, /turf/open/space/basic, /area/space) -"esy" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/station/maintenance/department/engine/atmos) -"esz" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "esF" = ( /obj/structure/cable, /obj/item/kirbyplants/organic/applebush, @@ -12222,33 +12444,31 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/wood/large, /area/station/command/heads_quarters/captain/private) +"esG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/obj/machinery/door/airlock/command/glass{ + name = "Command Hallway" + }, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/hallway/secondary/command) "esI" = ( /obj/effect/turf_decal/tile/green/half/contrasted, /obj/machinery/computer/pandemic, /obj/machinery/light/cold/directional/south, /turf/open/floor/iron/white, /area/station/medical/virology) -"esP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"esV" = ( /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/white/corner{ + dir = 1 }, -/obj/structure/sign/departments/medbay/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"esW" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sink/directional/south, -/obj/structure/mirror/directional/north, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) +/area/station/science/lower) "ete" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -12295,6 +12515,13 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/stone, /area/station/service/chapel) +"etW" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "etZ" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted, /obj/effect/turf_decal/siding/wideplating/dark/corner{ @@ -12314,13 +12541,15 @@ }, /turf/open/floor/wood, /area/station/engineering/main) -"eul" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +"eun" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/locker_room) +/obj/effect/landmark/navigate_destination/lawyer, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "euq" = ( /obj/structure/cable, /obj/item/kirbyplants/random/fullysynthetic, @@ -12343,6 +12572,19 @@ /obj/effect/spawner/structure/window/reinforced, /turf/closed/wall, /area/station/hallway/primary/central/aft) +"euM" = ( +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Research Director's Office" + }, +/obj/machinery/door/poddoor/preopen{ + id = "rdoffice"; + name = "Research Director's Shutters" + }, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/cubicle) "euO" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line{ @@ -12350,24 +12592,12 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"euR" = ( -/obj/structure/hedge, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "eva" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, /turf/open/floor/iron/dark/smooth_large, /area/station/security/execution/education) -"evb" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "evj" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ @@ -12375,20 +12605,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) -"evq" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"evv" = ( -/obj/machinery/door/airlock{ - name = "Abandoned Lab" - }, -/obj/structure/barricade/wooden, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/turf/open/floor/plating, -/area/station/science/xenobiology) "evw" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange{ dir = 9 @@ -12418,14 +12634,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"ewt" = ( -/obj/machinery/firealarm/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/station/maintenance/solars/starboard/fore) "ewF" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -12435,20 +12643,40 @@ dir = 1 }, /area/station/hallway/secondary/dock) +"ewO" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/junction/flip{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) "ewW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"exu" = ( -/obj/machinery/status_display/ai/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +"exj" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 }, -/turf/open/floor/iron/white/side{ - dir = 1 +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood/tile, +/area/station/tcommsat/server) +"exy" = ( +/obj/machinery/door/airlock/research{ + name = "Xenobiology Secure Lab" }, -/area/station/science/lower) +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/xenobiology) "exF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -12470,13 +12698,6 @@ /obj/effect/landmark/start/station_engineer, /turf/open/floor/wood, /area/station/engineering/break_room) -"exR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/broken_flooring/singular/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/hallway/secondary/dock) "exW" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 8 @@ -12485,6 +12706,21 @@ /obj/structure/sink/directional/east, /turf/open/floor/iron/white, /area/station/medical/virology) +"eyo" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/reagent_containers/cup/glass{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/item/reagent_containers/cup/glass{ + pixel_x = 5; + pixel_y = 10 + }, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "eyx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/firedoor, @@ -12514,6 +12750,18 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/textured_half, /area/station/security/lockers) +"eyI" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "eyJ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -12543,17 +12791,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"ezb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/science/lobby) "ezi" = ( /obj/structure/chair/stool/directional/west, /turf/open/floor/iron/cafeteria, @@ -12584,12 +12821,14 @@ /obj/effect/mapping_helpers/requests_console/assistance, /turf/open/floor/wood/large, /area/station/command/heads_quarters/captain) -"ezy" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, +"ezC" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/airalarm/directional/north, +/obj/structure/chair, /turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) +/area/station/commons/storage/tools) "ezE" = ( /obj/vehicle/ridden/secway, /turf/open/floor/plating, @@ -12628,10 +12867,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark/textured_half, /area/station/command/heads_quarters/hop) -"eAf" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/cargo/storage) "eAm" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -12648,23 +12883,18 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/smooth_large, /area/station/science/robotics/mechbay) +"eAo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "eAu" = ( /obj/structure/cable, /obj/machinery/power/tracker, /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/station/solars/starboard/aft) -"eAz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/machinery/light/floor, -/turf/open/floor/noslip, -/area/station/medical/medbay/central) "eAE" = ( /obj/item/stack/sheet/plasteel{ amount = 10; @@ -12692,6 +12922,22 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat/teleporter) +"eAP" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Research Wing" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/hallway/primary/starboard) +"eAU" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark/smooth_large, +/area/station/ai_monitored/command/storage/eva) "eAY" = ( /turf/open/floor/grass, /area/station/science/xenobiology) @@ -12733,10 +12979,6 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/noslip, /area/station/maintenance/department/medical/central) -"eBT" = ( -/obj/item/shovel, -/turf/open/misc/dirt/station, -/area/station/medical/morgue) "eCf" = ( /obj/machinery/porta_turret/ai{ dir = 4 @@ -12777,6 +13019,22 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/sorting) +"eCW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Blast Door" + }, +/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/catwalk_floor/iron, +/area/station/science/xenobiology) +"eDe" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/space/basic, +/area/space/nearstation) "eDh" = ( /obj/effect/spawner/structure/window/survival_pod, /turf/open/floor/engine, @@ -12827,14 +13085,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"eDz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "eDF" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/box/red/corners{ @@ -12890,11 +13140,6 @@ /obj/item/stamp/head/hos, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) -"eEi" = ( -/obj/structure/broken_flooring/side/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "eEj" = ( /obj/machinery/door/firedoor/heavy, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -12902,6 +13147,20 @@ /obj/structure/cable, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/office) +"eEl" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/button/door/directional/east{ + name = "E.V.A Shutters"; + req_access = list("command"); + id = "evashutter" + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/fore) "eEn" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/railing{ @@ -12942,15 +13201,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat/equipment) -"eFi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light/directional/south, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/engine_access, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "eFk" = ( /obj/structure/cable/layer3, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -12988,29 +13238,24 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/security/prison) -"eFO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"eFQ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/primary/fore) "eFV" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/circuit, /area/station/tcommsat/server) +"eFW" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/airlock/command/glass{ + name = "Telecommunications Server Room" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 1 + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) "eGb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -13042,6 +13287,11 @@ dir = 1 }, /area/station/science/lobby) +"eGg" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/siding/wideplating/dark, +/turf/open/floor/iron, +/area/station/commons/dorms) "eGw" = ( /obj/machinery/camera/directional/west{ c_tag = "Engineering - Public Desk" @@ -13061,6 +13311,29 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/smooth, /area/station/engineering/break_room) +"eGz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) +"eGE" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/lawyer, +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) "eGL" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -13090,19 +13363,18 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/service/barber) -"eHe" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/primary/aft) "eHf" = ( /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) +"eHj" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/mapping_helpers/mail_sorting/science/experimentor_lab, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "eHk" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -13129,20 +13401,34 @@ /obj/structure/holosign/barrier/atmos/tram, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"eHz" = ( +/obj/effect/turf_decal/siding/dark/corner, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/command/bridge) +"eHF" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) +"eHL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/light/cold/directional/east, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "eHN" = ( /obj/structure/cable, /turf/open/floor/wood/tile, /area/station/maintenance/port/lesser) -"eHP" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Genetics" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/genetics, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/research) "eHS" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -13150,6 +13436,26 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter) +"eHZ" = ( +/obj/structure/table, +/obj/item/assembly/igniter{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/assembly/igniter{ + pixel_x = 5; + pixel_y = -4 + }, +/obj/item/assembly/igniter{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/assembly/igniter{ + pixel_x = 2; + pixel_y = -1 + }, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "eIp" = ( /obj/structure/cable/layer3, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -13198,6 +13504,17 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/plating, /area/station/engineering/atmos/storage/gas) +"eIU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 10 + }, +/area/station/science/lower) "eIW" = ( /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, @@ -13212,20 +13529,6 @@ /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"eJi" = ( -/obj/structure/table/wood, -/obj/item/hand_labeler_refill{ - pixel_x = -4; - pixel_y = 26 - }, -/obj/structure/sign/poster/official/random/directional/south, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine"; - pixel_y = 7 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) "eJm" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, @@ -13266,6 +13569,25 @@ dir = 4 }, /area/station/maintenance/starboard/greater) +"eKB" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/machinery/door/airlock/research/glass{ + name = "Ordnance Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "rdordnance"; + name = "Ordnance Lab Shutters" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/science/ordnance) "eKD" = ( /obj/structure/disposalpipe/sorting/mail{ dir = 1 @@ -13273,31 +13595,12 @@ /obj/effect/mapping_helpers/mail_sorting/service/library, /turf/open/floor/wood/parquet, /area/station/service/library) -"eKP" = ( -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"eKV" = ( -/obj/machinery/portable_atmospherics/pump, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "eKW" = ( /obj/machinery/door/airlock/maintenance{ name = "Bathroom" }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"eLf" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "eLn" = ( /obj/machinery/door/airlock/glass{ name = "Gold Standard Law Firm" @@ -13340,37 +13643,10 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"eMm" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/science/lobby) "eMo" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"eMH" = ( -/obj/machinery/button/door/directional/east{ - id = "AuxToilet3"; - name = "Lock Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/structure/toilet, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/science/xenobiology) -"eMQ" = ( -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) -"eMS" = ( -/obj/structure/chair{ - pixel_y = -2 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "eMU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/circuit/red, @@ -13388,6 +13664,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/miningfoundry) +"eNh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/kirbyplants/random/fullysynthetic, +/turf/open/floor/iron, +/area/station/security/prison) "eNl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -13396,6 +13678,18 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"eNn" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 8 + }, +/obj/machinery/door/window/right/directional/west{ + name = "Medical Supplies"; + req_access = list("medical") + }, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/white/small, +/area/station/medical/storage) "eNo" = ( /obj/item/reagent_containers/cup/glass/bottle/beer/almost_empty{ pixel_x = -6 @@ -13443,6 +13737,16 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) +"eOj" = ( +/obj/effect/turf_decal/tile/blue, +/obj/structure/sign/directions/lavaland/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white/corner{ + dir = 8 + }, +/area/station/hallway/secondary/dock) "eOk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -13459,6 +13763,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"eOG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/light/cold/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/dock) "eOX" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/item/kirbyplants/random, @@ -13473,14 +13792,6 @@ /obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"eOZ" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "ePk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -13511,6 +13822,12 @@ /obj/structure/flora/grass/jungle/a/style_4, /turf/open/floor/grass, /area/station/service/chapel) +"ePA" = ( +/obj/structure/broken_flooring/singular/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/hallway/secondary/dock) "ePP" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/dark_red{ @@ -13522,6 +13839,10 @@ }, /turf/open/floor/stone, /area/station/command/heads_quarters/hos) +"ePT" = ( +/obj/structure/chair, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) "ePV" = ( /obj/structure/cable, /obj/structure/window/reinforced/spawner/directional/west, @@ -13544,6 +13865,24 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"eQc" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/machinery/holopad, +/obj/machinery/light/floor, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/genetics) +"eQd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/effect/turf_decal/siding/white, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "eQk" = ( /obj/machinery/door/airlock/security{ name = "Isolation" @@ -13574,16 +13913,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/commons/dorms) -"eQI" = ( -/obj/effect/turf_decal/stripes/line{ +"eQQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/smooth_edge{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) +/area/station/maintenance/starboard/greater) "eQY" = ( /obj/machinery/door/airlock/maintenance{ name = "Maintenance" @@ -13601,34 +13938,29 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"eRO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "eRX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/small, /area/station/medical/virology) -"eSd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/machinery/door/airlock/research/glass{ - name = "Smoking Lounge" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, +"eSb" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) +"eSi" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/science/lower) +/obj/effect/turf_decal/tile/dark_red{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/prison) "eSA" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, @@ -13679,12 +14011,13 @@ }, /turf/open/floor/iron/smooth_large, /area/station/engineering/storage_shared) -"eTr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/kirbyplants/random/fullysynthetic, -/turf/open/floor/iron, -/area/station/security/prison) +"eTE" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/structure/flora/bush/flowers_yw, +/turf/open/floor/grass, +/area/station/service/chapel) "eTJ" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -13698,14 +14031,6 @@ dir = 1 }, /area/station/cargo/lobby) -"eTT" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/light/floor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/cubicle) "eUb" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -13816,12 +14141,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/small, /area/station/engineering/break_room) -"eVF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/atmospherics_portable, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "eVH" = ( /obj/structure/window/spawner/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -13833,32 +14152,19 @@ /obj/effect/turf_decal/tile/dark_red/half/contrasted, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) -"eVM" = ( -/obj/structure/hedge, -/obj/machinery/status_display/evac/directional/west, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"eVX" = ( -/obj/structure/statue/sandstone/venus{ - dir = 8; - pixel_y = -15 - }, -/obj/structure/flora/bush/flowers_pp, -/obj/structure/flora/bush/flowers_br/style_3, -/obj/effect/dummy/lighting_obj, -/obj/effect/light_emitter/fake_outdoors, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/grass/Airless, -/area/station/hallway/primary/central/aft) "eVY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"eWf" = ( +/obj/effect/landmark/start/cyborg, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload_foyer) "eWk" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 @@ -13880,6 +14186,10 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron, /area/station/security/tram) +"eWD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/science/cytology) "eWI" = ( /turf/closed/wall/r_wall, /area/station/maintenance/aft) @@ -13898,14 +14208,15 @@ /obj/effect/turf_decal/siding/wideplating/dark, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) -"eWY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +"eWZ" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Barber" }, -/obj/effect/turf_decal/tile/blue, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/textured_half, +/area/station/commons/fitness/locker_room) "eXl" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, @@ -13914,11 +14225,6 @@ "eXo" = ( /turf/closed/wall/r_wall, /area/station/tcommsat/server) -"eXt" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/hallway/secondary/dock) "eXy" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/table, @@ -13949,13 +14255,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"eXW" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/breakroom) "eYc" = ( /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai) @@ -13984,14 +14283,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"eYx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +"eYu" = ( +/obj/structure/sign/painting/large/library{ + dir = 1 }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/engineering/storage/tech) +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "eYB" = ( /obj/effect/turf_decal/siding/wood/end, /turf/open/floor/wood, @@ -14048,15 +14345,45 @@ /obj/structure/window/spawner/directional/east, /turf/open/floor/iron/dark, /area/station/commons/dorms) +"eZu" = ( +/obj/machinery/door/airlock/research{ + name = "Robotics Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/robotics/lab) "eZM" = ( /obj/structure/cable/layer3, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai) +"eZQ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/light/cold/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "fai" = ( /obj/effect/turf_decal/stripes/corner, /turf/closed/wall, /area/station/engineering/atmos/storage/gas) +"fal" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/white{ + dir = 5 + }, +/obj/machinery/light_switch/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/small, +/area/station/science/xenobiology) "fap" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ dir = 1 @@ -14077,6 +14404,18 @@ dir = 4 }, /area/station/maintenance/starboard/greater) +"faK" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "faQ" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -14156,6 +14495,14 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) +"fbV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) "fca" = ( /obj/structure/flora/bush/lavendergrass/style_random, /obj/structure/flora/bush/flowers_br/style_random, @@ -14166,17 +14513,14 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) +"fcm" = ( +/obj/effect/spawner/random/structure/grille, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/science/xenobiology) "fcq" = ( /obj/structure/alien/weeds, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) -"fcs" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/medical/pharmacy) "fcE" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 @@ -14189,6 +14533,18 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"fcN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/central/fore) "fcU" = ( /obj/structure/window/spawner/directional/south, /obj/structure/flora/bush/large/style_random{ @@ -14222,13 +14578,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"fdv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white/side, -/area/station/science/research) "fdy" = ( /obj/structure/railing{ dir = 1 @@ -14248,6 +14597,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured_half, /area/station/command/heads_quarters/ce) +"fdG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/lower) "fdM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -14257,6 +14614,16 @@ }, /turf/open/floor/plating, /area/station/science/robotics/lab) +"fdQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/siding{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/small, +/area/station/science/lobby) "feo" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/hidden, /obj/effect/turf_decal/tile/yellow, @@ -14277,6 +14644,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) +"feF" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "feL" = ( /obj/effect/turf_decal/weather/dirt{ dir = 1 @@ -14285,9 +14658,24 @@ /obj/structure/cable, /turf/open/floor/grass, /area/station/service/chapel) +"feN" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Office" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/security/checkpoint/science) "feR" = ( /turf/open/floor/carpet, /area/station/service/library) +"feU" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/central/lesser) "ffi" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, @@ -14328,6 +14716,11 @@ }, /turf/open/floor/iron/dark/small, /area/station/engineering/storage_shared) +"fgd" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/smooth, +/area/station/command/bridge) "fgk" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/status_display/door_timer{ @@ -14372,6 +14765,21 @@ }, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) +"fgP" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=15.0-CentralStarboard-CentralFore"; + location = "14.0-Dormatories-CentralStarboard" + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "fgT" = ( /obj/effect/turf_decal/weather/dirt{ dir = 1 @@ -14432,17 +14840,10 @@ /obj/structure/mirror/directional/west, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) -"fhV" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +"fhW" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "fhZ" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 @@ -14477,6 +14878,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/eighties, /area/station/service/abandoned_gambling_den/gaming) +"fim" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) "fiw" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/table, @@ -14502,6 +14907,16 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"fiR" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/open/floor/iron, +/area/station/security/prison/rec) "fiW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ @@ -14534,11 +14949,14 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"fjv" = ( -/obj/machinery/computer/operating, -/obj/machinery/requests_console/auto_name/directional/north, +"fjI" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/holopad, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/medical/morgue) +/area/station/engineering/storage/tcomms) "fjL" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -14598,12 +15016,13 @@ }, /turf/open/floor/carpet, /area/station/service/library) -"fkK" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) +"fkL" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "fkN" = ( /obj/structure/mannequin/plastic, /obj/structure/disposalpipe/segment{ @@ -14653,16 +15072,6 @@ /obj/structure/flora/bush/flowers_yw/style_3, /turf/open/floor/grass, /area/station/service/chapel) -"flx" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Genetics" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/genetics, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/research) "flD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/stripes/corner{ @@ -14682,6 +15091,16 @@ }, /turf/open/floor/iron/small, /area/station/engineering/atmos/storage/gas) +"flJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "aibridge" + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "flM" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -14725,23 +15144,23 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/station/security/prison/work) -"fmH" = ( -/turf/closed/wall, -/area/station/medical/morgue) "fmR" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/service/chapel/funeral) -"fni" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 +"fna" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "rdoffice"; + name = "Research Director's Shutters" }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/landmark/start/depsec/science, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security/checkpoint/science) +/turf/open/floor/plating, +/area/station/science/cubicle) +"fnd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/closed/wall/r_wall, +/area/station/science/ordnance/testlab) "fnw" = ( /obj/structure/chair{ pixel_y = -2 @@ -14751,20 +15170,21 @@ /turf/open/floor/iron, /area/station/hallway/secondary/dock) "fnx" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) -"fnz" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 9 +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/command/meeting_room) +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/storage/tech) +"fnz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "fnI" = ( /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark/side{ @@ -14843,22 +15263,16 @@ /obj/machinery/vending/security, /turf/open/floor/iron, /area/station/security/lockers) -"foI" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/button/door/directional/north{ - id = "Xenolab"; - name = "Test Chamber Blast Doors"; - pixel_x = 26; - pixel_y = -2; - req_access = list("xenobiology") +"foG" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/public/glass{ + name = "Dormatories" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/binary/pump, -/turf/open/floor/iron/white/side{ +/obj/machinery/door/firedoor, +/turf/open/floor/iron/textured_half{ dir = 8 }, -/area/station/science/xenobiology) +/area/station/commons/fitness/locker_room) "foL" = ( /obj/structure/sign/poster/official/random/directional/north, /obj/structure/lattice, @@ -14879,24 +15293,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"fpq" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/aft) -"fpw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"fpB" = ( -/obj/machinery/door/airlock{ - name = "Science Lab Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/research, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "fpN" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -14918,26 +15314,13 @@ "fpY" = ( /turf/closed/mineral/random/stationside, /area/station/ai_monitored/aisat/exterior) -"fqn" = ( -/obj/machinery/door/window/left/directional/east{ - name = "Medical Supplies"; - req_access = list("medical") - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/obj/effect/turf_decal/siding/blue{ +"fqG" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/white/small, -/area/station/medical/storage) -"fqv" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/lower) +/turf/open/floor/iron/white/side, +/area/station/science/research) "fqT" = ( /obj/machinery/computer/slot_machine{ pixel_y = 2 @@ -14945,6 +15328,10 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/west, /turf/open/floor/carpet/lone, /area/station/service/abandoned_gambling_den) +"fqZ" = ( +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/iron/dark/corner, +/area/station/cargo/storage) "frf" = ( /obj/structure/table/glass, /obj/item/defibrillator/loaded{ @@ -14968,6 +15355,20 @@ /obj/machinery/computer/atmos_control/carbon_tank, /turf/open/floor/iron, /area/station/engineering/atmos) +"frp" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/dock) "frC" = ( /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/dark/smooth_large, @@ -14992,15 +15393,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/supply) -"fsk" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) "fsl" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -15026,17 +15418,27 @@ }, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) -"fst" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"fsA" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, -/area/station/medical/chemistry) +/area/station/hallway/primary/central/fore) +"fsP" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "fsW" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -15046,6 +15448,14 @@ }, /turf/open/floor/wood/tile, /area/station/maintenance/aft) +"ftt" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/floor, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "ftv" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/table/reinforced, @@ -15144,14 +15554,6 @@ /obj/structure/sign/warning/pods/directional/south, /turf/open/floor/iron, /area/station/security/brig/entrance) -"fuv" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/holopad, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/diagonal, -/area/station/ai_monitored/command/storage/eva) "fuD" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -15172,6 +15574,14 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/commons/storage/tools) +"fvf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) "fvh" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/disposaloutlet{ @@ -15189,9 +15599,6 @@ }, /turf/open/misc/sandy_dirt, /area/station/commons/fitness/locker_room) -"fvm" = ( -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "fvs" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -15206,6 +15613,11 @@ }, /turf/open/floor/engine, /area/station/engineering/atmospherics_engine) +"fvz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "fvF" = ( /obj/effect/turf_decal/siding/dark_red, /obj/machinery/modular_computer/preset/id{ @@ -15214,13 +15626,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/stone, /area/station/command/heads_quarters/hos) -"fvH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/electropack, -/obj/machinery/light/small/directional/east, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) "fvL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -15265,13 +15670,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"fwF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/lobby) "fwJ" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/holopad, @@ -15280,31 +15678,10 @@ "fwS" = ( /turf/open/floor/circuit, /area/station/maintenance/port/aft) -"fwU" = ( -/obj/machinery/door/airlock/research{ - name = "Development Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/science/lobby) "fwV" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/engineering/atmos) -"fwZ" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) "fxa" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -15320,6 +15697,16 @@ "fxi" = ( /turf/open/floor/iron/dark/small, /area/station/science/xenobiology) +"fxw" = ( +/obj/effect/turf_decal/weather/snow, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "fxF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -15339,6 +15726,16 @@ dir = 4 }, /area/station/cargo/storage) +"fxS" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/fireaxecabinet/directional/east, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured, +/area/station/command/meeting_room) "fxW" = ( /obj/machinery/restaurant_portal/restaurant, /obj/effect/turf_decal/siding/wood{ @@ -15347,13 +15744,6 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/wood/tile, /area/station/service/bar) -"fyh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "fyo" = ( /obj/structure/table, /obj/machinery/light/small/directional/east, @@ -15424,6 +15814,19 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) +"fyY" = ( +/obj/machinery/computer/records/medical{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/item/radio/intercom/directional/east, +/obj/machinery/button/door/directional/north{ + id = "medlock"; + name = "Medbay Lockdown Control"; + req_access = list("medical") + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "fyZ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -15489,19 +15892,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"fAf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/edge{ - dir = 4 - }, -/area/station/engineering/storage/tech) "fAn" = ( /obj/effect/spawner/structure/window, /obj/structure/disposalpipe/segment{ @@ -15546,15 +15936,6 @@ /obj/machinery/light/cold/directional/south, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"fAP" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/mapping_helpers/mail_sorting/science/experimentor_lab, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "fAY" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/tile/blue/full, @@ -15589,15 +15970,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"fBs" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/small, -/area/station/commons/fitness/locker_room) "fBw" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -15610,18 +15982,20 @@ }, /turf/open/floor/stone, /area/station/service/bar) -"fBN" = ( -/obj/structure/flora/bush/flowers_yw/style_3{ - pixel_x = 3; - pixel_y = 2 +"fBC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/light/floor, -/obj/effect/light_emitter/fake_outdoors, -/obj/effect/turf_decal/siding/wood{ - dir = 10 +/obj/machinery/button/door/directional/west{ + id = "engsm"; + name = "Radiation Shutters Control"; + req_access = list("engineering") }, -/turf/open/floor/grass/Airless, -/area/station/hallway/primary/central/aft) +/obj/structure/cable, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "fBO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/tank_holder/extinguisher, @@ -15650,62 +16024,6 @@ }, /turf/open/floor/wood, /area/station/service/chapel/funeral) -"fCs" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/subspace/crystal{ - pixel_x = 4; - pixel_y = -1 - }, -/obj/item/stock_parts/subspace/crystal{ - pixel_x = 4; - pixel_y = -1 - }, -/obj/item/stock_parts/subspace/crystal{ - pixel_x = 4; - pixel_y = -1 - }, -/obj/item/stock_parts/subspace/treatment{ - pixel_x = -3; - pixel_y = 9 - }, -/obj/item/stock_parts/subspace/treatment{ - pixel_x = -3; - pixel_y = 9 - }, -/obj/item/stock_parts/subspace/treatment{ - pixel_x = -3; - pixel_y = 9 - }, -/obj/item/stock_parts/subspace/filter{ - pixel_x = -4; - pixel_y = -1 - }, -/obj/item/stock_parts/subspace/filter{ - pixel_x = -4; - pixel_y = -1 - }, -/obj/item/stock_parts/subspace/filter{ - pixel_x = -4; - pixel_y = -1 - }, -/obj/item/stock_parts/subspace/filter{ - pixel_x = -4; - pixel_y = -1 - }, -/obj/item/stock_parts/subspace/analyzer{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/stock_parts/subspace/analyzer{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/stock_parts/subspace/analyzer{ - pixel_x = 6; - pixel_y = 8 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "fCu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -15729,21 +16047,19 @@ /obj/effect/mapping_helpers/airlock/access/all/supply, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) +"fCO" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/lobby) "fCS" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark/small, /area/station/security/brig) -"fDd" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "fDf" = ( /obj/machinery/door/airlock/atmos/glass{ name = "Incinerator Access" @@ -15859,16 +16175,6 @@ }, /turf/open/floor/eighties, /area/station/hallway/primary/central/fore) -"fEM" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Cytology Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/research, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/cytology) "fEU" = ( /obj/structure/table, /obj/item/multitool{ @@ -15896,12 +16202,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/service/chapel/funeral) -"fFC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"fFv" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) +/obj/effect/turf_decal/siding/blue{ + dir = 10 + }, +/turf/open/floor/iron/white/small, +/area/station/command/heads_quarters/cmo) "fFD" = ( /obj/effect/turf_decal/siding/blue, /obj/effect/landmark/start/paramedic, @@ -16001,12 +16312,15 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) -"fGE" = ( -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 4 +"fGC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "fGT" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -16040,13 +16354,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"fHk" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/tcommsat/server) "fHv" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -16056,6 +16363,9 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"fHA" = ( +/turf/closed/wall, +/area/station/engineering/storage/tech) "fHD" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -16107,13 +16417,6 @@ dir = 8 }, /area/station/cargo/storage) -"fId" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) "fIe" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 6 @@ -16128,29 +16431,9 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/grimy, /area/station/science/cubicle) -"fIi" = ( -/obj/structure/table/bronze, -/obj/item/food/grown/cannabis{ - pixel_x = -11 - }, -/obj/item/food/grown/cannabis{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/machinery/light/small/directional/north, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/command/heads_quarters/captain/private) "fIj" = ( /turf/open/floor/iron/white/side, /area/station/hallway/primary/central/aft) -"fIl" = ( -/obj/structure/chair/wood{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/stone, -/area/station/service/bar) "fIq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -16158,10 +16441,22 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/cargo/office) +"fIr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/table_or_rack, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/department/science/xenobiology) "fIw" = ( /obj/effect/landmark/navigate_destination/dockescpod, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"fIE" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "fIP" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ dir = 8 @@ -16172,14 +16467,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"fJl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/item/kirbyplants/random, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/xenobiology) "fJn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -16199,13 +16486,12 @@ /obj/effect/mapping_helpers/airlock/access/all/command/minisat, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/ai_monitored/turret_protected/aisat/teleporter) -"fJK" = ( +"fJY" = ( +/obj/structure/sign/poster/official/random/directional/north, +/obj/effect/landmark/start/hangover, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/floor/iron/dark/small, -/area/station/tcommsat/server) +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "fJZ" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/tile/yellow{ @@ -16224,11 +16510,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat_interior) -"fKd" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) "fKl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -16254,9 +16535,31 @@ "fKx" = ( /obj/structure/transit_tube/horizontal, /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/space/basic, /area/space/nearstation) +"fKI" = ( +/obj/machinery/holopad, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload_foyer) +"fKK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/directional/north{ + c_tag = "Xenobiology - Cell 1"; + name = "xenobiology camera"; + network = list("ss13","xeno","rd") + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) "fKN" = ( /obj/effect/landmark/event_spawn, /obj/machinery/computer/security/telescreen/test_chamber/directional/west, @@ -16288,18 +16591,6 @@ /obj/item/assembly/mousetrap/armed, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) -"fLk" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) "fLn" = ( /obj/structure/table/wood/fancy/red, /obj/structure/mirror/directional/west, @@ -16395,6 +16686,13 @@ /obj/structure/chair/stool/directional/north, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/fore) +"fMj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/junction/flip, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "fMs" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -16469,15 +16767,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) -"fNi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "fNu" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -16519,6 +16808,17 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/catwalk_floor, /area/station/ai_monitored/turret_protected/ai) +"fNN" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "fNR" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/left/directional/north{ @@ -16543,22 +16843,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"fNZ" = ( +"fOe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /turf/open/floor/plating, -/area/station/maintenance/central/lesser) +/area/station/maintenance/starboard/lesser) "fOg" = ( /obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/sand/plating, @@ -16578,10 +16868,6 @@ }, /turf/open/floor/iron/dark/diagonal, /area/station/service/bar) -"fOw" = ( -/obj/machinery/computer/arcade/amputation, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "fOJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -16607,12 +16893,24 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"fPm" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "fPu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable/layer3, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat_interior) +"fPx" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/robotics, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) "fPK" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 4 @@ -16638,21 +16936,6 @@ /obj/structure/alien/weeds, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"fPV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/dock) "fPY" = ( /obj/effect/turf_decal/siding/yellow/corner{ dir = 4 @@ -16682,6 +16965,10 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/small, /area/station/service/janitor) +"fQp" = ( +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron, +/area/station/commons/storage/art) "fQv" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -16698,6 +16985,29 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"fQG" = ( +/obj/structure/table, +/obj/item/flashlight/lamp{ + pixel_y = 7; + pixel_x = -5 + }, +/obj/effect/spawner/random/medical/minor_healing, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"fQK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/research/glass{ + name = "Gun Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/auxlab/firing_range) "fQL" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden{ dir = 8 @@ -16712,31 +17022,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat_interior) -"fRe" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) -"fRq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/rack, -/obj/item/book/manual/wiki/chemistry{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/book/manual/wiki/grenades, -/obj/item/book/manual/wiki/plumbing{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/plunger, -/turf/open/floor/iron, -/area/station/medical/chemistry) "fRv" = ( /obj/structure/table, /obj/effect/turf_decal/siding/thinplating_new/terracotta{ @@ -16766,12 +17051,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos) -"fRV" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "fRX" = ( /obj/machinery/door/airlock/public/glass{ name = "Study" @@ -16783,37 +17062,25 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood/parquet, /area/station/service/library) +"fSb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door/directional/east{ + name = "Abandoned Lab Shutters"; + id = "abandoned_lab" + }, +/obj/item/bot_assembly/medbot, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "fSf" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/prison) -"fSx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/broken_flooring/singular/directional/east, -/obj/structure/steam_vent, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "fSB" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/aft) -"fSC" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/science/xenobiology) -"fSG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/iron/white/small, -/area/station/medical/psychology) "fSU" = ( /obj/structure/disposalpipe/segment, /obj/machinery/camera/autoname/directional/west, @@ -16884,6 +17151,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"fTN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/storage/box/petridish{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/science/cytology) "fUb" = ( /obj/effect/turf_decal/arrows{ dir = 8 @@ -16896,30 +17174,12 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"fUo" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "fUC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral, /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"fUG" = ( -/obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/station/science/cubicle) "fUI" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -16927,12 +17187,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"fUN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/construction) "fUO" = ( /obj/machinery/turretid{ control_area = "/area/station/ai_monitored/turret_protected/aisat_interior"; @@ -16985,6 +17239,21 @@ }, /turf/open/floor/stone, /area/station/service/bar) +"fVm" = ( +/obj/effect/turf_decal/tile/green/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/chemistry) +"fVy" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/siding/green{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "fVA" = ( /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/small, @@ -16998,11 +17267,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs) -"fVM" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) "fVU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -17010,23 +17274,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"fWi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wideplating/dark/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) -"fWj" = ( -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/office) "fWr" = ( /obj/structure/closet/crate, /obj/structure/barricade/wooden/crude, @@ -17038,24 +17285,31 @@ /obj/item/kirbyplants/random, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/aft) +"fWA" = ( +/obj/structure/table, +/obj/machinery/status_display/supply{ + pixel_x = 1; + pixel_y = 32 + }, +/obj/machinery/fax/auto_name{ + pixel_x = -1; + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/office) +"fWG" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/machinery/chem_dispenser, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) "fWJ" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"fWT" = ( -/obj/machinery/button/door/directional/east{ - id = "AuxToilet2"; - name = "Lock Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/structure/toilet, -/obj/machinery/light/small/directional/west, -/obj/effect/spawner/random/trash/soap{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/science/xenobiology) "fXg" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -17086,16 +17340,21 @@ }, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat/foyer) -"fXs" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +"fXp" = ( +/obj/machinery/holopad, +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) +"fXA" = ( +/obj/machinery/door/airlock/grunge{ + name = "Vacant Comissary" }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 6 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/textured_half{ + dir = 1 }, -/area/station/engineering/storage/tech) +/area/station/maintenance/central/lesser) "fXB" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17138,6 +17397,20 @@ /obj/effect/turf_decal/siding/wood/corner, /turf/open/floor/wood, /area/station/service/chapel) +"fYj" = ( +/obj/item/restraints/handcuffs, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/obj/machinery/recharger{ + pixel_x = -5; + pixel_y = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/checkpoint/science) "fYr" = ( /obj/structure/table, /obj/item/extinguisher/empty, @@ -17145,6 +17418,19 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark, /area/station/maintenance/department/engine/atmos) +"fYy" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) +"fYE" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/spawner/random/vending/colavend, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/cargo/lobby) "fYH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17177,6 +17463,15 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/grimy, /area/station/tcommsat/server) +"fZG" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "fZK" = ( /obj/structure/table/wood, /obj/machinery/computer/libraryconsole/bookmanagement{ @@ -17293,16 +17588,27 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/kitchen/small, /area/station/service/kitchen) -"gby" = ( +"gbq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/herringbone, -/area/station/commons/dorms) +/obj/structure/cable, +/turf/open/floor/iron/edge{ + dir = 1 + }, +/area/station/engineering/storage/tech) "gbD" = ( /obj/machinery/hydroponics/soil, /obj/item/food/grown/mushroom/reishi, /obj/structure/alien/weeds, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) +"gbE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating, +/area/station/science/ordnance/storage) "gbG" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -17348,11 +17654,28 @@ "gcz" = ( /turf/closed/wall/r_wall, /area/station/maintenance/fore/lesser) +"gcG" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "gcL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/crate_abandoned, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"gcZ" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/courtroom) "gdn" = ( /obj/item/kirbyplants/organic/applebush, /obj/effect/turf_decal/tile/red{ @@ -17365,12 +17688,26 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) +"gdp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/directional/south{ + c_tag = "Xenobiology - Cell 6"; + name = "xenobiology camera"; + network = list("ss13","xeno","rd") + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 9 + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) "gdr" = ( /turf/closed/wall/rust, /area/station/maintenance/fore/lesser) "gdx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) "gdA" = ( @@ -17418,6 +17755,22 @@ /obj/item/flashlight/lamp/green, /turf/open/floor/iron/smooth, /area/station/maintenance/port/aft) +"gee" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/table, +/obj/item/reagent_containers/dropper, +/obj/machinery/reagentgrinder{ + pixel_x = -7; + pixel_y = 17 + }, +/turf/open/floor/iron, +/area/station/medical/chemistry) "geg" = ( /obj/machinery/door/airlock{ name = "Gas Lab Maintenance" @@ -17459,25 +17812,12 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/security/execution/education) -"geM" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 +"geQ" = ( +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/science/xenobiology) -"geS" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) +/turf/open/floor/iron/dark, +/area/station/medical/chemistry) "geW" = ( /obj/machinery/computer/security/hos{ dir = 4 @@ -17508,16 +17848,20 @@ "gfs" = ( /turf/closed/wall/r_wall, /area/station/hallway/secondary/command) -"gfu" = ( -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, -/obj/effect/mapping_helpers/airalarm/link{ - chamber_id = "ordnancefreezer" +"gfz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/medical/glass{ + name = "Primary Treatment Centre" }, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/iron/white/small, +/area/station/medical/treatment_center) "gfA" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/machinery/atmospherics/pipe/heat_exchanging/junction{ @@ -17525,6 +17869,18 @@ }, /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"gfD" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wideplating/dark, +/turf/open/floor/iron/small, +/area/station/service/barber) +"gfF" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "gfJ" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -17570,15 +17926,15 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/tram, /area/station/security/tram) -"ggi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/west, +"ggj" = ( +/obj/structure/cable, +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/camera, +/obj/machinery/firealarm/directional/north, +/obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron, -/area/station/hallway/primary/aft) +/area/station/commons/storage/art) "ggn" = ( /obj/effect/decal/cleanable/oil, /obj/machinery/byteforge, @@ -17602,6 +17958,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) +"ggE" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "ggJ" = ( /obj/machinery/light/no_nightlight/directional/east, /obj/structure/sign/poster/official/nanotrasen_logo/directional/east, @@ -17680,14 +18043,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/medical/virology) -"ghC" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/effect/landmark/start/scientist, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) "ghD" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/wood, @@ -17701,14 +18056,6 @@ }, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/hop) -"ghK" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/item/kirbyplants/random, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/lower) "ghL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -17733,6 +18080,13 @@ /obj/structure/cable, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) +"gif" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "gip" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, @@ -17776,23 +18130,32 @@ /obj/machinery/digital_clock/directional/south, /turf/open/floor/wood/tile, /area/station/command/bridge) -"giW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) "giY" = ( /obj/structure/window/spawner/directional/west, /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"gjg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 +"gjc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/light/floor, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 }, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron, -/area/station/science/xenobiology) +/turf/open/floor/stone, +/area/station/service/bar) +"gje" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "gjn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -17806,6 +18169,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/smooth_large, /area/station/engineering/main) +"gjQ" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload) "gjS" = ( /obj/effect/turf_decal/siding/thinplating_new/terracotta{ dir = 1 @@ -17847,11 +18217,23 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/port/aft) +"gky" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/aft) "gkE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/floor/grass, /area/station/medical/virology) +"gkJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/west, +/obj/structure/table, +/obj/item/wrench, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/construction) "gkW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -17865,6 +18247,25 @@ /obj/machinery/suit_storage_unit/atmos, /turf/open/floor/iron/dark, /area/station/engineering/atmos/office) +"glC" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) +"glF" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/airlock/command/glass{ + name = "Telecommunications Server Room" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "comms-entrance-north" + }, +/obj/structure/cable, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) "glM" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -17872,6 +18273,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"glQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/food_cart, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "glT" = ( /obj/effect/landmark/event_spawn, /obj/structure/table, @@ -17925,6 +18332,10 @@ }, /turf/open/floor/iron/white/small, /area/station/medical/cryo) +"gmu" = ( +/obj/structure/closet/crate/grave/filled, +/turf/open/misc/dirt/station, +/area/station/medical/morgue) "gmv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/item/radio/intercom/directional/north, @@ -17940,14 +18351,13 @@ }, /turf/open/floor/wood, /area/station/engineering/atmospherics_engine) -"gnp" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) +"gnj" = ( +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/effect/spawner/random/entertainment/drugs, +/obj/effect/spawner/random/entertainment/drugs, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "gnA" = ( /obj/structure/cable, /obj/machinery/light/small/directional/north, @@ -17962,6 +18372,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/project) +"gnG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "gnK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -18018,6 +18436,22 @@ }, /turf/open/floor/light/colour_cycle/dancefloor_b, /area/station/maintenance/starboard/central) +"goe" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/hallway/secondary/command) +"gog" = ( +/obj/machinery/holopad, +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/storage/tech) "gom" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 6 @@ -18028,21 +18462,6 @@ "gow" = ( /turf/open/floor/tram, /area/station/maintenance/department/medical/central) -"goz" = ( -/obj/structure/broken_flooring/singular/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) -"goA" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "goB" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 6 @@ -18060,12 +18479,6 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/dock) -"goS" = ( -/obj/machinery/incident_display/delam/directional/north, -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/turf/open/floor/iron/small, -/area/station/engineering/break_room) "goT" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -18087,13 +18500,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"gpy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/toy/plush/slimeplushie{ - name = "Nanners" - }, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) "gpA" = ( /obj/effect/turf_decal/siding/thinplating/terracotta, /obj/effect/decal/cleanable/dirt, @@ -18123,6 +18529,15 @@ }, /turf/open/floor/iron, /area/station/commons/storage/tools) +"gpT" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 9 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "gpV" = ( /obj/structure/chair/stool/directional/north, /turf/open/floor/carpet/orange, @@ -18170,6 +18585,11 @@ /obj/effect/turf_decal/siding/wideplating, /turf/open/floor/wood, /area/station/engineering/atmos/pumproom) +"gqV" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/structure/cable, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "grm" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -18180,6 +18600,12 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on, /turf/open/floor/iron/dark/smooth_large, /area/station/security/execution/education) +"gro" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/power/tracker, +/obj/structure/cable, +/turf/open/space/basic, +/area/station/solars/starboard/fore) "grx" = ( /obj/machinery/vending/wardrobe/medi_wardrobe, /obj/structure/window/reinforced/spawner/directional/west, @@ -18202,14 +18628,17 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security) -"gsh" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"gsr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/herringbone, +/area/station/commons/dorms) +"gsu" = ( +/obj/machinery/door/airlock{ + name = "Abandoned Brewery" }, -/turf/open/floor/iron/white/side, -/area/station/science/lobby) +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "gsv" = ( /obj/effect/turf_decal/siding{ dir = 1 @@ -18221,6 +18650,20 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/white/small, /area/station/science/lab) +"gsw" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) "gsY" = ( /turf/open/floor/iron/smooth, /area/station/engineering/break_room) @@ -18231,6 +18674,14 @@ }, /turf/open/floor/iron/small, /area/station/commons/fitness/locker_room) +"gto" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/research) "gtr" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/vending/cigarette, @@ -18252,15 +18703,6 @@ dir = 4 }, /area/station/hallway/secondary/recreation) -"gtJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/bed/medical/emergency, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/central) "guh" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "atmos to engine" @@ -18292,6 +18734,11 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) +"guu" = ( +/obj/effect/turf_decal/tile/dark_red/fourcorners, +/obj/machinery/vending/wardrobe/sec_wardrobe, +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs) "guz" = ( /obj/structure/cable, /obj/item/kirbyplants/random, @@ -18351,20 +18798,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/small, /area/station/engineering/atmos/storage/gas) -"gwm" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "gwx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -18377,6 +18810,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"gwI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/alien/weeds, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "gwQ" = ( /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom/directional/east, @@ -18438,14 +18877,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) -"gxl" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/structure/filingcabinet/employment, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/tile, -/area/station/service/lawoffice) "gxo" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -18455,14 +18886,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/project) -"gxq" = ( -/obj/machinery/light/floor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/floor/iron/dark/small, -/area/station/tcommsat/server) "gxs" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/research/glass{ @@ -18540,14 +18963,6 @@ /obj/structure/window/spawner/directional/east, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) -"gye" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/lobby) "gyi" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt, @@ -18591,6 +19006,28 @@ /obj/structure/table/wood, /turf/open/floor/stone, /area/station/service/bar) +"gyF" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) +"gyZ" = ( +/obj/machinery/door/airlock/engineering{ + name = "Auxillary Base Construction" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base, +/obj/machinery/door/firedoor, +/obj/effect/landmark/navigate_destination, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/construction/mining/aux_base) "gzs" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 5 @@ -18624,6 +19061,12 @@ "gzF" = ( /turf/closed/wall/r_wall, /area/station/security/prison/rec) +"gzL" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/floor/iron/dark/small, +/area/station/tcommsat/server) "gzM" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 @@ -18634,6 +19077,13 @@ }, /turf/open/floor/wood, /area/station/engineering/atmos/pumproom) +"gzS" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "gzY" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, @@ -18748,29 +19198,6 @@ dir = 8 }, /area/station/hallway/primary/central/fore) -"gBx" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/table/glass, -/obj/machinery/recharger{ - pixel_x = 8; - pixel_y = 3 - }, -/obj/machinery/button/door{ - id = "aibridge"; - name = "AI Maintenance Space Bridge Control"; - req_access = list("command"); - pixel_x = -3; - pixel_y = 7 - }, -/obj/machinery/button/door{ - id = "bridge blast"; - name = "Bridge Access Blast Door Control"; - req_access = list("command"); - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/glass/reinforced, -/area/station/command/bridge) "gBz" = ( /obj/machinery/computer/communications, /turf/open/floor/glass/reinforced, @@ -18816,14 +19243,14 @@ /obj/structure/table/glass, /turf/open/floor/glass/reinforced, /area/station/command/bridge) -"gCe" = ( +"gCf" = ( +/obj/machinery/telecomms/broadcaster/preset_right, /obj/structure/cable, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "gCg" = ( /obj/machinery/computer/records/medical, /obj/effect/turf_decal/siding/blue{ @@ -18934,12 +19361,6 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"gDQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark/small, -/area/station/tcommsat/server) "gEa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18989,6 +19410,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"gEy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/floor/iron/dark/small, +/area/station/tcommsat/server) "gEG" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, @@ -19010,6 +19439,22 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"gEY" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/research{ + name = "Xenobiology Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "xeno_blastdoor"; + name = "Biohazard Containment Door" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron, +/area/station/science/xenobiology) "gFg" = ( /obj/machinery/computer/cargo/request, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -19043,13 +19488,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"gFs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/small, -/area/station/medical/psychology) "gFu" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/spawner/random/maintenance, @@ -19082,6 +19520,25 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) +"gFI" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/closet/emcloset, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) +"gFP" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/command/heads_quarters/rd) +"gFU" = ( +/obj/machinery/door/airlock{ + name = "Auxiliary Bathrooms" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) "gFX" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt, @@ -19121,15 +19578,6 @@ }, /turf/open/floor/carpet/executive, /area/station/command/heads_quarters/captain/private) -"gGx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/wood/tile, -/area/station/service/bar) "gGy" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange{ dir = 4 @@ -19151,42 +19599,18 @@ /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/prison) -"gGK" = ( -/obj/effect/landmark/start/roboticist, -/turf/open/floor/iron/smooth_large, -/area/station/science/robotics/mechbay) +"gGD" = ( +/obj/machinery/light/small/dim/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "gGO" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, /area/station/engineering/atmospherics_engine) -"gGQ" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) -"gHe" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/obj/item/melee/chainofcommand, -/obj/item/binoculars, -/turf/open/floor/iron/smooth, -/area/station/command/bridge) "gHg" = ( /obj/machinery/status_display/ai/directional/east, /turf/open/floor/glass, /area/station/hallway/primary/central/aft) -"gHl" = ( -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs) "gHm" = ( /obj/machinery/computer/station_alert/station_only{ dir = 1 @@ -19204,13 +19628,6 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) -"gHT" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "gHV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -19259,20 +19676,6 @@ /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"gIv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/east, -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/service/bar) "gIx" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -19296,20 +19699,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"gIR" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "Research Director's Office" - }, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" - }, +"gII" = ( +/obj/machinery/airalarm/directional/south, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/research) +/turf/open/floor/iron/dark/diagonal, +/area/station/ai_monitored/command/storage/eva) "gIS" = ( /obj/structure/table/wood, /obj/item/reagent_containers/cup/glass/bottle/holywater, @@ -19343,13 +19739,17 @@ }, /turf/open/floor/plating, /area/station/cargo/sorting) -"gJj" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/broken_flooring/pile/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +"gJc" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured, +/area/station/command/meeting_room) "gJo" = ( /turf/open/floor/iron/stairs{ dir = 8 @@ -19373,6 +19773,13 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"gJz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "gJD" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -19383,6 +19790,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"gJO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "gJQ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -19390,15 +19805,16 @@ /obj/item/cigarette/cigar/havana, /turf/open/floor/light/colour_cycle/dancefloor_b, /area/station/maintenance/starboard/central) -"gJS" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/smart/simple/general/visible, +"gJT" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/area/station/science/xenobiology) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "gJY" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/spawner/random/maintenance/two, @@ -19408,14 +19824,41 @@ /obj/machinery/gateway/centerstation, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/command/gateway) +"gKh" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "gKi" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"gKj" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "gKs" = ( /turf/closed/wall, /area/station/maintenance/disposal/incinerator) +"gKu" = ( +/obj/effect/spawner/random/trash/moisture_trap, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"gKz" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/office) "gKE" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/broken_flooring/pile/directional/east, @@ -19425,15 +19868,11 @@ "gKL" = ( /turf/closed/wall/r_wall, /area/station/engineering/break_room) -"gKQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 4 - }, -/turf/open/floor/iron/small, -/area/station/service/barber) +"gKM" = ( +/obj/structure/table, +/obj/item/flatpack/flatpacker, +/turf/open/floor/iron/dark, +/area/station/science/lab) "gKT" = ( /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, @@ -19441,6 +19880,13 @@ "gLb" = ( /turf/closed/wall, /area/station/medical/virology) +"gLe" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/item/radio/intercom/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation/entertainment) "gLg" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/camera/autoname/directional/north, @@ -19520,6 +19966,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"gLW" = ( +/obj/structure/broken_flooring/side/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "gLY" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -19539,10 +19990,18 @@ /turf/open/floor/plating, /area/station/command/gateway) "gMe" = ( -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/tcommsat/server) +"gMl" = ( +/obj/machinery/power/terminal, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) +/turf/open/floor/iron/smooth, +/area/station/maintenance/solars/starboard/fore) "gMq" = ( /obj/machinery/vending/clothing, /obj/effect/turf_decal/siding/wideplating/dark{ @@ -19588,22 +20047,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/rd) -"gMR" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/research{ - name = "Xenobiology Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "xeno_blastdoor"; - name = "Biohazard Containment Door" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/science/xenobiology) "gMV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -19648,6 +20091,11 @@ }, /turf/open/floor/iron/small, /area/station/engineering/break_room) +"gNv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/grille, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/science/xenobiology) "gNH" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 6 @@ -19665,24 +20113,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/port) -"gNX" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) -"gOh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "gOm" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/equipment) -"gOq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "gOt" = ( /obj/structure/flora/tree/jungle/small/style_2, /obj/effect/turf_decal/weather/dirt{ @@ -19714,12 +20147,6 @@ }, /turf/open/floor/iron, /area/station/science/xenobiology) -"gOR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "gOS" = ( /obj/machinery/rnd/production/techfab/department/cargo, /obj/effect/turf_decal/delivery/white, @@ -19749,6 +20176,14 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/small, /area/station/security/checkpoint/engineering) +"gPf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "gPm" = ( /obj/machinery/computer/monitor{ dir = 1 @@ -19761,6 +20196,26 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"gPx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/requests_console/directional/west{ + department = "Chief Medical Officer's Desk"; + name = "Chief Medical Officer's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/cmo) +"gPE" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white/small, +/area/station/medical/psychology) "gPN" = ( /obj/structure/fermenting_barrel, /turf/open/floor/plating, @@ -19797,6 +20252,15 @@ /obj/structure/sign/warning/chem_diamond, /turf/closed/wall, /area/station/medical/chemistry) +"gQh" = ( +/mob/living/basic/goat/pete, +/obj/effect/turf_decal/weather/snow, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "gQy" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/cable, @@ -19837,19 +20301,22 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/commons/storage/tools) +"gRN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/kirbyplants/random, +/obj/machinery/status_display/ai/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "gRX" = ( /obj/machinery/newscaster/directional/south, /obj/structure/broken_flooring/singular/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"gSk" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/power/floodlight, -/obj/structure/alien/weeds, -/obj/effect/gibspawner/human, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "gSr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -19925,28 +20392,6 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"gTH" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/command/meeting_room) -"gTK" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/green{ - dir = 8 - }, -/obj/machinery/airalarm/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) "gTO" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, @@ -19982,33 +20427,6 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"gUe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/small, -/area/station/hallway/primary/aft) -"gUk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"gUm" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/airlock/command{ - name = "Council Chambers" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_half, -/area/station/command/bridge) "gUn" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 @@ -20016,12 +20434,34 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"gUp" = ( +/obj/structure/table, +/obj/machinery/door/window/right/directional/north{ + name = "Core Modules"; + req_access = list("captain") + }, +/obj/effect/spawner/random/aimodule/harmless, +/obj/structure/cable, +/turf/open/floor/circuit/red, +/area/station/ai_monitored/turret_protected/ai_upload) "gUC" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"gUE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "gUG" = ( /obj/effect/turf_decal/siding/red{ dir = 1 @@ -20067,6 +20507,11 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"gVE" = ( +/obj/structure/bodycontainer/morgue, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "gVL" = ( /obj/effect/turf_decal/weather/dirt{ dir = 1 @@ -20079,19 +20524,9 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/wood/large, /area/station/command/corporate_suite) -"gWa" = ( -/obj/effect/turf_decal/siding, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lab) "gWb" = ( /turf/closed/wall, /area/station/command/heads_quarters/hos) -"gWf" = ( -/obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) "gWk" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood{ @@ -20110,6 +20545,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security/processing) +"gWN" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "gXf" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, @@ -20128,6 +20568,17 @@ /obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron/cafeteria, /area/station/science/breakroom) +"gXy" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark/textured, +/area/station/command/meeting_room) "gXB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -20140,6 +20591,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/lobby) +"gXE" = ( +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/south, +/obj/structure/flora/rock/pile/jungle/style_random, +/obj/structure/sign/departments/restroom/directional/west, +/turf/open/misc/sandy_dirt, +/area/station/hallway/secondary/entry) "gXL" = ( /obj/structure/cable, /obj/machinery/door/airlock{ @@ -20175,23 +20633,50 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"gXV" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/station/medical/morgue) +"gXX" = ( +/obj/machinery/door/airlock/security{ + name = "Customs Checkpoint" + }, +/obj/effect/mapping_helpers/airlock/access/any/security/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/textured_half, +/area/station/security/checkpoint/customs) +"gXY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "gYq" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/maintenance/starboard/greater) -"gYK" = ( -/obj/structure/sign/poster/official/random/directional/east, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 8 +"gYu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wideplating_new/terracotta{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) +"gZg" = ( +/obj/machinery/light/cold/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/command/meeting_room) +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) "gZi" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -20282,18 +20767,6 @@ }, /turf/open/floor/iron, /area/station/cargo/lobby) -"haq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/central) "haO" = ( /obj/effect/turf_decal/stripes/white/end, /obj/machinery/door/poddoor/shutters{ @@ -20311,13 +20784,17 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark/small, /area/station/ai_monitored/security/armory) -"hbk" = ( -/obj/effect/turf_decal/siding{ - dir = 4 +"hbi" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) +/obj/effect/turf_decal/siding{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/lobby) "hbm" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -20345,13 +20822,6 @@ }, /turf/open/floor/iron, /area/station/commons/storage/tools) -"hbz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) "hbG" = ( /obj/machinery/light_switch/directional/west, /obj/machinery/camera/autoname/directional/north, @@ -20393,14 +20863,6 @@ /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/iron/white, /area/station/medical/virology) -"hbY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/plastic{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "hcb" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line, @@ -20444,6 +20906,18 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/smooth, /area/station/commons/storage/tools) +"hcm" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "hcn" = ( /obj/structure/table, /obj/machinery/light/small/directional/south, @@ -20483,15 +20957,6 @@ /obj/effect/mapping_helpers/requests_console/assistance, /turf/open/floor/iron/dark/small, /area/station/ai_monitored/security/armory) -"hcz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/engineering/storage/tech) "hcE" = ( /obj/effect/turf_decal/siding/thinplating_new/terracotta{ dir = 1 @@ -20502,19 +20967,13 @@ /obj/effect/turf_decal/siding/yellow, /turf/open/floor/wood/tile, /area/station/command/bridge) -"hcQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 6 +"hcF" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/trinary/mixer/flipped{ + dir = 8 }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/stone, -/area/station/service/bar) +/turf/open/floor/plating, +/area/station/science/ordnance/storage) "hcT" = ( /obj/machinery/computer/slot_machine{ pixel_y = 2 @@ -20523,16 +20982,6 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/east, /turf/open/floor/carpet/lone, /area/station/service/abandoned_gambling_den) -"hcU" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) "hcY" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -20542,29 +20991,6 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron, /area/station/security/tram) -"hdd" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/glass, -/obj/item/folder/red{ - pixel_y = 7; - pixel_x = 7 - }, -/obj/machinery/cell_charger{ - pixel_x = -1; - pixel_y = -1 - }, -/turf/open/floor/iron/smooth, -/area/station/command/bridge) -"hdg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/smooth, -/area/station/command/bridge) "hdo" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -20588,24 +21014,6 @@ /obj/machinery/light/floor, /turf/open/floor/noslip, /area/station/medical/medbay/central) -"hdH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "Bridge Blast Door" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/command/bridge) "hdI" = ( /obj/structure/table/wood, /obj/item/pai_card, @@ -20640,11 +21048,6 @@ /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"hdZ" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) "hed" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -20661,9 +21064,36 @@ }, /turf/open/floor/plating, /area/station/command/corporate_suite) +"hej" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Genetics" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/genetics, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/research) "hem" = ( /turf/closed/wall, /area/station/hallway/primary/fore) +"her" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white/side, +/area/station/hallway/primary/central/aft) +"het" = ( +/obj/machinery/door/window/brigdoor/left/directional/east{ + name = "Secure Creature Pen"; + req_access = list("research") + }, +/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/science/xenobiology) "heB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/box/red/corners, @@ -20713,6 +21143,20 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) +"heQ" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Ordnance Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) "heT" = ( /obj/structure/table, /obj/machinery/airalarm/directional/west, @@ -20759,15 +21203,23 @@ /obj/structure/lattice, /turf/open/misc/asteroid/airless, /area/space/nearstation) -"hfI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 +"hfH" = ( +/obj/machinery/door/airlock/research{ + name = "Mech Bay" }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/tcommsat/server) +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/robotics/mechbay) +"hga" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/service_all, +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/bot, +/obj/structure/sign/poster/official/random/directional/south, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "hgf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/green{ @@ -20791,29 +21243,22 @@ }, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/aft) -"hgp" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/office) -"hgt" = ( -/obj/machinery/door/airlock/public{ - name = "Locker Room" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half, -/area/station/commons/fitness/recreation) "hgv" = ( /obj/effect/turf_decal/delivery/white, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/small/directional/east, /turf/open/floor/iron/smooth, /area/station/engineering/main) +"hgx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "hgF" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -20830,18 +21275,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"hgP" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) -"hgY" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/power/tracker, -/obj/structure/cable, -/turf/open/space/basic, -/area/station/solars/starboard/fore) "hgZ" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 @@ -20853,15 +21286,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/medical/central) -"hhg" = ( -/obj/machinery/door/airlock/security{ - name = "Customs Checkpoint" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half, -/area/station/security/checkpoint/customs) "hhk" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/pdapainter{ @@ -20889,10 +21313,6 @@ /obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"hhK" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "hhL" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -20909,14 +21329,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/fore/greater) +"hia" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "hic" = ( /obj/machinery/holopad, /turf/open/floor/wood/large, /area/station/command/corporate_suite) -"hio" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/science/robotics/mechbay) "hiq" = ( /obj/structure/closet{ name = "Evidence Closet 1" @@ -20948,11 +21371,15 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"hiV" = ( -/obj/effect/spawner/structure/window/reinforced, +"hiO" = ( /obj/structure/cable, -/turf/open/floor/engine, -/area/station/science/cytology) +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"hiU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) "hjk" = ( /obj/structure/railing{ dir = 4 @@ -20963,6 +21390,10 @@ dir = 1 }, /area/station/engineering/lobby) +"hjr" = ( +/obj/effect/turf_decal/siding/blue/corner, +/turf/open/floor/iron/white/small, +/area/station/medical/storage) "hjx" = ( /obj/structure/bed/medical/emergency, /obj/effect/turf_decal/stripes/line{ @@ -20971,28 +21402,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/plating, /area/station/command/gateway) -"hjz" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) -"hjA" = ( -/obj/structure/table, -/obj/machinery/status_display/supply{ - pixel_x = 1; - pixel_y = 32 - }, -/obj/machinery/fax/auto_name{ - pixel_x = -1; - pixel_y = 6 - }, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/office) "hjQ" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral{ @@ -21040,13 +21449,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/plating, /area/station/command/gateway) -"hkt" = ( -/obj/effect/turf_decal/siding/dark_blue{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "hky" = ( /obj/item/kirbyplants/organic/applebush, /obj/effect/turf_decal/tile/red{ @@ -21084,25 +21486,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"hkH" = ( -/obj/machinery/door/window/left/directional/south, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark, -/obj/effect/turf_decal/bot, -/obj/structure/rack, -/obj/item/clothing/shoes/magboots{ - pixel_x = -4; - pixel_y = 3 - }, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/shoes/magboots{ - pixel_x = 4; - pixel_y = -3 - }, -/turf/open/floor/iron/dark/smooth_edge, -/area/station/ai_monitored/command/storage/eva) "hkL" = ( /obj/structure/cable, /turf/open/floor/wood/large, @@ -21112,12 +21495,6 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"hkQ" = ( -/obj/machinery/computer/rdconsole, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/lab) "hkW" = ( /obj/structure/closet/crate/goldcrate, /obj/effect/turf_decal/bot_white/right, @@ -21125,6 +21502,13 @@ /obj/machinery/status_display/ai/directional/west, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/command/nuke_storage) +"hle" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "hlC" = ( /obj/effect/spawner/structure/window, /obj/effect/turf_decal/bot{ @@ -21173,16 +21557,33 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/tram, /area/station/security/tram) +"hmg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/green{ + dir = 6 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/dark/small, +/area/station/medical/chemistry) "hmk" = ( /obj/structure/chair/stool/directional/east, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/port/aft) -"hmn" = ( +"hmq" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/airlock/command/glass{ + name = "Telecommunications Server Room" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "comms-entrance-south" + }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/hallway/primary/central/aft) +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) "hmt" = ( /obj/structure/closet/crate, /obj/item/stack/license_plates/empty/fifty, @@ -21201,11 +21602,6 @@ }, /turf/open/floor/wood, /area/station/service/chapel) -"hmH" = ( -/obj/effect/spawner/xmastree, -/obj/structure/flora/tree/jungle/style_3, -/turf/open/floor/grass, -/area/station/service/chapel) "hmK" = ( /obj/machinery/door/airlock/wood{ name = "Bar Backroom" @@ -21224,6 +21620,17 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"hmS" = ( +/obj/effect/turf_decal/trimline/white/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/white/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/white/mid_joiner, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/commons/fitness/recreation) "hnf" = ( /obj/item/bikehorn/rubberducky{ pixel_x = -6; @@ -21242,6 +21649,29 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"hnp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/filingcabinet/employment, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/wood/tile, +/area/station/service/lawoffice) +"hnq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/status_display/ai/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"hnw" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "hnO" = ( /obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ @@ -21260,6 +21690,19 @@ /obj/structure/tank_holder/anesthetic, /turf/open/floor/iron, /area/station/science/robotics/augments) +"hnQ" = ( +/obj/effect/turf_decal/weather/snow, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "hnS" = ( /obj/structure/cable, /turf/open/floor/catwalk_floor, @@ -21292,35 +21735,19 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"hok" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/science/lobby) -"hon" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/trinary/mixer/flipped{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/science/ordnance/storage) "hop" = ( /turf/closed/wall, /area/station/service/chapel/funeral) -"hoG" = ( -/obj/effect/landmark/start/scientist, -/obj/structure/cable, +"hox" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, -/area/station/science/research) +/area/station/hallway/secondary/entry) "hoN" = ( -/obj/effect/turf_decal/siding/dark/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/command/bridge) +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "hoQ" = ( /obj/structure/window/spawner/directional/east, /obj/structure/flora/bush/flowers_yw/style_random, @@ -21374,15 +21801,18 @@ }, /turf/open/floor/stone, /area/station/command/corporate_suite) -"hqc" = ( -/obj/effect/turf_decal/stripes/line{ +"hqq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/iron/white/side{ - dir = 8 +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 }, -/area/station/science/lobby) +/obj/effect/turf_decal/trimline/neutral/line, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "hqM" = ( /obj/structure/toiletbong{ dir = 1 @@ -21407,6 +21837,15 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"hrg" = ( +/obj/structure/flora/bush/flowers_pp{ + pixel_y = 3 + }, +/obj/effect/dummy/lighting_obj, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/grass/airless, +/area/station/hallway/primary/central/aft) "hrl" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -21426,15 +21865,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"hrC" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/tile/dark_red/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/closet/secure_closet/security, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs) "hrE" = ( /obj/effect/turf_decal/sand/plating, /obj/machinery/door/airlock/external/glass, @@ -21448,6 +21878,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"hrG" = ( +/obj/effect/turf_decal/siding, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/lab) "hrL" = ( /obj/structure/lattice, /obj/structure/railing{ @@ -21499,18 +21934,12 @@ /obj/structure/sign/warning/no_smoking/circle/directional/north, /turf/open/floor/iron/dark/diagonal, /area/station/service/bar) -"hsC" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/mecha{ - dir = 1 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) +"hsD" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/delivery, +/obj/machinery/light_switch/directional/north, +/turf/open/floor/iron/dark/smooth_large, +/area/station/ai_monitored/command/storage/eva) "hsH" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -21528,6 +21957,15 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/hallway/secondary/command) +"hsW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "hsZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -21574,6 +22012,20 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) +"hua" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"hug" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/dark_red/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/closet/secure_closet/security, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs) "huh" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -21586,17 +22038,16 @@ /obj/item/radio/off, /turf/open/floor/iron/smooth, /area/station/commons/storage/tools) -"huj" = ( -/obj/structure/cable, +"hul" = ( /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 4 }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side, +/area/station/science/lower) "hur" = ( /obj/structure/table/glass, /obj/item/storage/briefcase/secure, @@ -21677,43 +22128,22 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron, /area/station/security/tram) -"hwj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"hvX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, /turf/open/floor/iron/dark/small, /area/station/tcommsat/server) -"hwn" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/closet/emcloset, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) -"hwo" = ( -/obj/structure/cable, -/obj/structure/table/bronze, -/obj/effect/turf_decal/siding/thinplating_new/terracotta{ +"hwh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/item/pizzabox/margherita{ - pixel_x = 4; - pixel_y = 24 - }, -/obj/item/storage/bag/tray{ - pixel_x = 1; - pixel_y = -1 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "hwr" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"hwx" = ( -/obj/structure/table/glass, -/obj/item/radio/intercom/command, -/obj/item/paper/fluff/jobs/engineering/frequencies, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) "hwz" = ( /obj/machinery/camera/directional/south{ c_tag = "Xenobiology - Cell 5"; @@ -21764,14 +22194,11 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/smooth, /area/station/service/greenroom) -"hxA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/hallway/secondary/command) +"hxP" = ( +/obj/machinery/holopad, +/obj/structure/cable, +/turf/open/floor/iron/white/small, +/area/station/science/lobby) "hxQ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -21811,6 +22238,12 @@ "hyE" = ( /turf/closed/wall, /area/station/maintenance/starboard/aft) +"hyM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "hyS" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ @@ -21898,19 +22331,6 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/mining, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/cargo/miningoffice) -"hAe" = ( -/obj/machinery/door/airlock/command{ - name = "Telecomms Server Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "comms-entrance-south" - }, -/obj/structure/cable, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) "hAu" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -21962,6 +22382,14 @@ }, /turf/open/floor/iron/dark/side, /area/station/cargo/lobby) +"hAS" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "hAW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -22175,9 +22603,19 @@ "hDz" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash, -/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"hDF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/kirbyplants/random/fullysynthetic, +/obj/machinery/light/cold/directional/south, +/turf/open/floor/iron/dark/small, +/area/station/medical/virology) "hDN" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -22198,15 +22636,6 @@ }, /turf/open/floor/wood, /area/station/engineering/break_room) -"hEm" = ( -/obj/item/kirbyplants/organic/applebush, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/command/meeting_room) "hEu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -22226,6 +22655,11 @@ "hEJ" = ( /turf/open/floor/iron/smooth, /area/station/service/library) +"hEY" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/science/robotics/augments) "hFb" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -22252,15 +22686,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/department/engine/atmos) -"hFp" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "hFx" = ( /turf/open/floor/iron/chapel{ dir = 1 @@ -22292,18 +22717,6 @@ "hGb" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/storage) -"hGj" = ( -/obj/structure/broken_flooring/corner, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) -"hGk" = ( -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/machinery/door/airlock/grunge{ - name = "St. Brendan's" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/greater) "hGn" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/rust, @@ -22326,18 +22739,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) -"hGA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/landmark/start/cargo_technician, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"hGE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/stairs, -/area/station/medical/medbay/central) "hHf" = ( /obj/structure/table/reinforced, /obj/item/paper_bin{ @@ -22401,6 +22802,14 @@ /obj/machinery/bookbinder, /turf/open/floor/wood/parquet, /area/station/service/library) +"hIr" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/sign/departments/science/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "hIE" = ( /obj/structure/table/glass, /obj/machinery/light/small/directional/east, @@ -22411,14 +22820,26 @@ /obj/item/hemostat, /turf/open/floor/iron/white, /area/station/science/robotics/augments) -"hIF" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt, +"hIG" = ( +/obj/machinery/door/airlock/research{ + name = "Gun Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/auxlab/firing_range) +"hIV" = ( +/obj/machinery/airalarm/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/tcommsat/server) +/area/station/science/ordnance) "hJp" = ( /turf/closed/wall/r_wall/rust, /area/station/ai_monitored/turret_protected/ai) @@ -22433,37 +22854,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/prison/garden) -"hJO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/dock) -"hJP" = ( -/obj/structure/sign/departments/engineering/directional/north, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/primary/fore) -"hJR" = ( -/obj/structure/lattice/catwalk, -/obj/item/stack/cable_coil, -/obj/structure/cable, -/turf/open/space/basic, -/area/station/solars/starboard/fore) "hJT" = ( /obj/structure/table/glass, /obj/item/circular_saw, @@ -22482,6 +22872,17 @@ /obj/structure/sign/warning/no_smoking/circle/directional/east, /turf/open/floor/iron/white, /area/station/science/robotics/augments) +"hJX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/service/bar) "hKf" = ( /obj/machinery/light/small/directional/south{ dir = 4 @@ -22518,18 +22919,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/small, /area/station/security/detectives_office) -"hKX" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "hKZ" = ( /obj/structure/flora/bush/jungle/a/style_random, /turf/open/floor/grass, @@ -22577,21 +22966,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/cargo/miningoffice) -"hLU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Docking Corridor" - }, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/hallway/secondary/dock) "hLW" = ( /obj/structure/railing, /obj/structure/extinguisher_cabinet/directional/north, @@ -22606,10 +22980,6 @@ }, /turf/open/floor/plating, /area/station/security) -"hMa" = ( -/obj/effect/turf_decal/trimline/dark/filled/warning, -/turf/open/floor/iron/dark/small, -/area/station/maintenance/department/science/xenobiology) "hMh" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/chair/stool/bamboo{ @@ -22620,14 +22990,6 @@ }, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/hop) -"hMk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, -/area/station/maintenance/starboard/greater) "hMr" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/closet/secure_closet/security/sec, @@ -22702,18 +23064,6 @@ /obj/effect/turf_decal/tile/brown/opposingcorners, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"hNJ" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 - }, -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 9 - }, -/obj/item/storage/toolbox/mechanical, -/obj/item/clothing/head/utility/welding, -/turf/open/floor/iron, -/area/station/medical/chemistry) "hNP" = ( /obj/item/storage/backpack/duffelbag/sec{ pixel_y = 12 @@ -22731,13 +23081,68 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"hOb" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/subspace/crystal{ + pixel_x = 4; + pixel_y = -1 + }, +/obj/item/stock_parts/subspace/crystal{ + pixel_x = 4; + pixel_y = -1 + }, +/obj/item/stock_parts/subspace/crystal{ + pixel_x = 4; + pixel_y = -1 + }, +/obj/item/stock_parts/subspace/treatment{ + pixel_x = -3; + pixel_y = 9 + }, +/obj/item/stock_parts/subspace/treatment{ + pixel_x = -3; + pixel_y = 9 + }, +/obj/item/stock_parts/subspace/treatment{ + pixel_x = -3; + pixel_y = 9 + }, +/obj/item/stock_parts/subspace/filter{ + pixel_x = -4; + pixel_y = -1 + }, +/obj/item/stock_parts/subspace/filter{ + pixel_x = -4; + pixel_y = -1 + }, +/obj/item/stock_parts/subspace/filter{ + pixel_x = -4; + pixel_y = -1 + }, +/obj/item/stock_parts/subspace/filter{ + pixel_x = -4; + pixel_y = -1 + }, +/obj/item/stock_parts/subspace/analyzer{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/stock_parts/subspace/analyzer{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/stock_parts/subspace/analyzer{ + pixel_x = 6; + pixel_y = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "hOg" = ( /obj/structure/hedge, /obj/machinery/camera/autoname/directional/south, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) "hOl" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/stairs{ @@ -22747,10 +23152,6 @@ "hOp" = ( /turf/open/floor/iron/showroomfloor, /area/station/medical/virology) -"hOD" = ( -/obj/structure/cable, -/turf/closed/wall/r_wall, -/area/station/command/bridge) "hOF" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/chair/office{ @@ -22775,6 +23176,17 @@ /obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/carpet/lone, /area/station/service/abandoned_gambling_den) +"hPa" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "hPb" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt, @@ -22793,34 +23205,11 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) -"hPl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=9.0-StarboardHall-ScienceFoyer"; - location = "8.0-Pharmacy-StarboardHall" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "hPs" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/airalarm/directional/south, /turf/open/floor/engine, /area/station/engineering/gravity_generator) -"hPQ" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) "hPU" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -22840,13 +23229,14 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/solars/port/aft) -"hQd" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ - dir = 10 - }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) +"hQb" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/security_all, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/bot, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "hQs" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/opposingcorners{ @@ -22925,16 +23315,11 @@ /obj/structure/closet/crate/wooden/toy, /turf/open/floor/iron/smooth, /area/station/service/greenroom) -"hRd" = ( -/obj/structure/table/reinforced, -/obj/item/binoculars, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "hRA" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix{ - dir = 8 +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ + dir = 4 }, +/obj/machinery/atmospherics/components/binary/pump, /turf/open/floor/engine, /area/station/science/ordnance/burnchamber) "hRO" = ( @@ -23006,6 +23391,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) +"hTB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table, +/obj/item/clothing/glasses/meson{ + pixel_x = -2; + pixel_y = 3 + }, +/obj/item/clothing/glasses/meson{ + pixel_x = 5; + pixel_y = -4 + }, +/obj/item/clothing/glasses/meson{ + pixel_x = 5; + pixel_y = 8 + }, +/obj/machinery/camera/directional/east, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "hTD" = ( /obj/machinery/atmospherics/pipe/smart/simple/general/visible{ dir = 6 @@ -23014,6 +23419,23 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/iron, /area/station/maintenance/port/fore) +"hTE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/table/reinforced, +/obj/item/wrench, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/science/xenobiology) +"hTI" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "hTL" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/spawner/random/structure/crate_loot, @@ -23034,10 +23456,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/security/execution/transfer) -"hUq" = ( -/obj/structure/table/glass, -/turf/open/floor/iron/smooth, -/area/station/hallway/secondary/command) "hUC" = ( /obj/structure/toilet, /obj/machinery/light/small/directional/north, @@ -23049,43 +23467,18 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/dorms) -"hUD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"hUH" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "hUI" = ( /obj/structure/table, /obj/item/storage/belt/utility, /obj/item/radio/off, /turf/open/floor/iron/smooth, /area/station/command/gateway) -"hUO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/public/glass{ - name = "Lockers" - }, -/turf/open/floor/iron/textured_half, -/area/station/commons/fitness/locker_room) "hVb" = ( /obj/machinery/plate_press, /obj/effect/turf_decal/stripes/line, /obj/machinery/camera/autoname/directional/east, /turf/open/floor/plating, /area/station/security/prison/work) -"hVh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/chief_medical_officer, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "hVk" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -23160,6 +23553,12 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/station/science/genetics) +"hWg" = ( +/obj/machinery/telecomms/hub/preset, +/obj/machinery/camera/autoname/directional/west, +/obj/structure/cable, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "hWk" = ( /obj/machinery/vending/coffee, /obj/structure/extinguisher_cabinet/directional/south, @@ -23172,6 +23571,16 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"hWs" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/light{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "hWu" = ( /obj/machinery/door/airlock/medical{ name = "CMO Bedroom" @@ -23179,11 +23588,14 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/cmo, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/cmo) -"hWE" = ( +"hWG" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_large, -/area/station/science/auxlab/firing_range) +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/science/ordnance/testlab) "hWJ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -23193,16 +23605,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, /area/station/security) -"hWL" = ( -/obj/effect/turf_decal/weather/snow, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "hWU" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -23228,15 +23630,6 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/open/floor/catwalk_floor/iron, /area/station/commons/storage/tools) -"hXl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/delivery/red, -/turf/open/floor/iron/white/small, -/area/station/medical/medbay/central) "hXv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -23304,14 +23697,6 @@ "hYC" = ( /turf/closed/wall, /area/station/engineering/atmos) -"hYK" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/science/lab) "hYQ" = ( /obj/structure/disposalpipe/trunk{ dir = 2 @@ -23339,17 +23724,6 @@ }, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) -"hYW" = ( -/obj/machinery/light_switch/directional/east, -/obj/structure/closet/firecloset, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) -"hZP" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/landmark/start/hangover, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "hZT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -23372,6 +23746,12 @@ /obj/item/clothing/head/beret/sec/navyofficer, /turf/open/floor/plating, /area/station/security/tram) +"iax" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/holopad, +/turf/open/floor/iron/smooth, +/area/station/command/bridge) "iaA" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/light/small/directional/north, @@ -23384,12 +23764,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) -"iaH" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/delivery, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/ai_monitored/command/storage/eva) +"iaJ" = ( +/obj/structure/transit_tube/crossing/horizontal, +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/space/basic, +/area/space/nearstation) "iaK" = ( /obj/structure/table/wood, /obj/item/reagent_containers/cup/glass/bottle/wine{ @@ -23409,19 +23789,35 @@ dir = 8 }, /area/station/maintenance/starboard/greater) -"iaV" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) "ibe" = ( /obj/effect/turf_decal/bot_white, /obj/structure/closet/crate/freezer, /obj/item/emptysandbag, /turf/open/floor/iron/smooth_large, /area/station/cargo/warehouse) +"ibf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/stone, +/area/station/service/bar) +"ibg" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/medical/central) "ibo" = ( /obj/structure/bed, /obj/item/bedsheet/centcom, @@ -23503,26 +23899,6 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"icN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"icT" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/lower) "icW" = ( /obj/structure/transit_tube/horizontal, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -23533,15 +23909,13 @@ /obj/structure/table/reinforced, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) -"idd" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +"idb" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 }, -/obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) +/obj/structure/sign/warning/no_smoking/directional/east, +/turf/open/floor/iron, +/area/station/cargo/lobby) "ide" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -23621,11 +23995,6 @@ }, /turf/open/floor/sepia, /area/station/maintenance/aft) -"idJ" = ( -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 - }, -/area/station/command/heads_quarters/hop) "idN" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -23643,11 +24012,10 @@ /obj/machinery/digital_clock/directional/south, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"ief" = ( -/obj/machinery/telecomms/message_server/preset, +"idY" = ( /obj/structure/cable, -/turf/open/floor/circuit, -/area/station/tcommsat/server) +/turf/closed/wall/r_wall, +/area/station/command/meeting_room) "iek" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -23685,23 +24053,14 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/iron/white, /area/station/science/cytology) -"ifi" = ( -/obj/structure/table/reinforced, -/obj/machinery/requests_console/auto_name/directional/east, -/obj/item/stack/cable_coil{ - pixel_y = 4 +"ifh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/obj/item/stack/cable_coil, -/obj/item/plant_analyzer{ - pixel_y = 2; - pixel_x = -3 - }, -/obj/item/healthanalyzer{ - pixel_y = 2; - pixel_x = 3 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood/tile, +/area/station/service/lawoffice) "ifl" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -23755,6 +24114,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/smooth, /area/station/engineering/main) +"ifO" = ( +/obj/effect/turf_decal/siding/dark_blue{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "ifU" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -23763,6 +24129,11 @@ dir = 1 }, /area/station/science/lobby) +"igj" = ( +/obj/item/kirbyplants/random, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "igr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -23781,6 +24152,12 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/security/office) +"igB" = ( +/obj/effect/landmark/navigate_destination/dockarrival, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "igD" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -23788,17 +24165,15 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) -"igS" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +"igJ" = ( +/obj/machinery/door/airlock{ + name = "Law Office" }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/service/lawyer, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/motion/directional/south, -/turf/open/floor/iron/dark/diagonal, -/area/station/ai_monitored/command/storage/eva) +/turf/open/floor/iron/dark/textured_half, +/area/station/service/lawoffice) "ihb" = ( /obj/effect/spawner/random/trash, /turf/open/floor/plating, @@ -23874,25 +24249,29 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/eighties/red, /area/station/service/abandoned_gambling_den/gaming) -"ihC" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) -"ihJ" = ( -/obj/structure/rack, -/obj/item/aicard, -/obj/item/clothing/gloves/color/yellow, -/obj/item/ai_module/reset, -/obj/effect/turf_decal/siding/dark, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) +"ihK" = ( +/obj/machinery/door/airlock/engineering{ + name = "Starboard Bow Solar Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/starboard/fore) "ihZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/prison/workout) +"iia" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "iio" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/stripes/line{ @@ -23901,13 +24280,6 @@ /obj/effect/turf_decal/loading_area, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) -"iis" = ( -/obj/structure/broken_flooring/side/directional/north{ - color = "#73737a" - }, -/obj/structure/chair/stool, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "iix" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, @@ -23918,21 +24290,6 @@ }, /turf/open/space/basic, /area/space) -"iiE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/airalarm/directional/west, -/obj/structure/cable, -/obj/effect/mapping_helpers/airalarm/link{ - chamber_id = "engine" - }, -/obj/effect/mapping_helpers/airalarm/engine_access, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, -/obj/machinery/meter, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "iiI" = ( /obj/structure/table/reinforced, /obj/structure/disposalpipe/segment, @@ -23960,24 +24317,15 @@ }, /turf/open/floor/iron/smooth, /area/station/cargo/miningfoundry) -"iiX" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/iron, -/area/station/maintenance/port/aft) +"ijk" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "ijz" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white/small, /area/station/commons/toilet/restrooms) -"ijB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/components/trinary/mixer/flipped{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/science/ordnance/storage) "ijF" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, @@ -23999,18 +24347,21 @@ /obj/machinery/photobooth, /turf/open/floor/iron/textured_large, /area/station/hallway/primary/central/fore) -"ijV" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +"ijR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 4 }, /obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/storage/tech) +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"ijS" = ( +/obj/item/wrench, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/lab) "ijY" = ( /obj/structure/closet/secure_closet/chief_medical, /obj/item/storage/briefcase/secure{ @@ -24075,16 +24426,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/captain/private) -"ikS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/tcommsat/server) "ikU" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10 @@ -24150,32 +24491,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/smooth_large, /area/station/engineering/storage_shared) -"ilB" = ( -/obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) -"ilC" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "ilD" = ( /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 8 }, /turf/open/floor/iron/smooth_large, /area/station/science/robotics/mechbay) -"ilE" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) "ilT" = ( /obj/machinery/door/airlock/external{ name = "Atmospherics External Access" @@ -24203,16 +24524,6 @@ /obj/effect/landmark/start/security_officer, /turf/open/floor/iron, /area/station/security/tram) -"imI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "imO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/effect/turf_decal/stripes/line{ @@ -24221,6 +24532,13 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"ine" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/public/glass{ + name = "Aft Corridor" + }, +/turf/open/floor/iron/textured_half, +/area/station/hallway/primary/aft) "inh" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/trimline/neutral/line{ @@ -24232,6 +24550,30 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"inn" = ( +/obj/effect/turf_decal/trimline/dark/line, +/obj/effect/turf_decal/trimline/dark/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/department/science/xenobiology) +"inp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) +"inw" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/announcement_system, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ + dir = 8 + }, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) "inR" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -24245,12 +24587,6 @@ /obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"inU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/side, -/area/station/hallway/primary/central/aft) "ioa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -24263,6 +24599,25 @@ /obj/structure/chair/stool/directional/west, /turf/open/floor/iron, /area/station/security/prison/rec) +"ioe" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=19.0-Engineering-CentralPort"; + location = "18.0-ToolStorage-Engineering" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "ioo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -24327,24 +24682,6 @@ /mob/living/basic/pet/dog/pug/mcgriff, /turf/open/floor/iron, /area/station/security/warden) -"ipf" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/command/meeting_room) -"ipj" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) "ipp" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/iron, @@ -24359,14 +24696,6 @@ /obj/structure/closet/wardrobe/miner, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"ips" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/stairs{ - dir = 8 - }, -/area/station/command/bridge) "ipt" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -24376,31 +24705,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"ipx" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/glass, -/obj/machinery/fax{ - fax_name = "Research Director's Office"; - name = "Research Director's Fax Machine"; - pixel_y = 9 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) "ipF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/station/medical/medbay/lobby) -"ipM" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/decal/cleanable/glass, +"ipI" = ( +/obj/machinery/modular_computer/preset/cargochat/cargo, /turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) +/area/station/cargo/sorting) "ipN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, /obj/effect/turf_decal/stripes/line, @@ -24436,12 +24750,6 @@ }, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) -"iqp" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/holopad, -/turf/open/floor/iron/smooth, -/area/station/command/bridge) "iqB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24461,15 +24769,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/cafeteria, /area/station/science/circuits) -"iqF" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/smooth, -/area/station/command/bridge) "iqG" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"iqL" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron, +/area/station/science/lobby) "iqM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -24483,13 +24791,12 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/small, /area/station/security/tram) -"irc" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +"irf" = ( +/obj/item/radio/intercom/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/command/heads_quarters/rd) "iri" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -24520,6 +24827,12 @@ /obj/structure/closet/toolcloset, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"irv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/siding/blue, +/turf/open/floor/iron/white/small, +/area/station/command/heads_quarters/cmo) "irQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -24534,6 +24847,15 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter) +"isf" = ( +/obj/effect/turf_decal/siding, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/lab) "isi" = ( /obj/structure/table, /obj/effect/turf_decal/siding/thinplating_new{ @@ -24608,9 +24930,36 @@ dir = 1 }, /area/station/command/gateway) +"isT" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/station/medical/morgue) +"isX" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/research) "itb" = ( /turf/closed/wall/r_wall/rust, /area/station/ai_monitored/turret_protected/aisat/maint) +"itd" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) "itf" = ( /obj/structure/disposalpipe/segment, /obj/item/kirbyplants/random, @@ -24619,18 +24968,34 @@ }, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/qm) -"itw" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_edge{ +"ity" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/area/station/command/heads_quarters/hop) +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "itF" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/station/maintenance/starboard/central) +"itG" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/machinery/door/airlock/command{ + name = "Council Chambers" + }, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/turf/open/floor/iron/dark/textured_half, +/area/station/command/corporate_showroom) "itL" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/machinery/computer/security{ @@ -24694,6 +25059,31 @@ /obj/effect/mapping_helpers/airlock/access/all/science/research, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"iuu" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "E.V.A. Storage" + }, +/obj/effect/mapping_helpers/airlock/access/any/command/eva, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/command/bridge) +"iuB" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/lower) "iuF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -24703,6 +25093,12 @@ }, /turf/open/floor/wood, /area/station/cargo/boutique) +"iuO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/light/colour_cycle/dancefloor_b, +/area/station/maintenance/starboard/central) "iuR" = ( /turf/closed/wall/r_wall, /area/station/hallway/primary/central/aft) @@ -24715,18 +25111,19 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"iuX" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/lobby) "iuZ" = ( /obj/structure/bed, /obj/item/bedsheet/brown, /obj/item/melee/baseball_bat, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"ive" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "ivh" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -24744,11 +25141,6 @@ }, /turf/open/misc/asteroid, /area/station/maintenance/hallway/abandoned_command) -"ivl" = ( -/obj/item/kirbyplants/organic/applebush, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/smooth, -/area/station/hallway/primary/central/fore) "ivm" = ( /obj/machinery/vending/assist, /obj/effect/turf_decal/delivery/white, @@ -24802,11 +25194,32 @@ }, /turf/open/floor/iron, /area/station/cargo/lobby) -"ivY" = ( +"ivJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=4.0-TechStorage-AftHall"; + location = "3.0-StarboardHall-TechStorage" + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"ivN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) +/obj/machinery/greenscreen_camera{ + pixel_y = -5 + }, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/captain/private) "iwt" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 @@ -24832,32 +25245,23 @@ /obj/structure/cable, /turf/open/floor/iron/dark/small, /area/station/security/detectives_office) +"ixm" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/tcommsat/server) "ixz" = ( /obj/structure/cable, /turf/open/floor/iron/small, /area/station/maintenance/solars/port/aft) -"ixG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/steam_vent, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) -"ixH" = ( -/obj/machinery/power/port_gen/pacman/pre_loaded, -/obj/effect/turf_decal/delivery/red, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/science/xenobiology) -"ixM" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/airalarm/directional/east, +"ixA" = ( +/obj/effect/landmark/start/scientist, /obj/structure/cable, /turf/open/floor/iron, -/area/station/hallway/secondary/entry) +/area/station/science/research) "ixT" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/siding/purple{ @@ -24908,25 +25312,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) -"iyr" = ( -/obj/machinery/light/cold/directional/north, -/obj/machinery/newscaster/directional/north, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/science/ordnance/testlab) -"iyt" = ( -/obj/effect/turf_decal/siding, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lab) "iyC" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/siding/purple{ @@ -24944,13 +25329,13 @@ }, /turf/open/floor/grass, /area/station/service/chapel) -"izf" = ( -/obj/structure/sign/warning/engine_safety/directional/north, -/obj/machinery/light/cold/dim/directional/north, -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/turf/open/floor/iron/small, -/area/station/engineering/break_room) +"iza" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/broken_flooring/singular/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/hallway/secondary/dock) "izh" = ( /obj/item/shovel, /turf/open/floor/plating, @@ -24962,16 +25347,6 @@ }, /turf/open/floor/iron/white/small, /area/station/commons/toilet/restrooms) -"izo" = ( -/obj/machinery/door/airlock/grunge{ - name = "Vacant Comissary" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/maintenance/central/lesser) "izu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24980,14 +25355,21 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"izA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"izx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + name = "Docking Corridor" + }, +/obj/machinery/door/firedoor, /obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/textured_half{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/area/station/hallway/secondary/dock) "izD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -25010,6 +25392,16 @@ /obj/effect/turf_decal/siding/wideplating, /turf/open/floor/wood, /area/station/engineering/atmos/storage) +"izK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/turf/open/floor/iron/dark/herringbone, +/area/station/security/courtroom) "izP" = ( /obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ @@ -25090,6 +25482,17 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/science/robotics/mechbay) +"iAI" = ( +/obj/structure/toilet, +/obj/machinery/light/small/directional/west, +/obj/machinery/button/door/directional/east{ + id = "AuxToilet1"; + name = "Lock Control"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) "iAJ" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/iron, @@ -25128,6 +25531,12 @@ /obj/machinery/power/shieldwallgen, /turf/open/floor/iron/smooth_large, /area/station/command/teleporter) +"iBd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table/wood, +/turf/open/floor/stone, +/area/station/service/bar) "iBj" = ( /obj/structure/table/glass, /obj/item/folder/red{ @@ -25148,25 +25557,53 @@ /obj/structure/cable, /turf/open/floor/stone, /area/station/service/bar/backroom) +"iBw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/airalarm/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/dock) "iBE" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/cable, /turf/open/floor/wood/tile, /area/station/maintenance/port/lesser) -"iBZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +"iBP" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/chair/wood{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) +/turf/open/misc/dirt/station, +/area/station/medical/morgue) "iCb" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/captain) +"iCe" = ( +/obj/structure/cable, +/obj/structure/table/bronze, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 4 + }, +/obj/item/pizzabox/margherita{ + pixel_x = 4; + pixel_y = 24 + }, +/obj/item/storage/bag/tray{ + pixel_x = 1; + pixel_y = -1 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/meeting_room) "iCf" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -25237,25 +25674,21 @@ dir = 8 }, /area/station/engineering/main) -"iCJ" = ( -/obj/machinery/door/airlock/command{ - name = "Research Division Server Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/machinery/door/firedoor, -/obj/structure/cable, +"iCZ" = ( +/obj/machinery/camera/autoname/directional/west, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/server) -"iDk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) +"iDb" = ( +/obj/machinery/light/floor, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/bridge) "iDm" = ( /obj/structure/cable, /obj/structure/railing/corner/end{ @@ -25328,6 +25761,12 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/engineering/break_room) +"iEf" = ( +/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "iEk" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -25336,6 +25775,14 @@ /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) +"iEt" = ( +/obj/effect/turf_decal/siding/thinplating_new/terracotta, +/obj/structure/bookcase/random, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 6 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/meeting_room) "iEA" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm/directional/north, @@ -25371,21 +25818,16 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/wood/large, /area/station/command/corporate_suite) -"iFb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"iFm" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 +"iFc" = ( +/obj/effect/turf_decal/weather/snow, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 4 }, -/area/station/science/xenobiology) +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "iFs" = ( /obj/structure/window/spawner/directional/east, /turf/open/misc/sandy_dirt, @@ -25430,6 +25872,12 @@ /obj/item/kirbyplants/random/fullysynthetic, /turf/open/floor/plating/rust, /area/station/maintenance/hallway/abandoned_command) +"iFQ" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/siding/corner, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/science/cytology) "iGb" = ( /obj/structure/window/spawner/directional/east, /obj/structure/closet/crate, @@ -25453,6 +25901,14 @@ /obj/item/assembly/signaler, /turf/open/floor/iron/smooth, /area/station/commons/storage/tools) +"iGc" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "iGl" = ( /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) @@ -25480,14 +25936,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"iGu" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/ai_all, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "iGA" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -25498,6 +25946,28 @@ /obj/structure/chair/stool/directional/east, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) +"iGG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/dorms) +"iGL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/window/spawner/directional/south, +/obj/effect/turf_decal/trimline/purple/end{ + dir = 1 + }, +/obj/machinery/shower/directional/north{ + name = "emergency shower"; + pixel_y = -11 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/cytology) "iGM" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/cold/dim/directional/east, @@ -25553,6 +26023,13 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"iHf" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "iHg" = ( /obj/structure/cable, /obj/machinery/door/airlock/maintenance/external{ @@ -25597,6 +26074,14 @@ /obj/effect/turf_decal/siding/wideplating, /turf/open/floor/wood, /area/station/engineering/atmos/office) +"iHM" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/lower) "iHT" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -25604,6 +26089,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"iIc" = ( +/obj/structure/cable, +/obj/machinery/light/small/dim/directional/south, +/turf/open/floor/iron, +/area/station/maintenance/port/aft) "iId" = ( /obj/machinery/processor{ pixel_y = 6 @@ -25613,6 +26103,15 @@ /obj/effect/turf_decal/siding/end, /turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) +"iIk" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/stripes/white/line{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/science/explab) "iIs" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -25633,11 +26132,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"iIw" = ( -/obj/item/wrench, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/lab) "iIA" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue{ @@ -25675,15 +26169,6 @@ }, /turf/open/floor/iron/small, /area/station/engineering/break_room) -"iIN" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) "iIR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/dark_red/anticorner/contrasted{ @@ -25720,23 +26205,6 @@ /obj/structure/cable, /turf/open/floor/iron/textured_half, /area/station/commons/dorms) -"iJb" = ( -/obj/structure/table/glass, -/obj/machinery/reagentgrinder{ - pixel_x = -5; - pixel_y = 14 - }, -/obj/item/reagent_containers/cup/beaker/large{ - pixel_x = 16; - pixel_y = 14 - }, -/obj/item/reagent_containers/cup/beaker{ - pixel_x = 12; - pixel_y = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) "iJc" = ( /obj/machinery/portable_atmospherics/pump, /turf/open/floor/plating, @@ -25749,6 +26217,15 @@ /mob/living/basic/pet/dog/corgi/ian, /turf/open/floor/iron/dark/textured_edge, /area/station/command/heads_quarters/hop) +"iJo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) "iJp" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -25798,6 +26275,14 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"iJD" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/rnd_secure_all, +/obj/effect/turf_decal/siding/dark, +/obj/machinery/light/small/directional/north, +/obj/machinery/camera/autoname/motion/directional/east, +/turf/open/floor/iron, +/area/station/engineering/storage/tech) "iJH" = ( /turf/closed/wall, /area/station/security/checkpoint/supply) @@ -25819,13 +26304,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/plating, /area/station/engineering/atmos/storage/gas) -"iJL" = ( -/obj/structure/sign/warning/no_smoking/circle/directional/north, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "iJS" = ( /obj/structure/railing/corner/end{ dir = 4 @@ -25874,6 +26352,14 @@ /obj/effect/spawner/random/trash/food_packaging, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"iKA" = ( +/obj/machinery/telecomms/broadcaster/preset_left, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "iLe" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25886,18 +26372,16 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/smooth, /area/station/service/library) -"iLp" = ( +"iLq" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 9 }, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/obj/machinery/power/apc/auto_name/directional/west, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark/herringbone, +/area/station/security/courtroom) "iLA" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/tile/blue{ @@ -25941,15 +26425,6 @@ /obj/effect/mapping_helpers/airlock/access/any/command/hop, /turf/open/floor/plating, /area/station/maintenance/department/bridge) -"iLO" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/stairs, -/area/station/maintenance/department/science/xenobiology) "iLR" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, @@ -25994,35 +26469,16 @@ /obj/machinery/flasher/portable, /turf/open/floor/plating, /area/station/security/tram) -"iMG" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) -"iMI" = ( -/obj/structure/sign/warning/no_smoking/circle/directional/north, -/obj/machinery/portable_atmospherics/canister, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/iron/white/corner{ - dir = 8 - }, -/area/station/science/xenobiology) -"iMS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/tile/blue{ +"iMT" = ( +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) "iMU" = ( /obj/effect/turf_decal/siding/thinplating_new/terracotta{ dir = 10 @@ -26044,6 +26500,13 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) +"iNA" = ( +/obj/machinery/light/cold/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "iNC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, @@ -26076,19 +26539,22 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/tram, /area/station/security/tram) -"iNS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/urinal/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) "iNV" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) +"iNW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "iNY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26108,27 +26574,6 @@ dir = 1 }, /area/station/command/heads_quarters/captain) -"iOm" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/psychology, -/obj/machinery/door/airlock/medical{ - name = "Pychologists Office" - }, -/turf/open/floor/iron/dark/small, -/area/station/medical/psychology) -"iOq" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Recreation" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "iOs" = ( /obj/structure/table/wood/fancy/royalblue, /obj/effect/turf_decal/siding/wood{ @@ -26137,20 +26582,21 @@ /obj/item/hand_tele, /turf/open/floor/stone, /area/station/command/heads_quarters/captain/private) -"iOv" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "iOx" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"iOC" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/siding/green{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "iOE" = ( /obj/structure/table/wood/fancy/royalblue, /obj/effect/turf_decal/siding/wood{ @@ -26158,33 +26604,6 @@ }, /turf/open/floor/stone, /area/station/command/heads_quarters/captain/private) -"iOF" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/item/phone{ - desc = "Supposedly a direct line to Nanotrasen Central Command. It's not even plugged in."; - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/radio{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) -"iOL" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/science/xenobiology) "iOM" = ( /obj/structure/cable, /obj/item/storage/bag/trash, @@ -26225,19 +26644,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"iPy" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/prison/garden) -"iPF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "iPJ" = ( /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 9 @@ -26260,6 +26666,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"iQo" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "iQp" = ( /obj/structure/flora/bush/sparsegrass, /turf/open/floor/grass, @@ -26276,6 +26694,13 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron/dark/side, /area/station/engineering/hallway) +"iQw" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, +/turf/open/floor/iron/white/small, +/area/station/science/server) "iQC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -26297,6 +26722,15 @@ dir = 1 }, /area/station/cargo/sorting) +"iQP" = ( +/obj/structure/chair{ + dir = 1; + pixel_y = -2 + }, +/obj/machinery/firealarm/directional/south, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/science/lower) "iQT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ @@ -26316,13 +26750,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/small, /area/station/service/chapel/storage) -"iQV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 4 - }, -/turf/open/floor/iron/small, -/area/station/commons/fitness/locker_room) "iRk" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -26344,6 +26771,35 @@ }, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) +"iRr" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/science/robotics/augments) +"iRs" = ( +/obj/machinery/door/window/left/directional/east{ + name = "Maximum Security Test Chamber"; + req_access = list("xenobiology") + }, +/obj/machinery/atmospherics/pipe/smart/simple/general/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/xenobiology) +"iRv" = ( +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/airalarm/mixingchamber_access, +/obj/effect/mapping_helpers/airalarm/link{ + chamber_id = "ordnancefreezer" + }, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "iRz" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -26354,20 +26810,6 @@ /obj/structure/flora/bush/flowers_yw, /turf/open/floor/grass, /area/station/service/chapel) -"iRQ" = ( -/obj/effect/turf_decal/weather/snow, -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/item/food/meat/bacon, -/obj/item/food/meat/bacon, -/obj/item/food/meat/slab/monkey, -/obj/item/food/meat/slab/monkey, -/obj/item/food/meat/slab/monkey, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "iSb" = ( /obj/structure/frame/computer{ dir = 1 @@ -26381,15 +26823,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark/small, /area/station/hallway/secondary/dock) -"iSh" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/obj/machinery/atmospherics/components/tank{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/science/ordnance/storage) "iSi" = ( /obj/structure/table/wood/fancy/red, /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted, @@ -26402,6 +26835,20 @@ /obj/item/stack/cable_coil/five, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) +"iSo" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/machinery/door/airlock/research/glass{ + name = "Experimentation Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron, +/area/station/science/lower) "iSr" = ( /turf/open/floor/iron, /area/station/security/execution/transfer) @@ -26435,27 +26882,14 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/command/nuke_storage) -"iTy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"iTB" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +"iTI" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/science/xenobiology) +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "iTN" = ( /obj/machinery/door/airlock/public/glass{ name = "Holodeck Door" @@ -26487,12 +26921,28 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"iTT" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "iUb" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, /obj/item/crowbar/large/old, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) +"iUc" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 8 + }, +/obj/machinery/atmospherics/components/tank{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/science/ordnance/storage) "iUh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26505,6 +26955,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"iUp" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "iUA" = ( /obj/machinery/conveyor{ id = "mining" @@ -26514,6 +26970,19 @@ }, /turf/open/floor/iron, /area/station/cargo/miningfoundry) +"iUB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/primary/aft) "iUH" = ( /obj/effect/turf_decal/tile/neutral, /obj/machinery/camera/autoname/directional/south, @@ -26536,13 +27005,6 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) -"iUN" = ( -/obj/structure/disposalpipe/trunk, -/obj/effect/turf_decal/bot, -/obj/machinery/airalarm/directional/north, -/obj/machinery/disposal/bin/tagger, -/turf/open/floor/iron, -/area/station/cargo/storage) "iUT" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 10 @@ -26578,12 +27040,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"iVE" = ( -/obj/machinery/telecomms/hub/preset, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/tcommsat/server) +"iVG" = ( +/obj/structure/broken_flooring/side/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "iVI" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -26628,15 +27088,6 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"iVT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/broken_flooring/pile/directional/east, -/obj/item/flashlight, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/hallway/secondary/dock) "iVY" = ( /obj/effect/turf_decal/siding/brown{ dir = 1 @@ -26653,12 +27104,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/security/prison/garden) -"iWf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "iWj" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -26688,6 +27133,16 @@ }, /turf/open/floor/iron, /area/station/security/execution/transfer) +"iWB" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/incident_display/tram/directional/north, +/turf/open/floor/iron, +/area/station/maintenance/department/medical/central) "iWD" = ( /obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ dir = 1 @@ -26708,6 +27163,20 @@ }, /turf/open/floor/iron, /area/station/security) +"iWI" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/transit_tube/horizontal, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"iWO" = ( +/obj/machinery/door/airlock{ + name = "Science Lab Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "iWQ" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/effect/landmark/start/chemist, @@ -26820,27 +27289,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, /area/station/command/teleporter) -"iYo" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/white/side, -/area/station/science/research) -"iYr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/door/poddoor/shutters{ - dir = 1; - id = "aibridge" - }, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) "iYu" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/photocopier, @@ -26868,11 +27316,14 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/security/processing) -"iZl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/cytology) +"iZr" = ( +/obj/machinery/telecomms/server/presets/security, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "iZs" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -26931,30 +27382,18 @@ /obj/effect/spawner/random/food_or_drink/seed, /turf/open/misc/sandy_dirt, /area/station/maintenance/starboard/aft) -"iZK" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=19.0-Engineering-CentralPort"; - location = "18.0-ToolStorage-Engineering" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "iZM" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/cable, /turf/open/floor/wood/parquet, /area/station/service/library) +"iZN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) "iZO" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -26990,30 +27429,12 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"jax" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue, -/obj/structure/disposalpipe/junction/flip, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ +"jat" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ dir = 4 }, -/area/station/hallway/primary/fore) -"jaK" = ( -/obj/structure/table/glass, -/obj/item/folder/blue{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/effect/landmark/event_spawn, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) +/turf/open/floor/circuit, +/area/station/tcommsat/server) "jaL" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -27031,15 +27452,6 @@ "jaQ" = ( /turf/open/floor/catwalk_floor/iron_dark, /area/station/security/processing) -"jbd" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/heads_quarters/rd) "jbp" = ( /obj/structure/flora/bush/jungle, /obj/structure/flora/rock/pile/style_3, @@ -27099,18 +27511,11 @@ "jch" = ( /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) -"jcm" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/closet/crate/large, -/obj/effect/spawner/random/entertainment/plushie, -/obj/effect/spawner/random/entertainment/plushie, -/obj/effect/spawner/random/entertainment/plushie, -/obj/effect/spawner/random/entertainment/plushie, -/obj/effect/spawner/random/entertainment/plushie, -/obj/structure/alien/weeds, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) +"jcs" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/siding/blue, +/turf/open/floor/iron/white, +/area/station/medical/paramedic) "jct" = ( /obj/structure/cable, /obj/machinery/door/airlock/external{ @@ -27129,19 +27534,14 @@ /obj/machinery/door/window/right/directional/south, /turf/open/floor/plating, /area/station/service/chapel/funeral) -"jcB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/wood{ - name = "Bar Backroom" +"jcw" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" }, -/obj/effect/mapping_helpers/airlock/access/all/service/bar, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/service/bar) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/command/corporate_showroom) "jcE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27176,12 +27576,11 @@ /obj/structure/table/wood, /turf/open/floor/carpet, /area/station/service/library) -"jdJ" = ( -/obj/effect/turf_decal/siding/dark/corner, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/command/bridge) +"jdQ" = ( +/obj/machinery/smartfridge/organ, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "jdR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -27207,6 +27606,21 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/dark/small, /area/station/service/chapel/storage) +"jes" = ( +/obj/machinery/computer/rdconsole, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/lab) +"jez" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/firealarm/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/research) "jeF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27235,15 +27649,6 @@ /obj/structure/sign/departments/medbay/alt/directional/west, /turf/open/floor/plating, /area/station/medical/medbay/lobby) -"jfj" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "jfs" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 @@ -27283,6 +27688,17 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/iron/smooth, /area/station/security/evidence) +"jfK" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/tcommsat/server) "jfP" = ( /turf/open/floor/iron/stairs{ dir = 8 @@ -27296,14 +27712,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/white/small, /area/station/service/hydroponics) -"jgb" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "jgj" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/button/door/directional/east{ @@ -27325,6 +27733,13 @@ /obj/structure/flora/bush/jungle/a/style_3, /turf/open/misc/dirt/station, /area/station/service/chapel) +"jgx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/storage/tech) "jgy" = ( /obj/effect/spawner/random/trash/hobo_squat, /obj/effect/decal/cleanable/dirt, @@ -27357,6 +27772,17 @@ "jhm" = ( /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) +"jht" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Cubicle" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/cubicle) "jhB" = ( /obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall, @@ -27372,16 +27798,6 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) -"jhY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "jhZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27390,19 +27806,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured_half, /area/station/hallway/primary/aft) -"jie" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/broken_flooring/singular/directional/east, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"jif" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/construction) "jig" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 9 @@ -27452,19 +27855,24 @@ }, /turf/open/floor/iron/small, /area/station/maintenance/department/engine/atmos) +"jiR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/burnchamber) "jiT" = ( /obj/structure/cable, /turf/open/floor/iron/white/corner{ dir = 8 }, /area/station/science/lower) -"jiY" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"jiW" = ( +/obj/machinery/airalarm/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) +/area/station/science/lobby) "jje" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 8 @@ -27488,12 +27896,6 @@ /obj/machinery/duct, /turf/open/floor/iron/showroomfloor, /area/station/commons/dorms) -"jjJ" = ( -/obj/structure/bed/dogbed/renault, -/mob/living/basic/pet/fox/renault, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) "jjO" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 @@ -27501,6 +27903,27 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/medical/chemistry) +"jke" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/primary/aft) +"jkz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/lobby) "jkC" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/machinery/light/warm/directional/east, @@ -27509,17 +27932,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) -"jkE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "jkT" = ( /obj/structure/table/wood, /obj/machinery/fax/auto_name, @@ -27558,6 +27970,23 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security) +"jlx" = ( +/obj/machinery/light/floor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/floor/iron/dark/small, +/area/station/tcommsat/server) +"jly" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner, +/area/station/science/xenobiology) "jlz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27577,14 +28006,6 @@ /obj/effect/turf_decal/siding/wood/corner, /turf/open/floor/stone, /area/station/service/chapel) -"jlL" = ( -/obj/structure/closet/secure_closet/engineering_chief, -/obj/item/storage/briefcase/secure, -/obj/item/lighter, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/wood, -/area/station/command/heads_quarters/ce) "jlN" = ( /turf/open/floor/iron/white/side{ dir = 6 @@ -27615,6 +28036,13 @@ /obj/structure/flora/bush/flowers_pp/style_2, /turf/open/floor/grass, /area/station/service/chapel) +"jlZ" = ( +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs) "jmd" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt, @@ -27623,6 +28051,30 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"jmf" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = 3; + pixel_y = -2 + }, +/obj/item/reagent_containers/cup/beaker/cryoxadone{ + pixel_x = 6; + pixel_y = 10 + }, +/obj/item/reagent_containers/cup/beaker/cryoxadone{ + pixel_x = 9; + pixel_y = 3 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -6; + pixel_y = 13 + }, +/obj/item/wrench/medical{ + pixel_x = -5 + }, +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/small, +/area/station/medical/cryo) "jmi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -27635,6 +28087,19 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"jmA" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/computer/telecomms/monitor{ + dir = 8; + network = "tcommsat" + }, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ + dir = 8 + }, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) "jmC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral, @@ -27663,12 +28128,6 @@ /obj/machinery/portable_atmospherics/pump, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"jmW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "jmX" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -27693,16 +28152,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/catwalk_floor, /area/station/engineering/break_room) -"jnh" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/command/meeting_room) "jnk" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/effect/turf_decal/siding/green{ @@ -27808,6 +28257,13 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) +"jps" = ( +/obj/item/radio/intercom/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/cubicle) "jpu" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -27819,34 +28275,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"jpF" = ( -/obj/machinery/button/door/directional/west{ - id = "aibridge"; - name = "AI Maintenance Space Bridge Control"; - req_access = list("command") - }, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat/maint) +"jpE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth_large, +/area/station/science/auxlab/firing_range) "jpM" = ( /obj/structure/closet{ name = "Evidence Closet 3" }, /turf/open/floor/iron/smooth, /area/station/security/evidence) -"jpW" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/item/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/lawoffice) "jqd" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt/dust, @@ -27868,11 +28307,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) -"jqJ" = ( -/obj/structure/closet/emcloset, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "jqK" = ( /obj/effect/turf_decal/tile/green/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -27885,6 +28319,16 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron, /area/station/service/hydroponics) +"jqV" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/siding/wideplating_new/terracotta{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "jqZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -27892,16 +28336,16 @@ }, /turf/open/floor/iron, /area/station/security/prison/rec) -"jrg" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 6 +"jrc" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/dark_red{ + dir = 1 }, -/obj/item/storage/fancy/cigarettes/cigars{ - pixel_y = 4 - }, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) +/turf/open/floor/iron, +/area/station/security/prison) "jrk" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -27933,6 +28377,13 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"jrx" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) "jry" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -27948,6 +28399,10 @@ }, /turf/open/floor/wood, /area/station/engineering/atmospherics_engine) +"jrF" = ( +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/prison/garden) "jrG" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 @@ -27970,25 +28425,50 @@ /turf/open/floor/iron, /area/station/security/tram) "jrU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/thinplating_new/terracotta{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold/dark/hidden{ + dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) +/turf/open/floor/circuit, +/area/station/tcommsat/server) "jsa" = ( /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/white/side{ dir = 4 }, /area/station/science/xenobiology) +"jsr" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "jsv" = ( /obj/structure/cable, /obj/machinery/holopad, /turf/open/floor/iron, /area/station/security/prison/workout) +"jsy" = ( +/obj/structure/sign/poster/official/random/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/research) +"jsC" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) +"jsD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/table/wood, +/turf/open/floor/stone, +/area/station/service/bar) "jsE" = ( /obj/machinery/light/small/directional/east, /obj/structure/table/wood, @@ -28017,11 +28497,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/port) -"jsN" = ( -/obj/structure/hedge, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plating, -/area/station/command/heads_quarters/hop) "jsS" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -28056,18 +28531,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/diagonal, /area/station/command/heads_quarters/hop) -"jtB" = ( -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/iron/dark/corner, -/area/station/cargo/storage) -"jtD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) "jtG" = ( /obj/structure/table, /obj/structure/railing/corner, @@ -28082,34 +28545,18 @@ "jtK" = ( /turf/open/floor/iron/small, /area/station/maintenance/department/medical/central) -"jtY" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/primary/fore) -"juf" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/airlock/command/glass{ - name = "Telecommunications Server Room" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "comms-entrance-north" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) "juo" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/cargo/miningfoundry) +"juB" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/white/small, +/area/station/medical/storage) "juS" = ( /obj/structure/bed, /obj/item/bedsheet/hop, @@ -28117,14 +28564,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/hop) -"juU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/directional/west, -/obj/effect/landmark/event_spawn, -/obj/machinery/portable_atmospherics/pump/lil_pump, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "jvd" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 1 @@ -28140,6 +28579,16 @@ /obj/structure/cable, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/captain/private) +"jvv" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/smooth, +/area/station/command/bridge) "jvB" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -28162,25 +28611,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) -"jvP" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) -"jvQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/plastic{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "jvR" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/brown/opposingcorners, @@ -28201,13 +28631,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/small, /area/station/command/teleporter) -"jwf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair{ - pixel_y = -2 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "jwh" = ( /obj/structure/broken_flooring/pile/directional/east, /obj/effect/spawner/random/trash/graffiti{ @@ -28223,6 +28646,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) +"jwk" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "jwl" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -28253,28 +28683,9 @@ /obj/structure/frame/machine, /turf/open/floor/tram, /area/station/security/tram) -"jxk" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/science/lower) "jxp" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/foyer) -"jxC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/machinery/door/airlock/command/glass{ - name = "Command Hallway" - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/hallway/secondary/command) "jxD" = ( /turf/open/floor/iron, /area/station/maintenance/starboard/greater) @@ -28301,6 +28712,13 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/white/small, /area/station/medical/storage) +"jxV" = ( +/obj/structure/broken_flooring/side/directional/north{ + color = "#73737a" + }, +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "jxZ" = ( /obj/effect/turf_decal/siding/blue{ dir = 6 @@ -28345,6 +28763,19 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload_foyer) +"jyz" = ( +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/fore) "jyC" = ( /obj/effect/turf_decal/siding/yellow{ dir = 5 @@ -28402,6 +28833,12 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"jze" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "jzg" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -28413,10 +28850,6 @@ }, /turf/open/floor/tram, /area/station/maintenance/port/aft) -"jzj" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "jzo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -28447,21 +28880,28 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"jzC" = ( +/obj/effect/turf_decal/siding/white{ + dir = 10 + }, +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/table/glass, +/obj/item/stack/sheet/mineral/plasma/thirty{ + pixel_y = 4 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = -3 + }, +/turf/open/floor/iron/dark/small, +/area/station/science/xenobiology) "jAf" = ( /obj/structure/mirror/directional/east, /obj/structure/chair/stool/bar/directional/east, /obj/effect/landmark/start/hangover, /turf/open/floor/iron/showroomfloor, /area/station/service/barber) -"jAp" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/science/xenobiology) "jAq" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/turf_decal/tile/yellow/opposingcorners, @@ -28476,6 +28916,17 @@ /obj/machinery/light/small/dim/directional/south, /turf/open/floor/iron/dark, /area/station/engineering/lobby) +"jAF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "aibridge" + }, +/obj/effect/spawner/random/structure/grille, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "jAN" = ( /obj/machinery/computer/cargo{ dir = 1 @@ -28495,6 +28946,15 @@ /obj/structure/closet/firecloset, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) +"jBh" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "jBo" = ( /obj/effect/turf_decal/siding/thinplating_new{ dir = 6 @@ -28509,19 +28969,20 @@ }, /turf/open/floor/iron/dark/small, /area/station/ai_monitored/security/armory) -"jBu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"jBy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock{ - name = "Maintenance" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/camera/autoname/directional/east, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ +/obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) +/turf/open/floor/wood/tile, +/area/station/service/bar) "jBA" = ( /obj/structure/cable, /obj/machinery/power/smes/super/full, @@ -28575,6 +29036,12 @@ }, /turf/open/floor/iron, /area/station/security/execution/transfer) +"jCa" = ( +/obj/effect/turf_decal/tile/dark_red/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs) "jCm" = ( /obj/effect/landmark/start/hangover, /turf/open/misc/dirt/station, @@ -28583,13 +29050,15 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"jCE" = ( -/obj/structure/chair/office{ +"jCx" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/lower) "jCH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -28636,22 +29105,18 @@ dir = 8 }, /area/station/command/corporate_showroom) +"jDL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "jDM" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/hedge, /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/command/corporate_dock) -"jDT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/floor, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/turf/open/floor/stone, -/area/station/service/bar) "jEc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -28667,12 +29132,6 @@ /obj/structure/sign/warning/no_smoking/circle/directional/north, /turf/open/floor/iron, /area/station/science/lobby) -"jEp" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/delivery, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/station/ai_monitored/command/storage/eva) "jEu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/item/kirbyplants/random, @@ -28851,14 +29310,6 @@ dir = 1 }, /area/station/hallway/secondary/entry) -"jGB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/greenscreen_camera{ - pixel_y = -5 - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/captain/private) "jGC" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/white/corner{ @@ -28868,27 +29319,6 @@ dir = 8 }, /area/station/cargo/storage) -"jGK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/wood{ - dir = 1 - }, -/turf/open/floor/iron/small, -/area/station/service/barber) -"jGL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/cold_temp/directional/north, -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/science/xenobiology) "jGN" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -28902,12 +29332,6 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) -"jGT" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/dorms) "jGW" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -28928,6 +29352,14 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, /area/station/security/tram) +"jHc" = ( +/obj/structure/table/optable{ + desc = "A cold, hard place for your final rest."; + name = "Morgue Slab" + }, +/obj/effect/turf_decal/trimline/dark_blue/filled/corner, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "jHi" = ( /obj/structure/table/glass, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -28949,6 +29381,11 @@ /obj/machinery/incident_display/tram/directional/north, /turf/open/floor/iron, /area/station/security/tram) +"jHx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold/dark/hidden, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "jHB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -29003,33 +29440,18 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/science/lobby) -"jIc" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) -"jId" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/landmark/event_spawn, +"jIj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 + dir = 8 }, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "jIl" = ( /obj/effect/turf_decal/siding/red{ dir = 10 }, /turf/open/floor/iron/small, /area/station/security/brig) -"jIm" = ( -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/south, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "jIn" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/firealarm/directional/west, @@ -29057,6 +29479,31 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/cmo, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"jII" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) +"jIS" = ( +/obj/effect/spawner/random/trash/hobo_squat, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"jJb" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/science/xenobiology) "jJg" = ( /obj/effect/turf_decal/siding/wideplating, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29066,6 +29513,18 @@ }, /turf/open/floor/wood, /area/station/engineering/main) +"jJk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/highsecurity{ + name = "Secure Network Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_half, +/area/station/ai_monitored/turret_protected/ai_upload_foyer) "jJw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29127,10 +29586,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"jKb" = ( -/obj/effect/spawner/random/trash/hobo_squat, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "jKg" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -29150,41 +29605,34 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) -"jKq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +"jKv" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"jKD" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=6.3-Arrivals"; + location = "6.2-Arrivals" }, -/obj/machinery/light/small/directional/north, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/science/xenobiology) -"jKC" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) +/area/station/hallway/secondary/entry) "jKJ" = ( /obj/machinery/door/window/right/directional/north, /turf/open/floor/iron, /area/station/security/prison/workout) -"jKS" = ( -/obj/structure/table/reinforced, -/obj/item/trash/cheesie{ - pixel_x = 2; - pixel_y = 8 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"jKT" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) "jKU" = ( /turf/closed/wall, /area/station/engineering/atmos/storage/gas) @@ -29194,10 +29642,22 @@ }, /turf/open/floor/iron, /area/station/commons/storage/tools) -"jLt" = ( -/obj/structure/cable, +"jLk" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Cytology Zoo" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/textured_half{ + dir = 1 + }, +/area/station/hallway/secondary/recreation) +"jLl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/construction/mining/aux_base) +/area/station/maintenance/starboard/greater) "jLv" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -29212,6 +29672,13 @@ }, /turf/open/floor/iron, /area/station/security/prison) +"jLF" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 4; + name = "killroom vent" + }, +/turf/open/floor/circuit/telecomms/mainframe, +/area/station/science/xenobiology) "jLI" = ( /turf/open/floor/iron/half{ dir = 8 @@ -29241,27 +29708,21 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"jMa" = ( -/obj/machinery/telecomms/server/presets/security, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) "jMp" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 8 }, /turf/open/floor/engine/o2, /area/station/engineering/atmos) -"jML" = ( -/obj/structure/disposalpipe/segment, +"jMI" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/lower) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload_foyer) "jMM" = ( /obj/structure/spider/stickyweb/sealed, /obj/structure/spider/stickyweb, @@ -29293,6 +29754,13 @@ /obj/machinery/teleport/hub, /turf/open/floor/plating, /area/station/command/teleporter) +"jNf" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/stairs, +/area/station/medical/medbay/central) "jNn" = ( /obj/structure/filingcabinet, /turf/open/floor/iron/grimy, @@ -29335,6 +29803,13 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"jNX" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "jOb" = ( /obj/machinery/firealarm/directional/east, /obj/effect/turf_decal/siding/wideplating/dark{ @@ -29369,6 +29844,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"jOm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "jOs" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/flora/bush/lavendergrass/style_2, @@ -29380,14 +29860,6 @@ /obj/machinery/status_display/evac/directional/east, /turf/open/misc/sandy_dirt, /area/station/hallway/primary/central/fore) -"jOF" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light_switch/directional/west, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) "jOM" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -29395,12 +29867,16 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"jOO" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 10 +"jON" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/grass, -/area/station/medical/morgue) +/obj/machinery/status_display/evac/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side, +/area/station/science/lower) "jOU" = ( /obj/effect/landmark/start/captain, /turf/open/floor/carpet/executive, @@ -29438,18 +29914,14 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"jPy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"jPU" = ( +/obj/structure/chair/office{ + dir = 1 }, -/turf/open/floor/iron/white/small, -/area/station/science/cubicle) -"jPM" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/very_dim/directional/east, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "jQf" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29458,6 +29930,11 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/security/execution/transfer) +"jQj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "jQv" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -29483,6 +29960,19 @@ /obj/structure/chair/stool/directional/south, /turf/open/floor/iron, /area/station/cargo/sorting) +"jQM" = ( +/obj/machinery/door/airlock/research{ + name = "Research and Development Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/lab) "jQW" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -29516,18 +30006,6 @@ }, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"jRo" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "jRs" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron, @@ -29587,6 +30065,20 @@ dir = 4 }, /area/station/engineering/break_room) +"jRY" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/public, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "jSl" = ( /obj/structure/filingcabinet/filingcabinet, /obj/machinery/light_switch/directional/east, @@ -29611,16 +30103,27 @@ /obj/item/bedsheet/brown, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"jSp" = ( +"jSo" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ +/turf/open/floor/plating, +/area/station/engineering/storage/tech) +"jSu" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/unres{ dir = 1 }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/aft) "jSw" = ( /obj/structure/railing, /turf/open/floor/catwalk_floor, @@ -29645,11 +30148,6 @@ /obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) -"jSR" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "jSS" = ( /obj/structure/cable, /obj/effect/spawner/structure/window, @@ -29659,19 +30157,6 @@ }, /turf/open/floor/plating, /area/station/command/corporate_showroom) -"jSU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) -"jSX" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "jTf" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -29704,56 +30189,32 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"jTp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) -"jTu" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/green{ - dir = 9 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) "jTA" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, /area/station/cargo/storage) -"jTC" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "jTD" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ dir = 8 }, /turf/open/floor/iron, /area/station/engineering/atmos) -"jTU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"jTH" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/science/lower) +"jTK" = ( +/obj/machinery/camera/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ dir = 4 }, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/primary/aft) +/area/station/science/lobby) "jTW" = ( /obj/structure/closet/radiation, /obj/effect/turf_decal/bot{ @@ -29762,12 +30223,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) -"jUc" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/light/small/directional/east, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "jUl" = ( /obj/machinery/door/airlock/external{ name = "Common Mining Dock" @@ -29785,12 +30240,6 @@ }, /turf/open/space/basic, /area/space) -"jUp" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/instrument/harmonica, -/turf/open/floor/iron, -/area/station/security/prison/rec) "jUr" = ( /obj/structure/sign/poster/official/random/directional/east, /obj/structure/table, @@ -29824,10 +30273,37 @@ /obj/structure/cable, /turf/open/floor/iron/herringbone, /area/station/commons/dorms) +"jUR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/small, +/area/station/medical/medbay/lobby) +"jUT" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/research) "jVe" = ( /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) +"jVl" = ( +/obj/structure/sign/departments/engineering/directional/north, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/fore) "jVs" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29838,25 +30314,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"jVJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table, -/obj/item/bikehorn/rubberducky{ - color = "#a61a11"; - desc = "Foooo! Ducky is maaaaad. Ducky waaaanna hiiiiiit stuuuuuuf!"; - name = "Reggie, the Angry Duckling"; - pixel_x = 6; - pixel_y = 9 - }, -/obj/item/grenade/firecracker{ - pixel_x = 1 - }, -/obj/item/match{ - pixel_x = -8; - pixel_y = 4 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "jVM" = ( /turf/closed/wall, /area/station/maintenance/central/greater) @@ -29864,14 +30321,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/fore/greater) -"jWd" = ( -/obj/structure/cable, -/obj/item/kirbyplants/random/fullysynthetic, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security/prison/garden) "jWe" = ( /obj/effect/turf_decal/siding/thinplating_new/terracotta{ dir = 10 @@ -29914,13 +30363,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/security/courtroom) -"jWz" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/light_switch/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "jWA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -29943,6 +30385,17 @@ dir = 8 }, /area/station/hallway/secondary/dock) +"jWU" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/light/floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) "jXc" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -29962,28 +30415,6 @@ /obj/effect/mapping_helpers/airlock/access/any/security/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"jXA" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Telecomms Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/effect/landmark/navigate_destination, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/textured_half, -/area/station/engineering/storage/tcomms) -"jXB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/public/glass{ - name = "Lockers" - }, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/commons/fitness/locker_room) "jXC" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -30000,6 +30431,12 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"jXL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/grille, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "jXQ" = ( /obj/structure/flora/bush/large/style_random{ pixel_x = -18; @@ -30069,25 +30506,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plating, /area/station/service/bar) -"jYP" = ( -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 10 - }, -/obj/machinery/vending/wardrobe/coroner_wardrobe, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"jYQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/command/bridge) "jYU" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "hopqueue"; @@ -30101,6 +30519,14 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/half, /area/station/hallway/primary/central/fore) +"jYV" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/freezerchamber) "jYY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30111,13 +30537,6 @@ /obj/effect/mapping_helpers/airlock/access/all/command/teleporter, /turf/open/floor/iron/dark/textured_half, /area/station/command/teleporter) -"jZa" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) "jZl" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmospherics_engine) @@ -30132,17 +30551,13 @@ /obj/structure/disposalpipe/junction/yjunction, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) -"jZL" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Ordnance Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) +"jZN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/terminal, +/obj/structure/chair/stool/directional/east, +/obj/structure/cable, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "kam" = ( /obj/effect/decal/cleanable/cobweb, /obj/machinery/disposal/delivery_chute{ @@ -30206,6 +30621,15 @@ /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"kaT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/steam_vent, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "kaW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30214,6 +30638,23 @@ /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/tram) +"kaZ" = ( +/obj/effect/turf_decal/trimline/white/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/white/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/white/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/white/mid_joiner{ + dir = 8 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/commons/fitness/recreation) "kbc" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -30246,19 +30687,16 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"kci" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Construction Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 +"kcd" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "kcA" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -30267,6 +30705,23 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/theatre) +"kcD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, +/turf/open/floor/wood/tile, +/area/station/tcommsat/server) +"kcQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ + dir = 1 + }, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "kcW" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/smes/full, @@ -30280,18 +30735,36 @@ /obj/structure/displaycase/trophy, /turf/open/floor/wood/parquet, /area/station/service/library) -"kdn" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/bot_white, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +"kdk" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/diagonal, +/area/station/ai_monitored/command/storage/eva) "kdv" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange, /obj/structure/lattice, /turf/open/misc/asteroid/airless, /area/space/nearstation) +"kdB" = ( +/obj/item/assembly/timer{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/machinery/newscaster/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/science/lobby) "kdH" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -30303,31 +30776,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"kdO" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white/side{ - dir = 9 - }, -/area/station/science/lower) -"kea" = ( -/obj/machinery/light_switch/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/small, -/area/station/science/server) -"kej" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "kel" = ( /obj/machinery/light/cold/directional/south, /obj/machinery/modular_computer/preset/id{ @@ -30362,6 +30810,14 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/science/lower) +"kfb" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/research) "kfv" = ( /obj/effect/turf_decal/stripes/red/line, /obj/machinery/power/apc/auto_name/directional/east, @@ -30388,18 +30844,6 @@ /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"kfI" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/lower) -"kfM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "kfW" = ( /obj/effect/turf_decal/siding/yellow{ dir = 1 @@ -30420,16 +30864,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/security/execution/education) -"kgk" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/engineering/storage/tech) "kgn" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/tile/yellow{ @@ -30487,16 +30921,6 @@ /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/tram, /area/station/security/tram) -"kho" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=6.3-Arrivals"; - location = "6.2-Arrivals" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "khp" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 9 @@ -30523,26 +30947,31 @@ dir = 1 }, /area/station/cargo/sorting) +"khy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/kirbyplants/organic/applebush, +/turf/open/floor/iron/smooth, +/area/station/hallway/secondary/command) "khD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"khG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "khQ" = ( /obj/structure/transport/linear/tram, /obj/structure/fluff/tram_rail/floor, /obj/structure/thermoplastic, /turf/open/floor/tram, /area/station/maintenance/port/aft) +"khR" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/light/small/directional/south, +/obj/effect/spawner/random/vending/colavend, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) "khS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -30562,38 +30991,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"kii" = ( -/obj/structure/flora/bush/flowers_yw/style_3{ - pixel_y = -3 - }, -/obj/structure/flora/bush/flowers_br/style_random{ - pixel_x = -6; - pixel_y = -6 - }, -/obj/structure/flora/bush/flowers_pp{ - pixel_x = -3; - pixel_y = -5 - }, -/obj/machinery/light/floor, -/obj/effect/light_emitter/fake_outdoors, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/grass/Airless, -/area/station/hallway/primary/central/aft) "kik" = ( /obj/structure/chair/stool/directional/east, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/station/maintenance/hallway/abandoned_recreation) -"kit" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "kiB" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -30638,6 +31041,14 @@ /obj/structure/flora/tree/jungle/style_6, /turf/open/floor/grass, /area/station/service/chapel) +"kja" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/junction, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "kjb" = ( /obj/structure/hedge, /obj/structure/sign/poster/contraband/random/directional/east, @@ -30651,49 +31062,6 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"kjs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/table, -/obj/item/clothing/glasses/meson{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/item/clothing/glasses/meson{ - pixel_x = 5; - pixel_y = -4 - }, -/obj/item/clothing/glasses/meson{ - pixel_x = 5; - pixel_y = 8 - }, -/obj/machinery/camera/directional/east, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"kjw" = ( -/obj/effect/turf_decal/tile/blue, -/obj/structure/sign/directions/lavaland/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white/corner{ - dir = 8 - }, -/area/station/hallway/secondary/dock) -"kjx" = ( -/obj/effect/turf_decal/weather/snow, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "kjO" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/effect/turf_decal/siding/white{ @@ -30701,6 +31069,14 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/aft) +"kjT" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "kjU" = ( /obj/structure/plasticflaps/opaque, /turf/open/floor/plating, @@ -30811,11 +31187,6 @@ /obj/machinery/duct, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) -"klf" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) "klg" = ( /obj/machinery/door/firedoor, /turf/open/floor/iron/stairs/medium{ @@ -30829,13 +31200,12 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"klF" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"klC" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/secondary/recreation) +/area/station/hallway/secondary/exit/departure_lounge) "klG" = ( /obj/machinery/suit_storage_unit/engine, /obj/effect/turf_decal/bot{ @@ -30848,6 +31218,10 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/catwalk_floor/iron_dark, /area/station/security/processing) +"klI" = ( +/obj/effect/spawner/random/structure/grille, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "klN" = ( /obj/effect/turf_decal/weather/dirt{ dir = 10 @@ -30862,15 +31236,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) -"kmd" = ( -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/solars/starboard/fore) "kmg" = ( /obj/machinery/door/poddoor{ id = "QMLoaddoor2"; @@ -30912,20 +31277,15 @@ }, /turf/open/floor/plating, /area/station/cargo/storage) -"kms" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"kmC" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/service_all, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/effect/turf_decal/bot, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) +"kmr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/structure/table, +/obj/item/stack/sheet/mineral/plasma/five, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "kmD" = ( /obj/structure/chair/office/light{ color = "#6495ED"; @@ -31010,14 +31370,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/port/aft) -"knO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/airalarm/directional/east, -/obj/machinery/duct, -/turf/open/floor/iron/white/small, -/area/station/commons/toilet/restrooms) "knR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, @@ -31031,16 +31383,12 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark/small, /area/station/medical/virology) -"knY" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/science/xenobiology) -"kov" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"kok" = ( +/obj/structure/cable, /obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "koz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -31055,6 +31403,11 @@ }, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) +"kpD" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "kpF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, @@ -31063,16 +31416,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"kpO" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/multitool, -/obj/item/clothing/glasses/meson, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "kpU" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /turf/open/floor/iron/white, @@ -31081,19 +31424,20 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"kqb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/iron/white/side, -/area/station/science/research) "kql" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/brig/entrance) +"kqo" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/science/cytology) "kqr" = ( /obj/item/radio/intercom/directional/north, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ @@ -31134,20 +31478,13 @@ /obj/item/mop, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"kqO" = ( -/obj/effect/mapping_helpers/airlock/access/all/medical/coroner, -/obj/machinery/door/airlock/medical/glass, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/dark_blue{ +"kqN" = ( +/obj/machinery/light/cold/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "kqU" = ( /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom/directional/north, @@ -31191,34 +31528,10 @@ /obj/item/kirbyplants/random/fullysynthetic, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) -"krv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/alien/weeds, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "krz" = ( /obj/structure/cable, /turf/open/floor/iron/stairs, /area/station/maintenance/department/science/xenobiology) -"krB" = ( -/obj/machinery/door/airlock/command/glass{ - name = "E.V.A. Storage" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/eva, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/ai_monitored/command/storage/eva) "krF" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -31240,6 +31553,19 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/solars/starboard/aft) +"krN" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "krW" = ( /obj/structure/bed, /obj/effect/turf_decal/siding/wood{ @@ -31361,16 +31687,11 @@ }, /turf/open/floor/wood, /area/station/engineering/atmos/pumproom) -"ktl" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/science/xenobiology) +"ktk" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) "ktB" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -31446,6 +31767,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"kuN" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side, +/area/station/science/xenobiology) "kuO" = ( /obj/structure/chair{ dir = 1; @@ -31455,18 +31785,33 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/science/lower) -"kuQ" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ +"kuR" = ( +/obj/structure/table/glass, +/obj/item/folder/blue{ + pixel_y = 2 + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/airalarm/directional/north, -/obj/structure/chair, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/carpet/executive, +/area/station/command/meeting_room) +"kuU" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"kuZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/commons/storage/tools) -"kuY" = ( -/obj/structure/broken_flooring/side/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +/area/station/hallway/secondary/construction) "kvl" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -31523,6 +31868,26 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron, /area/station/security/execution/transfer) +"kwu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) +"kwx" = ( +/obj/machinery/button/door/directional/east{ + id = "AuxToilet2"; + name = "Lock Control"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/structure/toilet, +/obj/machinery/light/small/directional/west, +/obj/effect/spawner/random/trash/soap{ + spawn_scatter_radius = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/maintenance/department/science/xenobiology) "kwy" = ( /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, @@ -31533,29 +31898,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"kwA" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/robotics/augments) -"kwB" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, +"kwU" = ( +/obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "kwW" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/aft) -"kwX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/research) "kwY" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, @@ -31656,11 +32008,6 @@ }, /turf/open/floor/wood, /area/station/cargo/boutique) -"kyp" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/sign/poster/greenscreen/directional/south, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/captain/private) "kyr" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/airalarm/directional/west, @@ -31682,17 +32029,29 @@ /obj/effect/turf_decal/trimline/neutral/line, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"kzs" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security Office" +"kza" = ( +/obj/machinery/door/window/brigdoor/left/directional/north{ + name = "Creature Pen"; + req_access = list("research") + }, +/obj/machinery/door/window/brigdoor/left/directional/south{ + name = "Creature Pen"; + req_access = list("research") }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/general, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/security/checkpoint/science) +/turf/open/floor/catwalk_floor/iron, +/area/station/science/xenobiology) +"kzq" = ( +/obj/structure/table, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/spawner/round_default_module, +/obj/machinery/flasher/directional/east, +/obj/item/radio/intercom/directional/north{ + pixel_x = 27 + }, +/obj/structure/cable, +/turf/open/floor/circuit/red, +/area/station/ai_monitored/turret_protected/ai_upload) "kzv" = ( /obj/structure/chair/sofa/bench/left{ dir = 8 @@ -31703,6 +32062,21 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) +"kzC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/airalarm/directional/west, +/obj/structure/cable, +/obj/effect/mapping_helpers/airalarm/link{ + chamber_id = "engine" + }, +/obj/effect/mapping_helpers/airalarm/engine_access, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "kzI" = ( /obj/effect/turf_decal/bot_white, /obj/effect/spawner/random/structure/closet_empty/crate, @@ -31749,6 +32123,11 @@ /obj/machinery/camera/directional/west, /turf/open/floor/engine, /area/station/engineering/supermatter) +"kAI" = ( +/obj/machinery/status_display/ai/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) "kAJ" = ( /obj/structure/closet/wardrobe/mixed, /obj/effect/turf_decal/siding/wideplating/dark, @@ -31760,10 +32139,29 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/stone, /area/station/maintenance/aft) +"kBf" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) "kBg" = ( /obj/structure/cable, /turf/open/floor/iron/small, /area/station/command/teleporter) +"kBp" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 10 + }, +/obj/effect/mapping_helpers/dead_body_placer{ + bodycount = 2 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "kBA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31796,6 +32194,16 @@ }, /turf/open/floor/eighties, /area/station/hallway/primary/central/fore) +"kBT" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/siding/green{ + dir = 9 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "kBZ" = ( /obj/machinery/door/airlock/command{ name = "Chief Engineer's Office" @@ -31825,6 +32233,14 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/command/heads_quarters/captain) +"kCA" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/chair/stool/directional/north, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/light/colour_cycle/dancefloor_b, +/area/station/maintenance/starboard/central) "kCB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -31841,13 +32257,14 @@ /obj/item/paper/fluff/gateway, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/captain/private) -"kCI" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"kCG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/commons/dorms) "kCJ" = ( /obj/structure/cable, /obj/structure/reagent_dispensers/watertank, @@ -31886,24 +32303,27 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"kCV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/paramedic) "kDs" = ( /obj/structure/chair/stool/directional/north, /turf/open/floor/carpet/purple, /area/station/commons/dorms) -"kDB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 +"kDY" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 }, -/obj/machinery/door/poddoor/shutters{ - dir = 1; - id = "aibridge" - }, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"kDR" = ( -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/science/xenobiology) +/area/station/science/research) "kEd" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -31934,15 +32354,17 @@ dir = 1 }, /area/station/cargo/storage) -"kEx" = ( -/obj/effect/turf_decal/stripes/line{ +"kEz" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/purple{ dir = 8 }, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/side{ +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/area/station/engineering/storage/tech) +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) "kEA" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes/line{ @@ -31950,6 +32372,18 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"kED" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/airalarm/directional/north, +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "kEH" = ( /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/dark, @@ -31963,6 +32397,18 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"kFg" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/research{ + name = "Augment Corridor" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/robotics/augments) "kFq" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -31983,6 +32429,13 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) +"kFA" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "kFD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/autolathe, @@ -31999,15 +32452,15 @@ /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) -"kFV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +"kFX" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white/side, -/area/station/science/research) +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/iron/white/small, +/area/station/medical/medbay/central) "kFY" = ( /turf/closed/wall/r_wall, /area/station/medical/morgue) @@ -32092,13 +32545,6 @@ /obj/effect/mapping_helpers/requests_console/assistance, /turf/open/floor/iron/smooth, /area/station/command/bridge) -"kHo" = ( -/obj/structure/table/reinforced, -/obj/machinery/firealarm/directional/east, -/obj/item/storage/box/bodybags, -/obj/item/clothing/mask/gas/plaguedoctor, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "kHp" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32110,11 +32556,19 @@ /obj/effect/turf_decal/siding/wideplating/corner, /turf/open/floor/wood, /area/station/engineering/atmos/office) -"kHJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"kHz" = ( +/obj/machinery/telecomms/server/presets/service, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/turf/open/floor/circuit, +/area/station/tcommsat/server) +"kHH" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/science/ordnance/testlab) +/area/station/maintenance/department/science/xenobiology) "kHL" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -32136,21 +32590,15 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"kHY" = ( -/obj/effect/turf_decal/trimline/dark/line{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/machinery/reagentgrinder{ - pixel_x = 3; - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/rag{ - pixel_y = 4; - pixel_x = -6 - }, -/turf/open/floor/iron/dark/small, -/area/station/maintenance/department/science/xenobiology) +"kIi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/broken_flooring/corner/directional/south, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/hallway/secondary/dock) "kIj" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -32205,6 +32653,14 @@ }, /turf/open/floor/iron/small, /area/station/medical/medbay/lobby) +"kIU" = ( +/obj/item/kirbyplants/random, +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/science/auxlab/firing_range) "kIY" = ( /obj/structure/broken_flooring/singular/directional/south, /obj/effect/decal/cleanable/dirt, @@ -32242,6 +32698,14 @@ /obj/structure/chair/stool/directional/south, /turf/open/floor/iron, /area/station/cargo/sorting) +"kJE" = ( +/obj/effect/turf_decal/siding{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/small, +/area/station/science/lobby) "kJJ" = ( /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, @@ -32285,12 +32749,6 @@ }, /turf/open/floor/wood/parquet, /area/station/service/library) -"kKN" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "kKT" = ( /obj/machinery/computer/camera_advanced/xenobio{ dir = 4 @@ -32371,17 +32829,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"kML" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) -"kMW" = ( -/obj/machinery/holopad, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs) "kMY" = ( /obj/effect/turf_decal/stripes{ dir = 4 @@ -32407,19 +32854,13 @@ dir = 1 }, /area/station/cargo/bitrunning/den) -"kNf" = ( -/obj/structure/cable, +"kNd" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/blue/warning, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"kNk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "kNn" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32450,14 +32891,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"kNJ" = ( -/obj/machinery/power/solar_control{ - id = "forestarboard"; - name = "Starboard Bow Solar Control" - }, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/maintenance/solars/starboard/fore) "kNK" = ( /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, @@ -32467,22 +32900,6 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron, /area/station/commons/dorms) -"kNZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"kOh" = ( -/obj/machinery/door/airlock/research{ - name = "Mech Bay" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/robotics/mechbay) "kOm" = ( /obj/structure/cable, /turf/closed/wall/r_wall, @@ -32496,17 +32913,6 @@ /obj/machinery/brm, /turf/open/floor/iron, /area/station/cargo/miningfoundry) -"kOG" = ( -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/solars/starboard/fore) "kOH" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 @@ -32519,19 +32925,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/execution/transfer) -"kOT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/paramedic) "kOV" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"kOW" = ( +/obj/structure/hedge, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/storage/tech) "kPa" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -32557,6 +32958,11 @@ }, /turf/open/floor/iron/dark/side, /area/station/security/execution/transfer) +"kPs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/grimy, +/area/station/maintenance/starboard/central) "kPv" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -32601,15 +33007,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"kQj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) "kQk" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -32620,13 +33017,20 @@ "kQt" = ( /turf/closed/wall/r_wall, /area/station/maintenance/starboard/aft) -"kQM" = ( -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/cargo/storage) -"kRb" = ( -/turf/open/floor/iron, -/area/station/cargo/sorting) +"kQP" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "kRi" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 @@ -32670,6 +33074,19 @@ /obj/machinery/light/small/dim/directional/west, /turf/open/floor/plating, /area/station/hallway/secondary/dock) +"kRU" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/mug{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/storage/fancy/cigarettes/cigpack_shadyjims{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/effect/spawner/random/entertainment/lighter, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "kRV" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -32690,22 +33107,12 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/dark, /area/station/engineering/lobby) -"kSd" = ( -/obj/machinery/firealarm/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, -/area/station/ai_monitored/turret_protected/ai_upload) "kSj" = ( /obj/structure/chair/plastic{ dir = 8 }, /turf/open/floor/plating, /area/station/maintenance/department/electrical) -"kSv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "kSA" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32714,6 +33121,18 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"kSL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "kTm" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/siding/wood{ @@ -32724,6 +33143,10 @@ dir = 8 }, /area/station/service/library) +"kTo" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "kTp" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall, @@ -32767,13 +33190,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) -"kTH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/hallway/secondary/command) "kTX" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/red/line{ @@ -32785,6 +33201,10 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/hallway/primary/central/fore) +"kUa" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "kUf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -32792,13 +33212,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/service/chapel/funeral) -"kUF" = ( +"kUI" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/research) +/obj/structure/cable, +/turf/open/floor/iron/dark/side, +/area/station/science/xenobiology) "kUL" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -32806,24 +33230,18 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"kUM" = ( +/obj/machinery/light/floor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/research) "kUN" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos/pumproom) -"kUR" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/science/lab) -"kUW" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "kVb" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32872,17 +33290,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/small, /area/station/security/office) -"kWF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/stone, -/area/station/service/bar) "kWJ" = ( /obj/structure/chair/sofa/bench/left{ dir = 1 @@ -32891,16 +33298,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/port) -"kWN" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/white/side, -/area/station/science/research) "kWR" = ( /obj/machinery/door/airlock/public/glass{ name = "Docking Corridor" @@ -32946,18 +33343,30 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"kXQ" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) "kXS" = ( /obj/structure/closet/emcloset, /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/plating, /area/station/hallway/secondary/dock) +"kXV" = ( +/obj/machinery/light/cold/directional/south, +/obj/effect/turf_decal/stripes/line, +/obj/structure/sign/departments/aiupload/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) +"kYp" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/science/xenobiology) "kYs" = ( /obj/machinery/mech_bay_recharge_port{ dir = 2 @@ -32986,22 +33395,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/checkpoint/escape) -"kYY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/window/spawner/directional/south, -/obj/effect/turf_decal/trimline/purple/end{ - dir = 1 - }, -/obj/machinery/shower/directional/north{ - name = "emergency shower"; - pixel_y = -11 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/cytology) "kZh" = ( /obj/structure/table/glass, /obj/effect/turf_decal/siding/thinplating_new/light{ @@ -33029,6 +33422,16 @@ }, /turf/open/floor/iron/dark/small, /area/station/engineering/main) +"kZs" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/dorms) "kZv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -33075,6 +33478,14 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/station/service/chapel) +"kZJ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/steam_vent, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "lab" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -33136,6 +33547,11 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/dark, /area/station/cargo/lobby) +"lbv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "lbG" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -33181,17 +33597,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/hallway/secondary/exit/departure_lounge) -"lcw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/navigate_destination/chemfactory, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/central) "lcC" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -33230,6 +33635,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"ldk" = ( +/obj/effect/turf_decal/tile/blue, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk, +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, +/area/station/command/heads_quarters/hop) "ldq" = ( /turf/closed/wall, /area/station/maintenance/department/science/xenobiology) @@ -33266,14 +33681,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/textured_half, /area/station/security/brig) -"lee" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) "lei" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -33350,16 +33757,12 @@ }, /turf/open/floor/iron/cafeteria, /area/station/hallway/secondary/exit/departure_lounge) -"leW" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/airlock/command/glass{ - name = "Telecommunications Server Room" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) +"leY" = ( +/obj/effect/turf_decal/siding, +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/lab) "lfa" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -33428,6 +33831,15 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/smooth, /area/station/command/bridge) +"lfw" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "lfC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -33508,29 +33920,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/small, /area/station/maintenance/department/electrical) -"lgw" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/item/radio/intercom/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/science/xenobiology) -"lgx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/primary/aft) "lgD" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/iron/smooth_large, @@ -33574,15 +33963,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) -"lhm" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/lower) "lhn" = ( /obj/structure/cable, /obj/structure/barricade/wooden/crude, @@ -33622,6 +34002,10 @@ /obj/item/pickaxe, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) +"lhS" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/hallway/secondary/entry) "lhT" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -33657,38 +34041,10 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/wood/large, /area/station/command/heads_quarters/captain) -"liH" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/incident_display/tram/directional/north, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) "liJ" = ( /obj/effect/landmark/start/chaplain, /turf/open/floor/iron/dark/small, /area/station/service/chapel/storage) -"liL" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/airlock/command/glass{ - name = "Telecommunications Server Room" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) -"liP" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 6 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "liQ" = ( /obj/structure/lattice, /turf/open/misc/asteroid/airless, @@ -33727,16 +34083,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"ljg" = ( -/obj/effect/turf_decal/weather/snow, -/obj/machinery/light/small/directional/north, -/obj/machinery/icecream_vat, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "lji" = ( /obj/structure/flora/tree/jungle/style_2, /obj/effect/turf_decal/weather/dirt{ @@ -33744,13 +34090,6 @@ }, /turf/open/floor/grass, /area/station/service/chapel) -"ljj" = ( -/obj/machinery/light/cold/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "ljl" = ( /obj/structure/lattice, /obj/structure/railing/corner{ @@ -33775,12 +34114,6 @@ dir = 1 }, /area/station/cargo/storage) -"ljw" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "ljz" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -33788,17 +34121,6 @@ }, /turf/open/floor/iron, /area/station/security/prison/rec) -"ljP" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/trunk, -/obj/machinery/firealarm/directional/west, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/blue{ - dir = 9 - }, -/turf/open/floor/iron/white/small, -/area/station/command/heads_quarters/cmo) "ljT" = ( /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/west, @@ -33837,39 +34159,34 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/security/prison/workout) -"lku" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 +"lkj" = ( +/obj/effect/turf_decal/trimline/dark/line{ + dir = 4 }, -/obj/item/pen, -/turf/open/floor/iron, -/area/station/security/prison/rec) -"lkv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ - dir = 9 +/obj/structure/table/wood, +/obj/machinery/reagentgrinder{ + pixel_x = 3; + pixel_y = 6 }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) +/obj/item/reagent_containers/cup/rag{ + pixel_y = 4; + pixel_x = -6 + }, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/department/science/xenobiology) +"lko" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "lkJ" = ( /obj/structure/flora/rock/pile/jungle/style_4, /turf/open/floor/grass, /area/station/service/chapel) -"lkL" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/pen{ - pixel_x = -2; - pixel_y = 3 - }, -/turf/open/floor/iron, -/area/station/cargo/sorting) "lkM" = ( /obj/structure/sign/directions/evac/directional/west{ dir = 2 @@ -33896,20 +34213,42 @@ "lkV" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance) -"llr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"llC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +"llb" = ( +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 8 }, +/obj/item/kirbyplants/random/fullysynthetic, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"llf" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden, +/turf/open/floor/wood/tile, +/area/station/tcommsat/server) +"lli" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"llH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/tcommsat/server) +"llI" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "llP" = ( /obj/structure/cable, /obj/structure/bed/medical{ @@ -33933,19 +34272,34 @@ "llW" = ( /turf/closed/wall, /area/station/ai_monitored/security/armory) -"llY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/wideplating_new/terracotta{ +"llZ" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/maintenance/central/lesser) -"lmb" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/storage/tech) +"lmf" = ( +/obj/item/kirbyplants/random, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/maintenance/solars/starboard/fore) +"lmh" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/command/bridge) "lmm" = ( /mob/living/basic/frog, /obj/effect/turf_decal/weather/dirt{ @@ -33971,12 +34325,54 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/wood, /area/station/maintenance/hallway/abandoned_recreation) +"lmt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table, +/obj/item/bikehorn/rubberducky{ + color = "#a61a11"; + desc = "Foooo! Ducky is maaaaad. Ducky waaaanna hiiiiiit stuuuuuuf!"; + name = "Reggie, the Angry Duckling"; + pixel_x = 6; + pixel_y = 9 + }, +/obj/item/grenade/firecracker{ + pixel_x = 1 + }, +/obj/item/match{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "lmz" = ( /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"lmC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"lmG" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "lmJ" = ( /turf/open/floor/iron, /area/station/engineering/atmos/project) +"lmQ" = ( +/obj/effect/turf_decal/trimline/dark/filled/warning{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/department/science/xenobiology) "lmZ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -34034,6 +34430,15 @@ }, /turf/open/floor/iron/dark/diagonal, /area/station/service/bar) +"lnH" = ( +/obj/machinery/firealarm/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/stairs{ + dir = 8 + }, +/area/station/science/xenobiology) "lnI" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/ore_box, @@ -34085,6 +34490,12 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron, /area/station/service/hydroponics) +"lnU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster/directional/west, +/obj/structure/sign/poster/official/soft_cap_pop_art/directional/north, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "lnW" = ( /obj/effect/turf_decal/tile/neutral/full, /obj/structure/chair{ @@ -34103,18 +34514,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/processing) -"lom" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/floor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/tcommsat/server) "lon" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/landmark/atmospheric_sanity/ignore_area, @@ -34124,12 +34523,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"loq" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/maintenance/department/engine/atmos) "lox" = ( /obj/effect/turf_decal/siding/red{ dir = 4 @@ -34142,6 +34535,16 @@ /obj/machinery/holopad, /turf/open/floor/stone, /area/station/command/heads_quarters/hos) +"lpg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side, +/area/station/science/lower) "lps" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/computer/atmos_control/nocontrol/master{ @@ -34151,13 +34554,6 @@ /obj/machinery/light/no_nightlight/directional/south, /turf/open/floor/iron/small, /area/station/engineering/atmos/office) -"lpt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) "lpC" = ( /turf/open/floor/plating, /area/station/service/chapel/funeral) @@ -34239,6 +34635,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/hop) +"lqB" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 4 + }, +/obj/machinery/camera/directional/south{ + c_tag = "atmospherics - lower" + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "lqC" = ( /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/aft) @@ -34246,6 +34651,15 @@ /obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/prison_wing, /turf/open/floor/tram, /area/station/security/tram) +"lqN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "lqQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34258,11 +34672,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"lrh" = ( -/obj/effect/spawner/random/trash, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/aft) "lrE" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -34292,15 +34701,6 @@ /obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"lsh" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/small, -/area/station/service/barber) "lst" = ( /obj/machinery/door/airlock/external{ name = "Atmospherics External Access" @@ -34329,6 +34729,16 @@ /obj/structure/flora/grass/jungle/b/style_5, /turf/open/floor/grass, /area/station/service/chapel) +"lsU" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/science/xenobiology) "lsY" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/closet/secure_closet/security/sec, @@ -34366,12 +34776,14 @@ }, /turf/open/floor/iron/white/small, /area/station/service/hydroponics) -"ltE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"ltB" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 }, -/turf/open/floor/iron, -/area/station/science/robotics/lab) +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "ltP" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/turf_decal/siding/wood{ @@ -34412,6 +34824,19 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/wood, /area/station/maintenance/hallway/abandoned_recreation) +"lui" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/obj/machinery/button/curtain{ + id = "abandoned_brewery"; + name = "curtain control"; + pixel_y = -24 + }, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "lun" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/command/general, @@ -34442,6 +34867,17 @@ }, /turf/open/floor/wood/parquet, /area/station/service/greenroom) +"luC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/blood/gibs/down, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "luG" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral/opposingcorners, @@ -34454,18 +34890,18 @@ }, /turf/open/floor/wood/tile, /area/station/service/bar) +"luS" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "lvc" = ( /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) -"lve" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/science/xenobiology) "lvk" = ( /obj/structure/railing{ dir = 4 @@ -34473,19 +34909,21 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"lvv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"lvw" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/status_display/evac/directional/north, /obj/structure/cable, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/area/station/hallway/secondary/dock) "lvy" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 @@ -34543,16 +34981,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/small, /area/station/security/execution/education) -"lwk" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "lwn" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/hatch, @@ -34569,6 +34997,20 @@ dir = 1 }, /area/station/security/execution/transfer) +"lwu" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"lwA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/chair/plastic{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "lwI" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/computer/security/mining{ @@ -34597,10 +35039,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"lxa" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "lxh" = ( /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/engine, @@ -34625,11 +35063,16 @@ dir = 1 }, /area/station/commons/fitness/locker_room) -"lxC" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +"lxq" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/station/engineering/storage/tech) "lxE" = ( /obj/effect/spawner/random/structure/closet_empty/crate, /turf/open/floor/plating, @@ -34648,12 +35091,6 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"lxY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "lxZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/red{ @@ -34706,6 +35143,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"lyX" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/airlock/command/glass{ + name = "Telecommunications Server Room" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) "lyY" = ( /obj/structure/bed, /obj/item/bedsheet/red, @@ -34714,11 +35161,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/safe) -"lzf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "lzg" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/machinery/airalarm/directional/north, @@ -34768,24 +35210,14 @@ "lzM" = ( /turf/closed/wall, /area/station/security/tram) -"lzT" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "E.V.A. Storage" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/eva, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "Bridge Blast Door" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"lAa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 }, -/area/station/command/bridge) +/turf/open/floor/iron/small, +/area/station/commons/fitness/locker_room) "lAM" = ( /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, @@ -34808,6 +35240,20 @@ /obj/structure/alien/weeds, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"lAQ" = ( +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Research Director's Office" + }, +/obj/machinery/door/poddoor/preopen{ + id = "rdoffice"; + name = "Research Director's Shutters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/research) "lAS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/status_display/ai/directional/north, @@ -34866,6 +35312,9 @@ }, /turf/open/floor/iron/small, /area/station/medical/medbay/lobby) +"lBw" = ( +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "lBy" = ( /obj/structure/railing, /obj/structure/lattice, @@ -34898,6 +35347,15 @@ /obj/effect/mapping_helpers/airlock/access/all/security/detective, /turf/open/floor/iron/textured_half, /area/station/security/detectives_office) +"lBS" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/purple{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) "lCb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/effect/turf_decal/stripes/line, @@ -34937,6 +35395,23 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/engineering/lobby) +"lCH" = ( +/obj/machinery/door/airlock/research{ + name = "Development Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/unres, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/science/lobby) "lCK" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -34948,31 +35423,32 @@ /obj/structure/falsewall, /turf/open/floor/plating, /area/station/maintenance/aft) -"lCS" = ( -/obj/structure/closet/crate/grave/fresh, -/turf/open/misc/dirt/station, -/area/station/medical/morgue) "lCT" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 4 }, /turf/open/floor/engine/co2, /area/station/engineering/atmos) -"lDc" = ( -/obj/machinery/door/airlock/command{ - name = "Telecomms Server Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "comms-entrance-south" +"lCW" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "rdoffice"; + name = "Research Director's Shutters" }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/science/research) +"lCY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "lDo" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/indigo, @@ -34990,9 +35466,41 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"lDr" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer2{ + dir = 9 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"lDt" = ( +/obj/machinery/camera/directional/north, +/obj/machinery/status_display/ai/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/research) "lDw" = ( /turf/open/floor/iron, /area/station/science/ordnance/testlab) +"lDx" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) +"lDz" = ( +/obj/effect/landmark/start/coroner, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) +"lDF" = ( +/obj/structure/sign/warning/cold_temp/directional/west, +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer2, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "lDI" = ( /obj/structure/rack, /obj/item/storage/belt/utility/full, @@ -35007,13 +35515,25 @@ /obj/item/toy/crayon/spraycan/roboticist, /turf/open/floor/iron, /area/station/science/robotics/lab) -"lDJ" = ( -/obj/structure/flora/bush/jungle, -/obj/structure/marker_beacon/yellow, -/turf/open/floor/grass, -/area/station/medical/morgue) -"lEa" = ( -/turf/open/floor/iron/half, +"lEg" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/broken_flooring/pile/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"lEi" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) +"lEr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, /area/station/hallway/primary/central/fore) "lEs" = ( /obj/structure/extinguisher_cabinet/directional/east, @@ -35026,6 +35546,13 @@ /obj/machinery/fishing_portal_generator, /turf/open/floor/iron/small, /area/station/hallway/secondary/service) +"lEt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/blue/corner{ + dir = 1 + }, +/turf/open/floor/iron/white/small, +/area/station/medical/storage) "lEJ" = ( /obj/machinery/door/poddoor{ id = "QMLoaddoor"; @@ -35050,6 +35577,15 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/stone, /area/station/command/heads_quarters/captain/private) +"lEL" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "lEN" = ( /obj/structure/chair/sofa/right{ dir = 8 @@ -35065,6 +35601,12 @@ "lER" = ( /turf/open/floor/iron/dark, /area/station/maintenance/department/engine/atmos) +"lEZ" = ( +/obj/effect/turf_decal/siding/thinplating_new/terracotta, +/obj/machinery/vending/coffee, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/meeting_room) "lFb" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -35113,10 +35655,6 @@ }, /turf/open/misc/sandy_dirt, /area/station/hallway/primary/central/fore) -"lGp" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "lGr" = ( /obj/effect/turf_decal/siding/brown{ dir = 6 @@ -35124,6 +35662,16 @@ /obj/structure/table/reinforced/plastitaniumglass, /turf/open/floor/iron/smooth, /area/station/maintenance/port/aft) +"lGz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "lGE" = ( /obj/machinery/computer/gateway_control{ dir = 1 @@ -35136,27 +35684,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/large, /area/station/command/heads_quarters/captain/private) -"lGL" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/light/cold/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"lGP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/lower) -"lHb" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/computer/robotics, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"lHc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) +"lGS" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/corner, +/area/station/science/xenobiology) "lHd" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 @@ -35203,6 +35746,15 @@ "lHz" = ( /turf/open/floor/iron/smooth, /area/station/maintenance/solars/port/aft) +"lHA" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/medical/chemistry) "lHJ" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -35242,12 +35794,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/wood/large, /area/station/command/heads_quarters/captain/private) -"lHZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) "lIa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -35265,6 +35811,16 @@ dir = 1 }, /area/station/command/heads_quarters/captain/private) +"lIc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "lIe" = ( /obj/machinery/door/airlock/medical{ name = "Front Desk" @@ -35272,21 +35828,19 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/iron/white/small, /area/station/medical/medbay/lobby) -"lIh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 +"lIm" = ( +/obj/structure/curtain/cloth/fancy/mechanical/start_closed{ + desc = "A set of curtains serving as a fancy theater backdrop. They can only be opened by a button."; + id = "abandoned_brewery"; + name = "Abandoned Brewery" }, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/central) -"lIk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/kirbyplants/organic/applebush, -/turf/open/floor/iron/smooth, -/area/station/hallway/secondary/command) +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/maintenance/department/science/xenobiology) "lIt" = ( /obj/effect/turf_decal/siding/thinplating_new/terracotta{ dir = 6 @@ -35294,32 +35848,11 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/engine/atmos) -"lIL" = ( -/obj/machinery/door/window/left/directional/east{ - name = "Maximum Security Test Chamber"; - req_access = list("xenobiology") - }, -/obj/machinery/atmospherics/pipe/smart/simple/general/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/science/xenobiology) "lJe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/freezer, /area/station/command/heads_quarters/captain/private) -"lJg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "lJq" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /turf/open/floor/engine/air, @@ -35335,6 +35868,29 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload_foyer) +"lJL" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"lJU" = ( +/obj/structure/sign/warning/no_smoking/circle/directional/north, +/obj/machinery/portable_atmospherics/canister, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/iron/white/corner{ + dir = 8 + }, +/area/station/science/xenobiology) "lKf" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -35357,16 +35913,16 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) -"lKs" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Recreation" +"lKy" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=7.0-Arrivals-Pharmacy"; + location = "6.3-Arrivals" }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/textured_half, -/area/station/commons/fitness/recreation/entertainment) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "lKA" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -35388,13 +35944,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"lKD" = ( +/obj/machinery/newscaster/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/cubicle) "lKG" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"lKV" = ( -/turf/open/floor/iron/smooth, -/area/station/commons/storage/tools) "lLb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/airlock/security/glass{ @@ -35403,6 +35963,13 @@ /obj/effect/mapping_helpers/airlock/access/any/security/general, /turf/open/floor/iron, /area/station/security/checkpoint/escape) +"lLd" = ( +/obj/machinery/cryo_cell, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/medical/cryo) "lLe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -35423,6 +35990,17 @@ /obj/machinery/door/firedoor, /turf/open/floor/plating, /area/station/cargo/drone_bay) +"lLl" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"lLm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) "lLr" = ( /obj/machinery/porta_turret/ai{ dir = 4 @@ -35456,6 +36034,20 @@ "lLX" = ( /turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/theatre) +"lMg" = ( +/obj/structure/statue/sandstone/venus{ + dir = 8; + pixel_y = -15 + }, +/obj/structure/flora/bush/flowers_pp, +/obj/structure/flora/bush/flowers_br/style_3, +/obj/effect/dummy/lighting_obj, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/grass/airless, +/area/station/hallway/primary/central/aft) "lMl" = ( /obj/structure/railing{ dir = 4 @@ -35522,6 +36114,11 @@ dir = 4 }, /area/station/hallway/primary/central/fore) +"lNq" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/construction) "lNx" = ( /obj/structure/table/glass, /obj/effect/turf_decal/siding/dark_red, @@ -35568,6 +36165,11 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/engine, /area/station/engineering/gravity_generator) +"lNR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "lNU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -35582,16 +36184,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"lOi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Xenobiology Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/turf/open/floor/plating, -/area/station/science/xenobiology) "lOj" = ( /turf/closed/wall, /area/station/cargo/miningoffice) @@ -35608,17 +36200,6 @@ /obj/item/folder, /turf/open/misc/asteroid, /area/station/maintenance/department/electrical) -"lOO" = ( -/obj/effect/turf_decal/siding{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) -"lOS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall/r_wall, -/area/station/command/corporate_dock) "lOY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -35668,25 +36249,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/security/prison/rec) -"lPI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/announcement_system, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ - dir = 8 - }, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) -"lPJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark/small, -/area/station/tcommsat/server) "lPO" = ( /obj/structure/table, /obj/effect/spawner/surgery_tray/full{ @@ -35697,6 +36259,29 @@ }, /turf/open/floor/iron/dark/small, /area/station/security/execution/education) +"lPP" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/table/glass, +/obj/machinery/recharger{ + pixel_x = 8; + pixel_y = 3 + }, +/obj/machinery/button/door{ + id = "aibridge"; + name = "AI Maintenance Space Bridge Control"; + req_access = list("command"); + pixel_x = -3; + pixel_y = 7 + }, +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Access Blast Door Control"; + req_access = list("command"); + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/glass/reinforced, +/area/station/command/bridge) "lQh" = ( /turf/open/floor/iron/small, /area/station/maintenance/port/aft) @@ -35721,6 +36306,26 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/plating, /area/station/maintenance/department/prison) +"lQF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/light/cold/directional/west, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) +"lQQ" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/records/medical/laptop{ + dir = 8; + pixel_y = 1 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/trimline/dark_blue/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "lQR" = ( /obj/effect/turf_decal/caution{ dir = 4 @@ -35733,18 +36338,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"lQZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "lRa" = ( /obj/structure/broken_flooring/singular/directional/east, /turf/open/floor/plating, @@ -35754,22 +36347,33 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/smooth_large, /area/station/science/auxlab/firing_range) -"lRm" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ +"lRj" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"lRw" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/science/xenobiology) +/turf/open/floor/circuit, +/area/station/tcommsat/server) "lRy" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /turf/open/floor/iron, /area/station/engineering/atmos) +"lRF" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ + dir = 10 + }, +/turf/open/floor/iron/dark, +/area/station/tcommsat/server) "lRK" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -35809,14 +36413,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/stone, /area/station/command/heads_quarters/hos) -"lSa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/lower) "lSb" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -35826,14 +36422,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"lSc" = ( -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/tcommsat/server) -"lSf" = ( -/obj/structure/reagent_dispensers/beerkeg, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "lSh" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -35852,14 +36440,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/cafeteria, /area/station/science/breakroom) -"lSw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/edge{ - dir = 1 - }, -/area/station/engineering/storage/tech) "lSy" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/open/floor/engine/co2, @@ -35892,12 +36472,6 @@ }, /turf/open/floor/iron, /area/station/security/brig/entrance) -"lTg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/science/breakroom) "lTt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -35924,6 +36498,14 @@ /obj/structure/chair/stool/directional/west, /turf/open/floor/iron/small, /area/station/maintenance/port/lesser) +"lTE" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 6 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "lTU" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10 @@ -35946,10 +36528,6 @@ "lUo" = ( /turf/open/floor/iron, /area/station/science/lobby) -"lUt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) "lUE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -35990,19 +36568,9 @@ /area/station/cargo/sorting) "lVg" = ( /obj/structure/transit_tube/horizontal, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"lVo" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "lVy" = ( /obj/effect/turf_decal/tile/green/anticorner/contrasted{ dir = 8 @@ -36021,6 +36589,21 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"lVB" = ( +/obj/machinery/door/airlock/command{ + name = "Telecomms Server Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "comms-entrance-south" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) "lVN" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/spawner/random/maintenance, @@ -36035,10 +36618,11 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) -"lWk" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/large, -/area/station/hallway/primary/central/fore) +"lWa" = ( +/obj/effect/spawner/random/trash, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "lWp" = ( /obj/structure/table, /obj/machinery/light/small/directional/west, @@ -36075,6 +36659,14 @@ /obj/item/storage/toolbox/emergency/old, /turf/open/floor/iron/dark, /area/station/commons/storage/tools) +"lWL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white/small, +/area/station/commons/toilet/restrooms) "lWV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36092,6 +36684,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/security/checkpoint/supply) +"lXc" = ( +/obj/structure/closet/crate/grave/fresh, +/turf/open/misc/dirt/station, +/area/station/medical/morgue) "lXg" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -36099,24 +36695,33 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/science/xenobiology) -"lXs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"lXm" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) +"lXB" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, +/obj/machinery/light/no_nightlight/directional/north, /turf/open/floor/iron, -/area/station/hallway/secondary/dock) -"lXw" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/warning/radiation/rad_area/directional/east, -/turf/open/floor/iron, -/area/station/maintenance/hallway/abandoned_command) +/area/station/engineering/atmos/project) "lXC" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -36135,6 +36740,30 @@ }, /turf/open/floor/wood/tile, /area/station/science/lower) +"lXH" = ( +/obj/structure/table/wood, +/obj/item/pen/fountain{ + pixel_x = -4 + }, +/obj/item/coin/gold{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) +"lXI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/airalarm/mixingchamber_access, +/obj/effect/mapping_helpers/airalarm/link{ + chamber_id = "ordnanceburn" + }, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "lXM" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -36144,21 +36773,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/carpet/lone, /area/station/service/chapel/office) -"lXR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"lXT" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/medical/cryo) "lXU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -36170,11 +36784,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"lXV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/robotics/augments) "lXX" = ( /obj/machinery/light/warm/directional/north, /turf/open/floor/iron, @@ -36190,16 +36799,6 @@ }, /turf/open/floor/plating, /area/station/cargo/sorting) -"lYf" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "lYj" = ( /turf/closed/wall/r_wall, /area/station/hallway/primary/fore) @@ -36214,6 +36813,15 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"lYz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "lYF" = ( /obj/effect/turf_decal/siding/yellow{ dir = 9 @@ -36238,27 +36846,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"lYV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 4 - }, -/turf/open/floor/iron/small, -/area/station/commons/fitness/locker_room) -"lZa" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/computer/telecomms/monitor{ - dir = 8; - network = "tcommsat" - }, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ - dir = 8 - }, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) "lZf" = ( /obj/machinery/vending/hydroseeds{ slogan_delay = 700 @@ -36344,15 +36931,12 @@ /turf/open/floor/iron/dark, /area/station/science/robotics/lab) "lZD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/electropack, +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "lZH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -36386,11 +36970,17 @@ /obj/structure/cable, /turf/closed/wall, /area/station/maintenance/central/greater) -"mag" = ( -/obj/structure/cable, -/obj/effect/spawner/random/trash, -/turf/open/floor/iron, -/area/station/maintenance/port/aft) +"maj" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 10 + }, +/area/station/science/research) "mak" = ( /obj/machinery/computer/communications{ dir = 1 @@ -36398,16 +36988,17 @@ /obj/machinery/keycard_auth/wall_mounted/directional/south, /turf/open/floor/wood/large, /area/station/command/heads_quarters/captain) -"maE" = ( -/obj/item/clothing/head/cone{ - pixel_x = 6; - pixel_y = 17 +"mau" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/structure/broken_flooring/singular/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) +/turf/open/floor/iron/white/small, +/area/station/science/cubicle) +"may" = ( +/obj/structure/closet/emcloset, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "maK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /obj/effect/turf_decal/arrows{ @@ -36425,12 +37016,6 @@ }, /turf/open/floor/sepia, /area/station/maintenance/aft) -"mbk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white/small, -/area/station/science/cubicle) "mbp" = ( /obj/structure/hedge, /obj/machinery/light_switch/directional/east, @@ -36466,6 +37051,14 @@ /obj/machinery/cell_charger, /turf/open/floor/iron/grimy, /area/station/science/cubicle) +"mch" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "mcj" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/structure/table/reinforced/titaniumglass, @@ -36483,14 +37076,14 @@ /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) "mcn" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/machinery/status_display/ai/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/lower) "mco" = ( /obj/machinery/holopad, /turf/open/floor/iron/checker, @@ -36525,14 +37118,6 @@ /obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) -"mcS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "mcV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -36541,6 +37126,12 @@ /obj/structure/cable, /turf/open/floor/wood/parquet, /area/station/service/library) +"mcX" = ( +/obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "mdm" = ( /obj/structure/chair/office/light{ dir = 8 @@ -36559,21 +37150,11 @@ "mdt" = ( /turf/closed/wall/r_wall, /area/station/science/robotics/mechbay) -"mdG" = ( -/obj/structure/disposalpipe/segment, +"mdJ" = ( +/obj/machinery/firealarm/directional/north, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"mdV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/door/poddoor/shutters{ - dir = 1; - id = "aibridge" - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) +/turf/open/floor/iron/dark/smooth_large, +/area/station/ai_monitored/turret_protected/ai_upload) "meh" = ( /obj/structure/railing{ dir = 4 @@ -36596,16 +37177,11 @@ "meu" = ( /turf/closed/wall, /area/station/command/heads_quarters/captain) -"meG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/small/directional/north, -/obj/structure/cable, +"meJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/lower) +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "meN" = ( /obj/structure/chair/sofa/bench{ dir = 8 @@ -36615,15 +37191,16 @@ dir = 4 }, /area/station/hallway/secondary/entry) -"mfl" = ( -/obj/machinery/firealarm/directional/west, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/side{ - dir = 8 +"mfi" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/area/station/science/research) +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "mfn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36638,12 +37215,30 @@ /obj/effect/mapping_helpers/mail_sorting/science/ordnance, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"mft" = ( +/obj/structure/table/wood, +/obj/machinery/light/small/directional/south, +/obj/machinery/computer/security/telescreen/engine/directional/west, +/obj/machinery/status_display/evac/directional/south, +/obj/item/radio/off{ + pixel_x = 1; + pixel_y = 3 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/ce) "mfB" = ( /obj/structure/table/wood, /obj/item/book/bible, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/smooth_edge, /area/station/maintenance/starboard/greater) +"mfI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood, +/obj/structure/alien/resin/membrane, +/obj/structure/alien/weeds, +/turf/open/floor/wood, +/area/station/maintenance/starboard/greater) "mfP" = ( /obj/structure/hedge, /obj/machinery/light_switch/directional/west, @@ -36658,13 +37253,15 @@ /obj/structure/sign/departments/medbay/alt/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"mfT" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/obj/machinery/recharger, -/obj/item/radio/intercom/directional/north, +"mgA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/effect/landmark/start/mime, /turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs) +/area/station/service/greenroom) "mgF" = ( /obj/machinery/door/airlock/atmos/glass{ name = "Project Room" @@ -36676,12 +37273,39 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/engineering/atmos) +"mgK" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "aibridge" + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) +"mgQ" = ( +/obj/machinery/airlock_sensor/incinerator_ordmix{ + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) "mgR" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 9 }, /turf/open/floor/iron, /area/station/engineering/atmos) +"mgU" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) "mgW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36712,21 +37336,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"mhW" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ - dir = 8 - }, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) -"mhZ" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/lawoffice) "mib" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/effect/turf_decal/stripes/line{ @@ -36753,12 +37362,16 @@ /obj/structure/reagent_dispensers/wall/virusfood/directional/south, /turf/open/floor/iron/white, /area/station/medical/virology) -"mij" = ( -/obj/structure/fermenting_barrel, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) +"miv" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/science/xenobiology) "miz" = ( /obj/structure/table/glass, /obj/item/wrench, @@ -36875,6 +37488,16 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"mkd" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/research) "mkh" = ( /obj/structure/chair{ dir = 8 @@ -36908,14 +37531,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/fore/greater) -"mkZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/light/floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) "mle" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -36925,11 +37540,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/white/textured_large, /area/station/command/heads_quarters/cmo) -"mlm" = ( -/obj/structure/alien/weeds, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "mln" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /obj/machinery/light/small/directional/west, @@ -36952,18 +37562,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/smooth, /area/station/engineering/break_room) -"mlD" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "mlK" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -36984,20 +37582,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) -"mmv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage/tech) -"mmy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "mmE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37016,14 +37600,14 @@ /obj/structure/cable, /turf/open/floor/wood/parquet, /area/station/service/library) -"mmR" = ( -/obj/structure/table/reinforced, -/obj/effect/spawner/surgery_tray/full/morgue, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 6 +"mmP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +/obj/structure/broken_flooring/pile/directional/east, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "mmT" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -37066,17 +37650,24 @@ dir = 8 }, /area/station/security/office) +"mnf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "mni" = ( /obj/effect/turf_decal/tile/red{ dir = 8 }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"mnj" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/corporate_dock) "mnl" = ( /obj/structure/table, /obj/item/circuitboard/machine/coffeemaker/impressa, @@ -37085,6 +37676,13 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/central/lesser) +"mny" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/floor/iron/dark/small, +/area/station/tcommsat/server) "mnC" = ( /obj/structure/table, /obj/item/phone{ @@ -37103,13 +37701,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"mnN" = ( -/obj/structure/bookcase/random, -/obj/effect/turf_decal/siding/thinplating_new/terracotta{ - dir = 10 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) "mnU" = ( /obj/structure/hedge, /obj/structure/disposalpipe/segment{ @@ -37191,6 +37782,18 @@ }, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"moI" = ( +/obj/structure/table/glass, +/obj/effect/decal/cleanable/dirt, +/obj/item/folder/blue, +/obj/item/stamp/law, +/obj/effect/landmark/event_spawn, +/obj/item/clothing/glasses/sunglasses{ + pixel_y = 15 + }, +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/service/lawoffice) "moN" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/components/binary/volume_pump, @@ -37199,6 +37802,12 @@ }, /turf/open/floor/iron/small, /area/station/engineering/atmos/office) +"mpd" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/item/book/manual/wiki/security_space_law, +/turf/open/floor/iron, +/area/station/security/courtroom) "mpk" = ( /obj/machinery/airalarm/directional/south, /turf/open/floor/circuit/green, @@ -37210,27 +37819,21 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/carpet/lone, /area/station/service/abandoned_gambling_den) +"mpw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "mpy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, /turf/open/floor/wood/parquet, /area/station/medical/psychology) -"mpE" = ( -/obj/structure/cable, -/turf/open/floor/iron/white/small, -/area/station/science/cubicle) -"mpJ" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/iron/dark/textured_half, -/area/station/command/bridge) -"mpK" = ( -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs) "mpL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/table, @@ -37262,18 +37865,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/small, /area/station/security/brig) -"mpU" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/storage/box/matches{ - pixel_x = -1; - pixel_y = -4 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) "mql" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 @@ -37282,6 +37873,14 @@ /obj/item/kirbyplants/random/fullysynthetic, /turf/open/floor/iron, /area/station/commons/dorms) +"mqm" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/arcade_boards, +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "mqn" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -37296,14 +37895,6 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/aft) -"mqO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/west, -/obj/structure/table, -/obj/item/wrench, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/construction) "mrc" = ( /obj/effect/landmark/atmospheric_sanity/ignore_area, /obj/effect/decal/cleanable/dirt, @@ -37317,15 +37908,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"mrs" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/airlock/command/glass{ - name = "Telecommunications Server Room" - }, +"mrj" = ( /obj/structure/cable, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "mrt" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/north, @@ -37368,15 +37955,20 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"msA" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/science/xenobiology) "msJ" = ( /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"mta" = ( -/obj/structure/dresser, -/obj/structure/sign/poster/contraband/random/directional/east, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) "mtc" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, @@ -37386,6 +37978,14 @@ }, /turf/open/floor/wood/tile, /area/station/maintenance/central/lesser) +"mts" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/chair/plastic{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "mtP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37394,28 +37994,6 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron, /area/station/security/prison) -"mud" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) -"mus" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "mut" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -37438,10 +38016,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"muB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall/r_wall, -/area/station/science/ordnance) "muI" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -37454,6 +38028,16 @@ }, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"muK" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/light/cold/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/lower) "muM" = ( /obj/machinery/door/firedoor, /obj/structure/cable, @@ -37463,16 +38047,6 @@ "muS" = ( /turf/open/floor/iron/dark, /area/station/security/prison/workout) -"mvd" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) "mvh" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/holopad, @@ -37490,14 +38064,25 @@ }, /turf/open/floor/iron, /area/station/security/brig/entrance) -"mvC" = ( -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) +"mvM" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/door/window/right/directional/east{ + name = "Corpse Arrivals" + }, +/turf/open/floor/plating, +/area/station/medical/morgue) "mvP" = ( /obj/machinery/smartfridge/organ, /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"mvQ" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/siding/dark, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/command/bridge) "mvT" = ( /obj/structure/hedge, /obj/effect/turf_decal/tile/blue{ @@ -37522,13 +38107,6 @@ /obj/structure/table, /turf/open/floor/iron, /area/station/security/prison/workout) -"mwu" = ( -/obj/machinery/light/cold/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "mwx" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, @@ -37545,14 +38123,13 @@ /obj/effect/turf_decal/trimline/neutral/end, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"mwJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/light/small/directional/east, -/turf/open/floor/engine/bz, +"mwA" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, /area/station/science/xenobiology) "mwN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37599,19 +38176,17 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"mxA" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "mxM" = ( /obj/structure/barricade/wooden/crude, /turf/open/floor/noslip, /area/station/maintenance/port/aft) -"mxP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "mxS" = ( /obj/item/kirbyplants/random, /obj/machinery/camera/autoname/directional/west, @@ -37647,13 +38222,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/dorms) -"myp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/research) "myt" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/item/kirbyplants/random/fullysynthetic, @@ -37695,6 +38263,20 @@ /obj/item/clothing/mask/breath, /turf/open/floor/plating, /area/station/command/teleporter) +"myW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "mze" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37710,14 +38292,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/white/small, /area/station/science/server) -"mzl" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/genetics) "mzo" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/table, @@ -37747,24 +38321,42 @@ "mzM" = ( /turf/open/floor/iron/stairs, /area/station/hallway/primary/central/fore) +"mzT" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Robotics Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/robotics/mechbay) "mAi" = ( /obj/structure/closet/crate/trashcart/filled, /obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/iron, /area/station/maintenance/fore/greater) -"mAs" = ( +"mAk" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/trimline/neutral/line{ +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ dir = 1 }, -/obj/effect/turf_decal/trimline/neutral/line, +/area/station/hallway/secondary/dock) +"mAn" = ( /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/obj/machinery/power/apc/auto_name/directional/south, +/turf/open/floor/iron/white/small, +/area/station/commons/toilet/restrooms) "mAv" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/south, @@ -37772,15 +38364,16 @@ /obj/machinery/light/small/directional/east, /turf/open/misc/sandy_dirt, /area/station/hallway/primary/central/fore) +"mAC" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner, +/area/station/science/lobby) "mAL" = ( /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron, /area/station/security/checkpoint/escape) -"mAP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "mAR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -37792,6 +38385,19 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"mBl" = ( +/obj/machinery/door/airlock/command{ + name = "Telecomms Server Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "comms-entrance-south" + }, +/obj/structure/cable, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) "mBo" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -37799,6 +38405,13 @@ /obj/item/instrument/eguitar, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"mBY" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/science/auxlab/firing_range) "mCf" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external/glass{ @@ -37807,6 +38420,32 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/station/hallway/secondary/dock) +"mCk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) +"mCl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"mCq" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/storage/tech) "mCt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37873,17 +38512,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"mDs" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, +"mDt" = ( +/obj/machinery/firealarm/directional/east, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/entry) +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "mDA" = ( /obj/structure/table/wood, /obj/machinery/computer/libraryconsole{ @@ -37917,32 +38550,25 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/half, /area/station/hallway/primary/central/fore) +"mDO" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/science/server) "mDS" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/engine, /area/station/engineering/atmospherics_engine) -"mDW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/north, +"mEg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/lower) -"mEn" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Zoo" - }, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half, -/area/station/hallway/secondary/entry) +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/blue/warning, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "mEq" = ( /obj/structure/closet/crate/wooden{ name = "Alms Box" @@ -37971,6 +38597,10 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"mEF" = ( +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) "mEL" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -37991,6 +38621,16 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) +"mFc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden, +/turf/open/floor/wood/tile, +/area/station/tcommsat/server) "mFd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -38014,17 +38654,6 @@ }, /turf/open/floor/iron, /area/station/security/execution/transfer) -"mFt" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock{ - name = "Cytology Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/research, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "mFx" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -38040,6 +38669,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"mFC" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 4 + }, +/area/station/science/xenobiology) "mFG" = ( /obj/machinery/telecomms/processor/preset_four, /obj/effect/decal/cleanable/dirt, @@ -38064,15 +38702,6 @@ }, /turf/open/floor/iron, /area/station/cargo/office) -"mFT" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/science/xenobiology) "mGg" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -38158,6 +38787,16 @@ /obj/structure/sink/directional/west, /turf/open/floor/iron/white/small, /area/station/medical/storage) +"mGU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/broken_flooring/singular/directional/east, +/obj/structure/steam_vent, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "mGY" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/smooth, @@ -38200,36 +38839,17 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/project) +"mHY" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "mIg" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/catwalk_floor/iron_dark, /area/station/science/xenobiology) -"mIh" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) -"mIi" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/landmark/start/lawyer, -/turf/open/floor/iron/dark/herringbone, -/area/station/security/courtroom) -"mIm" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/science/lower) "mIp" = ( /obj/effect/turf_decal/trimline/neutral/line{ dir = 8 @@ -38281,11 +38901,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood/tile, /area/station/maintenance/central/lesser) -"mIR" = ( -/obj/structure/chair/stool/directional/east, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/herringbone, -/area/station/commons/dorms) "mIT" = ( /obj/effect/turf_decal/siding/red{ dir = 10 @@ -38296,15 +38911,12 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/white/small, /area/station/security/warden) -"mIW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +"mIV" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/light/small/directional/south, +/obj/item/kirbyplants/fern, +/turf/open/floor/iron/white, +/area/station/science/cytology) "mJe" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -38331,31 +38943,27 @@ /obj/structure/chair/stool/directional/east, /turf/open/floor/stone, /area/station/maintenance/aft) -"mJy" = ( -/obj/effect/turf_decal/tile/neutral{ +"mJt" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/structure/sign/departments/telecomms/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) +"mJx" = ( +/obj/structure/chair/wood{ dir = 4 }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/science/xenobiology) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "mJB" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/brig/entrance) -"mJC" = ( -/obj/structure/bodycontainer/morgue/beeper_off{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "mJK" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/dark, @@ -38365,6 +38973,13 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"mJQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "mJS" = ( /obj/machinery/hydroponics/soil{ pixel_y = 8 @@ -38384,20 +38999,6 @@ /obj/machinery/light/cold/directional/south, /turf/open/floor/iron, /area/station/security/prison/workout) -"mKe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/structure/sign/departments/medbay/alt/directional/west, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/primary/aft) "mKh" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/plating, @@ -38421,13 +39022,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"mKR" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "mKY" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -38456,42 +39050,26 @@ }, /turf/open/floor/iron, /area/station/security/processing) +"mLx" = ( +/obj/structure/cable, +/obj/effect/spawner/random/trash, +/turf/open/floor/iron, +/area/station/maintenance/port/aft) "mLz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) -"mLA" = ( +"mLE" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/alien/weeds, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) -"mLH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/effect/turf_decal/box/red/corners{ + dir = 1 }, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) -"mLM" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/stripes/white/line{ dir = 9 }, -/obj/structure/filingcabinet, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ - dir = 8 - }, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) -"mLO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/cytology) +/turf/open/floor/engine, +/area/station/science/xenobiology) "mLZ" = ( /obj/effect/turf_decal/siding/wideplating{ dir = 4 @@ -38511,13 +39089,6 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/iron/dark/small, /area/station/medical/paramedic) -"mMr" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) "mMt" = ( /obj/structure/cable, /obj/structure/chair{ @@ -38541,6 +39112,15 @@ }, /turf/open/floor/iron, /area/station/science/robotics/lab) +"mMP" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/structure/cable, +/turf/open/floor/iron/cafeteria, +/area/station/maintenance/starboard/fore) "mMY" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -38551,6 +39131,9 @@ }, /turf/open/floor/iron, /area/station/security) +"mNm" = ( +/turf/open/misc/dirt/station, +/area/station/medical/morgue) "mNu" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/stripes/line, @@ -38564,17 +39147,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) -"mNv" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/aft) "mNQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -38636,14 +39208,6 @@ /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/engine, /area/station/science/xenobiology) -"mOM" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/chair/stool/directional/north, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/light/colour_cycle/dancefloor_b, -/area/station/maintenance/starboard/central) "mOV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -38653,6 +39217,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"mPg" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/hallway/secondary/command) "mPq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -38664,38 +39237,10 @@ }, /turf/open/floor/iron, /area/station/security) -"mPu" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "mPv" = ( /obj/item/kirbyplants/random/fullysynthetic, /turf/open/floor/iron, /area/station/maintenance/port/aft) -"mPx" = ( -/obj/machinery/door/window/right/directional/south{ - name = "Jetpack Storage" - }, -/obj/item/tank/jetpack/carbondioxide{ - pixel_x = -4; - pixel_y = 1 - }, -/obj/item/tank/jetpack/carbondioxide, -/obj/item/tank/jetpack/carbondioxide{ - pixel_x = 4; - pixel_y = -1 - }, -/obj/structure/rack, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark, -/turf/open/floor/iron/dark/smooth_edge, -/area/station/ai_monitored/command/storage/eva) "mPB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, /turf/open/floor/plating, @@ -38705,6 +39250,44 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/smooth, /area/station/command/bridge) +"mPU" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/machinery/chem_master, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"mQg" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Secure Tech Storage" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/smooth_half{ + dir = 1 + }, +/area/station/engineering/storage/tech) +"mQt" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/mecha{ + dir = 1 + }, +/obj/effect/turf_decal/siding/purple{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) "mQz" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/chair/office{ @@ -38712,11 +39295,6 @@ }, /turf/open/floor/iron/smooth, /area/station/command/bridge) -"mQD" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/white/small, -/area/station/commons/toilet/restrooms) "mQF" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -38733,6 +39311,17 @@ dir = 8 }, /area/station/command/heads_quarters/hos) +"mQI" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) "mRl" = ( /turf/open/floor/engine/co2, /area/station/engineering/atmos) @@ -38741,15 +39330,12 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/iron/dark, /area/station/cargo/storage) -"mRK" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) +"mRE" = ( +/obj/structure/dresser, +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/command/heads_quarters/qm) "mRQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -38759,6 +39345,26 @@ "mSa" = ( /turf/open/floor/iron, /area/station/commons/fitness/locker_room) +"mSb" = ( +/obj/machinery/door/airlock/centcom{ + name = "Frozeno!" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den/gaming) +"mSh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/item/kirbyplants/random{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ + dir = 8 + }, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) "mSl" = ( /obj/effect/turf_decal/siding/wideplating, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -38766,6 +39372,16 @@ }, /turf/open/floor/wood, /area/station/engineering/atmos/storage) +"mSr" = ( +/obj/machinery/door/airlock/command{ + name = "Research Division Server Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/server) "mSA" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -38788,16 +39404,6 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/grass, /area/station/service/chapel) -"mTc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "mTd" = ( /obj/structure/closet/crate{ name = "Starups Clothing Crate" @@ -38837,6 +39443,10 @@ "mTB" = ( /turf/closed/wall, /area/station/command/gateway) +"mTM" = ( +/obj/structure/cable, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "mTN" = ( /obj/structure/chair/stool/directional/south, /obj/structure/mirror/directional/north, @@ -38899,35 +39509,19 @@ }, /turf/open/floor/wood/parquet, /area/station/service/library) -"mUn" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/decal/cleanable/dirt, -/obj/structure/alien/weeds, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "mUO" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/server) -"mUQ" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"mUX" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/stairs/left{ - dir = 1 +"mUT" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "rdoffice"; + name = "Research Director's Shutters" }, -/area/station/maintenance/hallway/abandoned_command) +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/command/heads_quarters/rd) "mUY" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 @@ -38935,19 +39529,6 @@ /obj/structure/railing/corner, /turf/open/floor/iron, /area/station/engineering/atmos) -"mVc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/aft) "mVm" = ( /obj/effect/turf_decal/tile/green/anticorner/contrasted{ dir = 1 @@ -38966,10 +39547,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/small, /area/station/ai_monitored/security/armory) -"mVy" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "mVC" = ( /obj/machinery/door/airlock/external{ name = "Departure Lounge Airlock" @@ -39000,14 +39577,56 @@ dir = 4 }, /area/station/medical/medbay/central) +"mVV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) +"mWb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/primary/central/fore) +"mWc" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/lower) +"mWm" = ( +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/machinery/light/small/directional/west, +/turf/open/floor/grass, +/area/station/science/xenobiology) +"mWt" = ( +/obj/structure/table/reinforced, +/obj/item/trash/cheesie{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "mWB" = ( /turf/open/floor/plating, /area/station/engineering/supermatter/room) "mWE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/floor/iron/dark/small, +/area/station/tcommsat/server) "mWF" = ( /obj/machinery/status_display/evac/directional/north, /obj/structure/disposalpipe/segment{ @@ -39018,6 +39637,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"mWN" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tcomms) "mWT" = ( /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 8 @@ -39038,6 +39665,16 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"mWV" = ( +/obj/effect/mapping_helpers/mail_sorting/science/research, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 10 + }, +/area/station/science/research) "mWY" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/chair/sofa/bench/left{ @@ -39054,10 +39691,14 @@ /turf/open/floor/grass, /area/station/service/chapel) "mXk" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/iron/smooth, -/area/station/hallway/secondary/command) +/obj/effect/decal/cleanable/dirt, +/obj/structure/broken_flooring/singular/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "mXt" = ( /obj/machinery/rnd/production/techfab/department/medical, /obj/effect/turf_decal/stripes/box, @@ -39091,14 +39732,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"mYd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "mYj" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -39113,13 +39746,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/smooth_large, /area/station/science/robotics/mechbay) -"mYp" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/delivery, -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/station/ai_monitored/command/storage/eva) "mYq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -39186,18 +39812,12 @@ dir = 1 }, /area/station/security/execution/education) -"mZd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"mZu" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/north, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "mZA" = ( /obj/effect/mapping_helpers/airlock/abandoned, /obj/machinery/door/airlock/public/glass{ @@ -39206,6 +39826,14 @@ /obj/structure/alien/weeds, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"mZX" = ( +/obj/structure/chair{ + dir = 4; + pixel_y = -2 + }, +/obj/structure/cable, +/turf/open/floor/iron/cafeteria, +/area/station/science/breakroom) "mZZ" = ( /obj/structure/table/glass, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -39214,14 +39842,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"naa" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/tcommsat/server) "nah" = ( /obj/item/kirbyplants/random, /obj/machinery/airalarm/directional/north, @@ -39234,6 +39854,11 @@ "naB" = ( /turf/closed/wall/rust, /area/station/cargo/lobby) +"naE" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "naF" = ( /turf/open/floor/iron/dark/smooth_corner{ dir = 1 @@ -39264,18 +39889,17 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) -"nbv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, +"naU" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/diagonal, -/area/station/ai_monitored/command/storage/eva) +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/machinery/light/floor, +/turf/open/floor/noslip, +/area/station/medical/medbay/central) "nbF" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/small/directional/west, @@ -39294,13 +39918,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"ncb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/wood, -/obj/structure/alien/resin/membrane, -/obj/structure/alien/weeds, -/turf/open/floor/wood, -/area/station/maintenance/starboard/greater) "ncf" = ( /obj/machinery/recycler{ dir = 8 @@ -39329,15 +39946,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/checker, /area/station/security/breakroom) -"ncr" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/lawyer, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/lawoffice) +"ncA" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "ncD" = ( /obj/structure/lattice, /obj/structure/disposalpipe/segment{ @@ -39345,13 +39958,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"ncH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/science/xenobiology) "ncL" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/neutral/line{ @@ -39360,11 +39966,6 @@ /obj/effect/turf_decal/trimline/neutral/line, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"ncQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "nde" = ( /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, @@ -39380,6 +39981,14 @@ }, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) +"ndB" = ( +/obj/machinery/airalarm/directional/south, +/obj/item/kirbyplants/organic/applebush, +/obj/effect/turf_decal/siding/thinplating_new/terracotta/corner{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/command/corporate_showroom) "ndJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line{ @@ -39413,18 +40022,42 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/engine/atmos) -"nei" = ( -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 1 +"nem" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/smooth, +/area/station/maintenance/solars/starboard/aft) +"nes" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "neF" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 }, /turf/open/floor/wood, /area/station/service/chapel) +"neH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/window/right/directional/east{ + name = "Research Delivery"; + req_access = list("science") + }, +/obj/structure/cable, +/turf/open/floor/iron/white/side{ + dir = 6 + }, +/area/station/science/research) "nfg" = ( /obj/machinery/holopad, /obj/effect/turf_decal/siding/thinplating{ @@ -39444,12 +40077,6 @@ }, /turf/open/floor/wood, /area/station/engineering/atmos/office) -"nfv" = ( -/obj/effect/turf_decal/trimline/dark/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/small, -/area/station/maintenance/department/science/xenobiology) "nfG" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -39466,25 +40093,31 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"ngy" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Genetics" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/genetics, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/research) "ngL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/prison) +"nha" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron, +/area/station/cargo/storage) "nhk" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) -"nhl" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "nhu" = ( /obj/structure/table, /obj/effect/spawner/random/engineering/flashlight, @@ -39508,18 +40141,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"nhC" = ( -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Creature Pen"; - req_access = list("research") - }, -/obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Creature Pen"; - req_access = list("research") - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/science/xenobiology) +"nhQ" = ( +/obj/machinery/light/cold/directional/east, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "nhU" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -39541,14 +40166,6 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/white/small, /area/station/service/hydroponics) -"nhZ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "nib" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39566,54 +40183,21 @@ /obj/machinery/vending/wardrobe/chem_wardrobe, /turf/open/floor/iron, /area/station/medical/chemistry) -"niw" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/button/door/directional/east{ - name = "E.V.A Shutters"; - req_access = list("command"); - id = "evashutter" - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/primary/fore) -"niF" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/science/lower) "niR" = ( /obj/structure/chair, /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark/smooth_large, /area/station/security/execution/education) -"niT" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "Bridge Blast Door" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/command/meeting_room) "niW" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 6 }, /turf/open/floor/iron/small, /area/station/service/barber) +"niZ" = ( +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/maintenance/aft) "nje" = ( /obj/structure/railing{ dir = 1 @@ -39629,11 +40213,6 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) -"njh" = ( -/obj/structure/broken_flooring/singular/directional/east, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "njs" = ( /obj/structure/chair/comfy/black{ dir = 1 @@ -39656,13 +40235,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/supply) -"njA" = ( -/obj/machinery/photocopier, -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/hop) "njL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, @@ -39746,6 +40318,16 @@ "nla" = ( /turf/closed/wall, /area/station/commons/storage/art) +"nlb" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/item/kirbyplants/random, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "nle" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, @@ -39757,6 +40339,15 @@ /obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/iron/dark, /area/station/security/lockers) +"nlh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "nlj" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line, @@ -39784,6 +40375,13 @@ dir = 4 }, /area/station/science/xenobiology) +"nlM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/screwdriver, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/construction) "nlQ" = ( /obj/machinery/holopad, /obj/effect/turf_decal/siding/thinplating{ @@ -39805,6 +40403,13 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) +"nlX" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/diagonal, +/area/station/ai_monitored/command/storage/eva) "nlZ" = ( /turf/closed/wall/r_wall, /area/station/engineering/lobby) @@ -39820,16 +40425,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/small, /area/station/engineering/break_room) -"nmq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/door/poddoor/shutters{ - dir = 1; - id = "aibridge" - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) "nmC" = ( /obj/structure/table, /obj/item/storage/bag/tray, @@ -39853,6 +40448,13 @@ /obj/effect/turf_decal/siding/wideplating, /turf/open/floor/wood, /area/station/engineering/main) +"nmN" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "nmV" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -39866,13 +40468,15 @@ /obj/structure/cable, /turf/open/floor/mineral/titanium, /area/station/command/heads_quarters/ce) -"nmZ" = ( -/obj/structure/cable, +"nnc" = ( +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark/diagonal, -/area/station/ai_monitored/command/storage/eva) +/obj/structure/cable, +/turf/open/floor/iron/white/side{ + dir = 9 + }, +/area/station/science/lower) "nnd" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -39903,13 +40507,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth_large, /area/station/engineering/break_room) -"noe" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 +"nog" = ( +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/area/station/science/lab) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "noq" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/smooth, @@ -39919,19 +40524,6 @@ /obj/structure/bed/maint, /turf/open/floor/eighties, /area/station/service/abandoned_gambling_den/gaming) -"noz" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/navigate_destination/eva, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/primary/fore) "noB" = ( /obj/structure/table/reinforced/rglass, /obj/machinery/door/window/left/directional/east{ @@ -39963,18 +40555,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/command/meeting_room) -"noJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"noN" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/steam_vent, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "noS" = ( /obj/structure/bed, /obj/item/bedsheet/red, @@ -40013,13 +40593,6 @@ }, /turf/open/floor/wood/tile, /area/station/service/bar) -"npM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/small/directional/south, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/captain/private) "npV" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40052,13 +40625,6 @@ }, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) -"nqG" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 5 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "nqJ" = ( /obj/structure/sink/directional/south, /obj/effect/turf_decal/siding/wood, @@ -40103,6 +40669,14 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) +"nrb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/wood/parquet, +/area/station/medical/psychology) "nrg" = ( /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 1 @@ -40126,10 +40700,10 @@ }, /turf/open/floor/wood, /area/station/service/chapel) -"nrD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +"nrK" = ( +/obj/machinery/light_switch/directional/east, /turf/open/floor/iron, -/area/station/construction/mining/aux_base) +/area/station/commons/fitness/locker_room) "nsc" = ( /obj/structure/cable, /obj/item/kirbyplants/organic/applebush, @@ -40145,11 +40719,6 @@ /obj/item/target/alien, /turf/open/floor/plating, /area/station/science/auxlab/firing_range) -"nsi" = ( -/obj/machinery/vending/boozeomat, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/captain/private) "nsr" = ( /obj/effect/turf_decal/siding/red{ dir = 6 @@ -40164,15 +40733,6 @@ }, /turf/open/floor/iron/small, /area/station/security/brig) -"nsz" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron/white/side, -/area/station/hallway/primary/central/aft) "nsD" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -40197,6 +40757,23 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"nsP" = ( +/mob/living/carbon/human/species/monkey{ + name = "George" + }, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/science/xenobiology) +"nsV" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Dorms" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/textured_half, +/area/station/commons/dorms) "nsW" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron, @@ -40246,6 +40823,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"ntJ" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tcomms) "ntK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -40263,14 +40847,10 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/wood/parquet, /area/station/service/library) -"ntW" = ( -/obj/structure/table/optable{ - desc = "A cold, hard place for your final rest."; - name = "Morgue Slab" - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/corner, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +"ntQ" = ( +/obj/machinery/keycard_auth/wall_mounted/directional/south, +/turf/open/floor/mineral/titanium, +/area/station/command/heads_quarters/ce) "ntZ" = ( /obj/machinery/door/airlock/public/glass{ name = "Recreation" @@ -40278,17 +40858,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/textured_half, /area/station/commons/fitness/recreation/entertainment) -"nun" = ( -/obj/structure/flora/bush/flowers_br/style_random{ - pixel_x = -3; - pixel_y = 4 - }, -/obj/effect/light_emitter/fake_outdoors, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/turf/open/floor/grass/Airless, -/area/station/hallway/primary/central/aft) "nuo" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/decal/cleanable/dirt, @@ -40307,12 +40876,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) -"nuC" = ( -/obj/effect/turf_decal/siding, -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lab) "nuL" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -40322,12 +40885,6 @@ /obj/structure/cable, /turf/open/floor/iron/herringbone, /area/station/commons/dorms) -"nuO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "nuS" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt, @@ -40363,32 +40920,24 @@ /obj/structure/alien/weeds/node, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"nvB" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "nvE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"nvK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/exit/departure_lounge) "nvL" = ( /mob/living/simple_animal/hostile/ooze/gelatinous{ name = "Cubie" }, /turf/open/floor/iron/recharge_floor, /area/station/maintenance/port/aft) +"nvU" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "nwb" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -40401,6 +40950,26 @@ }, /turf/open/floor/iron, /area/station/cargo/office) +"nwc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/science/research) "nwf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/firealarm/directional/west, @@ -40414,13 +40983,6 @@ dir = 1 }, /area/station/hallway/secondary/dock) -"nwk" = ( -/obj/effect/spawner/random/trash/bin, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 9 - }, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) "nwK" = ( /obj/machinery/door/airlock/atmos/glass{ name = "HFR Chamber" @@ -40440,23 +41002,23 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"nxp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner, -/area/station/science/lower) -"nxy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/dark/hidden{ - dir = 1 +"nxn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) -"nxD" = ( -/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/science/cytology) +"nxw" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "nxI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -40475,15 +41037,13 @@ /obj/machinery/keycard_auth/wall_mounted/directional/south, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) -"nyd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"nye" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 8; + name = "killroom vent" }, -/obj/structure/broken_flooring/singular/directional/east, -/obj/structure/steam_vent, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/open/floor/circuit/telecomms/mainframe, +/area/station/science/xenobiology) "nyf" = ( /obj/machinery/camera/autoname/directional/east, /obj/effect/decal/cleanable/dirt, @@ -40521,6 +41081,14 @@ /obj/item/pushbroom, /turf/open/floor/iron/smooth, /area/station/service/greenroom) +"nyz" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Cytology Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/research) "nyB" = ( /obj/structure/sign/departments/xenobio/alt/directional/west, /turf/open/floor/iron/white/corner{ @@ -40545,14 +41113,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"nyZ" = ( -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "nzc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40648,9 +41208,9 @@ /turf/open/space/basic, /area/space) "nAn" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/secondary/command) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "nAo" = ( /obj/machinery/hydroponics/soil{ pixel_y = 8 @@ -40659,17 +41219,14 @@ /obj/machinery/light/small/broken/directional/west, /turf/open/misc/sandy_dirt, /area/station/maintenance/starboard/aft) -"nAF" = ( -/obj/effect/landmark/start/roboticist, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"nAI" = ( -/obj/structure/alien/weeds, -/obj/structure/cable, -/turf/open/misc/asteroid, -/area/station/maintenance/starboard/greater) +"nAr" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Xenobiology - Killroom Chamber"; + name = "xenobiology camera"; + network = list("ss13","xeno","rd") + }, +/turf/open/floor/circuit/telecomms/mainframe, +/area/station/science/xenobiology) "nAJ" = ( /obj/machinery/power/energy_accumulator/tesla_coil/anchored, /obj/structure/window/reinforced/plasma/spawner/directional/north, @@ -40689,7 +41246,28 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/project) +"nAY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/primary/aft) +"nBm" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "nBq" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) "nBw" = ( @@ -40703,26 +41281,6 @@ }, /turf/open/floor/stone, /area/station/command/corporate_suite) -"nBF" = ( -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"nBG" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "nBP" = ( /obj/machinery/door/poddoor/shutters/radiation/preopen{ id = "engsm"; @@ -40738,13 +41296,6 @@ dir = 6 }, /area/station/science/xenobiology) -"nCo" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) "nCt" = ( /obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ @@ -40757,6 +41308,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"nCB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/turf/open/floor/iron/checker, +/area/station/command/bridge) "nCC" = ( /obj/structure/chair/stool/directional/south, /obj/effect/turf_decal/siding/yellow{ @@ -40775,17 +41334,6 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/hallway/secondary/construction) -"nCU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/vehicle/ridden/wheelchair{ - dir = 4 - }, -/obj/structure/sign/departments/psychology/directional/south, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/lobby) "nCX" = ( /obj/structure/flora/bush/flowers_pp, /obj/structure/flora/bush/flowers_yw, @@ -40837,6 +41385,16 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/bitrunning/den) +"nEo" = ( +/obj/machinery/air_sensor/ordnance_freezer_chamber, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ + dir = 4 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/freezerchamber) "nEq" = ( /obj/machinery/door/airlock/public/glass{ name = "Library" @@ -40884,9 +41442,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"nFa" = ( -/turf/closed/wall, -/area/station/engineering/storage/tech) "nFc" = ( /obj/structure/chair/stool/bar/directional/east, /turf/open/floor/carpet/lone, @@ -40894,6 +41449,15 @@ "nFo" = ( /turf/closed/wall, /area/station/cargo/bitrunning/den) +"nFp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ + dir = 8 + }, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) "nFs" = ( /obj/machinery/telecomms/server/presets/command, /turf/open/floor/circuit, @@ -40979,6 +41543,14 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/grass, /area/station/medical/virology) +"nGo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/tcommsat/server) "nGA" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -40987,6 +41559,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"nGC" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/siding/green{ + dir = 6 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "nGI" = ( /obj/machinery/door/window/left/directional/east{ name = "Isolation Room 2"; @@ -41019,6 +41602,16 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"nHo" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "nHu" = ( /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, @@ -41080,18 +41673,38 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/hallway/primary/central/fore) +"nHV" = ( +/obj/machinery/power/solar{ + id = "forestarboard"; + name = "Fore-Starboard Solar Array" + }, +/obj/structure/cable, +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/starboard/fore) +"nHX" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/eighties, +/area/station/service/abandoned_gambling_den/gaming) "nId" = ( /turf/open/floor/circuit/green, /area/station/ai_monitored/command/nuke_storage) -"nIx" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +"nIf" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"nIl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/light_switch/directional/north, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron/smooth, +/area/station/maintenance/solars/starboard/aft) "nIA" = ( /obj/effect/turf_decal/siding/white{ dir = 8 @@ -41102,21 +41715,6 @@ /obj/machinery/light/cold/directional/south, /turf/open/floor/iron/dark, /area/station/medical/medbay/lobby) -"nIJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/item/kirbyplants/random/fullysynthetic, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/medical/virology) -"nIT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "nIY" = ( /turf/closed/mineral/random/stationside, /area/station/maintenance/fore/lesser) @@ -41140,6 +41738,18 @@ dir = 4 }, /area/station/hallway/primary/central/fore) +"nJm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "nJo" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -41150,16 +41760,23 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"nJG" = ( +"nJx" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 +/turf/open/floor/wood/tile, +/area/station/science/lower) +"nJE" = ( +/obj/machinery/power/solar_control{ + id = "forestarboard"; + name = "Starboard Bow Solar Control" }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/maintenance/solars/starboard/fore) "nJK" = ( /obj/structure/reagent_dispensers/watertank/high, /obj/effect/turf_decal/siding/thinplating_new/light{ @@ -41190,20 +41807,30 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"nKj" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ - dir = 10 +"nKf" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, /turf/open/floor/iron/dark, -/area/station/tcommsat/server) +/area/station/ai_monitored/turret_protected/ai_upload) +"nKp" = ( +/obj/structure/table/wood, +/obj/machinery/computer/pod/old{ + dir = 8 + }, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "nKz" = ( /obj/machinery/light/floor, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) +"nKP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/iv_drip, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) "nLi" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/thinplating_new{ @@ -41212,20 +41839,27 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/cargo/miningfoundry) -"nLk" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "Research Director's Office" - }, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" +"nLC" = ( +/obj/machinery/door/airlock/hatch{ + name = "Experimentation Chamber" }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/command/heads_quarters/rd) +/turf/open/floor/catwalk_floor/iron, +/area/station/science/explab) +"nLD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Telecomms Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/effect/landmark/navigate_destination, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/textured_half, +/area/station/engineering/storage/tcomms) "nLJ" = ( /obj/machinery/portable_atmospherics/canister, /obj/effect/turf_decal/bot{ @@ -41236,13 +41870,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"nLM" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "nLQ" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -41260,6 +41887,13 @@ }, /turf/open/floor/iron/dark, /area/station/commons/storage/tools) +"nMc" = ( +/obj/machinery/firealarm/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/science/breakroom) "nMk" = ( /obj/machinery/power/emitter/welded{ dir = 1 @@ -41267,14 +41901,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"nMn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 +"nMo" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/duct, -/turf/open/floor/iron/white/small, -/area/station/commons/toilet/restrooms) +/obj/structure/sign/departments/science/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "nMq" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/structure/closet/secure_closet/miner, @@ -41305,13 +41939,6 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) -"nNe" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/siding/dark, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/command/bridge) "nNi" = ( /obj/effect/turf_decal/bot_white/right, /turf/open/floor/engine, @@ -41322,20 +41949,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) -"nNz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) "nNA" = ( /obj/machinery/light/small/broken/directional/west, /turf/open/floor/iron/dark/small, @@ -41352,14 +41965,32 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible, /turf/open/floor/plating, /area/station/science/ordnance/testlab) -"nOD" = ( -/obj/machinery/power/apc/auto_name/directional/west{ - areastring = "/area/station/science/ordnance/freezerchamber" - }, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +"nOf" = ( /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"nOg" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/decal/cleanable/dirt, +/obj/structure/alien/weeds, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) +"nOl" = ( +/obj/machinery/disposal/bin, /turf/open/floor/iron/dark, -/area/station/science/ordnance) +/area/station/medical/morgue) "nOH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41417,11 +42048,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/smooth, /area/station/engineering/main) -"nPH" = ( -/obj/structure/closet/secure_closet/brig, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "nPM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41480,16 +42106,6 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/iron/dark, /area/station/security/prison/safe) -"nQo" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/green{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) "nQs" = ( /obj/structure/chair{ dir = 8 @@ -41544,22 +42160,45 @@ dir = 1 }, /area/station/security/execution/transfer) +"nQW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/chair/sofa/bench/right{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "nQX" = ( /obj/machinery/holopad, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) -"nRd" = ( -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "Bridge Blast Door" +"nQY" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/ai_all, +/obj/effect/turf_decal/siding/dark{ + dir = 8 }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/command/bridge) -"nRj" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, +/turf/open/floor/iron, +/area/station/engineering/storage/tech) +"nQZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/machinery/door/airlock/medical/glass{ + name = "Medical Cold Room" + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/white/small, +/area/station/medical/coldroom) +"nRn" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, /area/station/hallway/secondary/entry) "nRr" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -41572,15 +42211,13 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/wood, /area/station/engineering/break_room) -"nRS" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +"nRJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/broken_flooring/singular/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/hallway/secondary/dock) "nSb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -41602,11 +42239,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"nSl" = ( -/obj/structure/railing, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/hallway/secondary/entry) "nSA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -41615,6 +42247,19 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"nSD" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/landmark/start/scientist, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/science/auxlab/firing_range) "nSE" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -41637,6 +42282,11 @@ }, /turf/open/floor/iron/textured_half, /area/station/hallway/primary/central/fore) +"nTl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron, +/area/station/engineering/storage/tech) "nTt" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/computer/shuttle/mining/common{ @@ -41651,20 +42301,15 @@ }, /turf/open/floor/plating, /area/station/security/tram) -"nTz" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/machinery/chem_dispenser, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/pharmacy) "nTC" = ( /turf/open/floor/iron/white/small, /area/station/security/prison/safe) -"nTE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) +"nTH" = ( +/obj/structure/table, +/obj/item/plant_analyzer, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron, +/area/station/security/prison/garden) "nTP" = ( /obj/machinery/door/airlock/research/glass{ name = "Cubicle" @@ -41673,12 +42318,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/catwalk_floor/iron_white, /area/station/science/cubicle) -"nTU" = ( -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "nUd" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -41691,6 +42330,22 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos) +"nUk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Theater Greenroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/theatre, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/service/greenroom) "nUo" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/effect/turf_decal/siding/green{ @@ -41705,6 +42360,15 @@ }, /turf/open/floor/iron/cafeteria, /area/station/science/circuits) +"nUv" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/structure/disposalpipe/segment, +/obj/item/radio/intercom/directional/west, +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation/entertainment) "nUK" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/barricade/wooden/crude, @@ -41726,6 +42390,15 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) +"nUZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "nVa" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -41745,6 +42418,16 @@ /obj/effect/turf_decal/tile/green/opposingcorners, /turf/open/floor/iron/dark, /area/station/medical/chemistry) +"nVk" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/engineering/storage/tech) "nVs" = ( /obj/structure/table, /obj/machinery/syndicatebomb/training, @@ -41770,17 +42453,6 @@ }, /turf/open/floor/iron/small, /area/station/hallway/secondary/service) -"nVx" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/science/xenobiology) "nVA" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41789,11 +42461,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) -"nVF" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/tcommsat/server) "nVU" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 4 @@ -41807,6 +42474,12 @@ /obj/effect/turf_decal/siding/wideplating, /turf/open/floor/wood, /area/station/engineering/atmos/pumproom) +"nWf" = ( +/obj/effect/spawner/random/structure/crate_abandoned, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "nWh" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/closed/wall/r_wall, @@ -41818,11 +42491,18 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/east, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) -"nWp" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) +"nWn" = ( +/obj/effect/turf_decal/siding/thinplating_new/terracotta, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) +"nWq" = ( +/obj/machinery/firealarm/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/research) "nWr" = ( /obj/structure/cable, /obj/structure/hedge, @@ -41839,14 +42519,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/eighties/red, /area/station/hallway/primary/central/fore) -"nXf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock{ - id_tag = "AuxToilet3"; - name = "Unit 3" - }, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/science/xenobiology) "nXt" = ( /obj/effect/turf_decal/tile/yellow/full, /obj/structure/table/reinforced, @@ -41888,13 +42560,38 @@ /obj/effect/turf_decal/stripes/box, /turf/open/floor/iron/small, /area/station/engineering/break_room) -"nXP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"nXJ" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/purple{ dir = 8 }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/grass, -/area/station/medical/virology) +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/genetics) +"nXK" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/large, +/area/station/engineering/storage/tech) +"nXR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/medical{ + name = "Medbay" + }, +/obj/effect/turf_decal/delivery/red, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/iron/dark/small, +/area/station/medical/medbay/central) "nXS" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -41909,15 +42606,17 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/medical/virology) -"nYl" = ( -/obj/machinery/firealarm/directional/south, +"nYn" = ( +/obj/item/clothing/head/cone{ + pixel_x = -8; + pixel_y = 17 + }, +/obj/structure/broken_flooring/singular/directional/south, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 4 - }, -/area/station/science/xenobiology) +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "nYr" = ( /obj/structure/bed/maint, /turf/open/floor/plating, @@ -41953,6 +42652,17 @@ }, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) +"nZm" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Ordnance Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) "nZq" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, @@ -41976,6 +42686,11 @@ /obj/machinery/vending/wardrobe/chef_wardrobe, /turf/open/floor/iron/kitchen/small, /area/station/service/kitchen) +"nZH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/dim/directional/west, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "nZQ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line{ @@ -41996,26 +42711,19 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"oac" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "oae" = ( /obj/effect/turf_decal/tile/dark_red, /turf/open/floor/iron, /area/station/security/prison) -"oah" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/landmark/start/cyborg, -/obj/machinery/turretid{ - control_area = "/area/station/ai_monitored/turret_protected/ai_upload"; - icon_state = "control_stun"; - name = "AI Upload Turret Control"; - pixel_y = -28 - }, -/obj/machinery/status_display/ai/directional/west, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) "oaK" = ( /obj/structure/window/spawner/directional/south, /obj/effect/decal/cleanable/dirt, @@ -42052,19 +42760,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/engineering/break_room) -"obb" = ( -/obj/machinery/door/airlock/research{ - name = "Research and Development Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/research, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/lab) "obe" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/disposalpipe/segment{ @@ -42072,6 +42767,26 @@ }, /turf/open/floor/iron/smooth, /area/station/engineering/break_room) +"obh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock{ + name = "Bathrooms" + }, +/turf/open/floor/iron/textured_half, +/area/station/commons/toilet/restrooms) +"obi" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "obk" = ( /obj/structure/cable, /turf/open/floor/iron/smooth, @@ -42081,14 +42796,6 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/station/solars/port) -"obs" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) "obN" = ( /obj/structure/cable, /obj/effect/spawner/random/maintenance, @@ -42127,14 +42834,31 @@ /obj/machinery/computer/records/security, /turf/open/floor/iron, /area/station/security/brig/entrance) -"odh" = ( -/obj/effect/turf_decal/stripes/line{ +"odk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) +"odu" = ( +/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) +"ody" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/structure/closet/cabinet, +/obj/effect/spawner/random/food_or_drink/cups, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/science/xenobiology) +"odz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/storage/tech) +/turf/open/floor/iron/dark/small, +/area/station/tcommsat/server) "odD" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/table/wood, @@ -42145,6 +42869,15 @@ }, /turf/open/floor/wood/tile, /area/station/maintenance/central/lesser) +"odG" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "odH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/structure/disposalpipe/segment{ @@ -42152,17 +42885,26 @@ }, /turf/open/floor/stone, /area/station/service/chapel) -"odP" = ( -/obj/structure/bodycontainer/morgue, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "odX" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) +"oem" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/science/xenobiology) "oer" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -42181,13 +42923,6 @@ /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"oez" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/siding/blue{ - dir = 1 - }, -/turf/open/floor/iron/white/small, -/area/station/command/heads_quarters/cmo) "oeI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42215,14 +42950,6 @@ }, /turf/open/floor/stone, /area/station/service/bar) -"off" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/machinery/vending/coffee, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/grimy, -/area/station/hallway/secondary/entry) "ofu" = ( /obj/effect/turf_decal/stripes/white/end{ dir = 8 @@ -42232,6 +42959,22 @@ "ofx" = ( /turf/closed/wall/r_wall, /area/space/nearstation) +"ofy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) +"ofG" = ( +/obj/machinery/blackbox_recorder, +/obj/structure/cable, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "ofU" = ( /obj/machinery/holopad, /obj/effect/landmark/start/hangover, @@ -42246,12 +42989,10 @@ /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/captain/private) "ogl" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) +/obj/machinery/telecomms/processor/preset_three, +/obj/structure/cable, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "ogq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -42261,16 +43002,6 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"ogr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "ogv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -42305,19 +43036,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/medical/chemistry) -"ogT" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/effect/landmark/start/scientist, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) "ohf" = ( /obj/structure/reagent_dispensers/fueltank/large, /obj/effect/turf_decal/bot{ @@ -42387,6 +43105,19 @@ }, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"ohJ" = ( +/obj/effect/turf_decal/caution/stand_clear/red{ + dir = 8 + }, +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/science/cytology) "ohM" = ( /obj/structure/chair{ dir = 8 @@ -42394,14 +43125,10 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron/dark/small, /area/station/security/checkpoint/customs) -"oib" = ( -/obj/effect/mapping_helpers/airlock/access/all/medical/coroner, -/obj/machinery/door/airlock/grunge{ - name = "On-Station Burial Site" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/medical/morgue) +"ohW" = ( +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/science/xenobiology) "oig" = ( /obj/effect/spawner/structure/window/reinforced, /obj/effect/turf_decal/stripes/corner{ @@ -42417,13 +43144,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/electrical) -"oim" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 - }, -/obj/structure/sign/warning/no_smoking/directional/east, -/turf/open/floor/iron, -/area/station/cargo/lobby) "ois" = ( /obj/effect/turf_decal/siding/white{ dir = 6 @@ -42437,33 +43157,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"oiA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"oiP" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/machinery/chem_master, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/pharmacy) -"oiT" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) "oiU" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt, @@ -42505,12 +43198,12 @@ /obj/machinery/light/floor, /turf/open/floor/iron/dark, /area/station/security/lockers) -"okk" = ( -/obj/structure/table, -/obj/item/screwdriver, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) +"ojS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white, +/area/station/hallway/primary/central/aft) "okl" = ( /obj/machinery/status_display/ai, /turf/closed/wall, @@ -42519,6 +43212,21 @@ /obj/structure/reflector/single/anchored, /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"oku" = ( +/obj/structure/table/glass, +/obj/item/folder/blue{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/carpet/executive, +/area/station/command/meeting_room) "okB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line, @@ -42531,25 +43239,18 @@ /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /turf/open/floor/plating, /area/station/engineering/atmos/storage/gas) -"okW" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/machinery/door/airlock/research/glass{ - name = "Ordnance Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "rdordnance"; - name = "Ordnance Lab Shutters" +"okJ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/science/ordnance) +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"okO" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "okZ" = ( /obj/structure/closet/secure_closet/personal, /obj/item/radio/intercom/directional/west, @@ -42571,11 +43272,14 @@ /obj/structure/alien/weeds, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) -"olG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold/dark/hidden, -/turf/open/floor/circuit, -/area/station/tcommsat/server) +"olz" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/spawner/random/trash, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "olI" = ( /obj/structure/table, /obj/item/restraints/handcuffs{ @@ -42591,13 +43295,6 @@ }, /turf/open/floor/iron/checker, /area/station/security/breakroom) -"olO" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/diagonal, -/area/station/ai_monitored/command/storage/eva) "olV" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42605,6 +43302,13 @@ /obj/machinery/light/small/dim/directional/west, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"olX" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "oma" = ( /obj/machinery/atmospherics/components/unary/passive_vent, /obj/structure/lattice, @@ -42623,13 +43327,13 @@ /obj/structure/cable, /turf/open/floor/wood/parquet, /area/station/service/library) -"omO" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) +"omu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/broken_flooring/singular/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "omW" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron/white/corner, @@ -42662,6 +43366,13 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark/small, /area/station/medical/chemistry) +"onL" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) "onP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/firedoor, @@ -42699,15 +43410,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/small, /area/station/security/brig) -"oom" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner, -/area/station/science/xenobiology) "ooo" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ @@ -42728,17 +43430,29 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"opg" = ( -/obj/structure/cable, +"ooV" = ( +/obj/machinery/holopad, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth_large, +/area/station/science/auxlab/firing_range) "opn" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/small, /area/station/command/teleporter) +"opp" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/science/ordnance/testlab) +"opq" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/siding/brown, +/turf/open/floor/iron/smooth, +/area/station/maintenance/port/aft) "opv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -42770,41 +43484,21 @@ }, /turf/open/space/basic, /area/space/nearstation) -"opN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "opV" = ( /obj/effect/landmark/start/bartender, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/stone, /area/station/service/bar) -"opW" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/science/xenobiology) -"oqg" = ( -/obj/effect/turf_decal/tile/blue{ +"opZ" = ( +/obj/machinery/rnd/destructive_analyzer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/science/lab) +"oqi" = ( +/obj/machinery/atmospherics/components/trinary/filter{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"oqi" = ( -/obj/machinery/atmospherics/components/binary/tank_compressor, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "oqq" = ( @@ -42822,6 +43516,15 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"oqN" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/white/side, +/area/station/hallway/primary/central/aft) "oqT" = ( /obj/machinery/camera/autoname/directional/north, /obj/machinery/firealarm/directional/north, @@ -42839,6 +43542,13 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/small, /area/station/service/barber) +"oqY" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "ora" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42849,38 +43559,27 @@ "orb" = ( /turf/closed/wall, /area/station/engineering/main) -"orz" = ( -/obj/structure/table, -/obj/item/assembly/igniter{ - pixel_x = -5; - pixel_y = 3 +"orf" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 8 }, -/obj/item/assembly/igniter{ - pixel_x = 5; - pixel_y = -4 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = 6 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = -1 - }, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) +/turf/open/floor/wood/tile, +/area/station/command/corporate_showroom) "orC" = ( /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/fore) -"orW" = ( -/obj/effect/turf_decal/stripes/line{ +"orU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, /turf/open/floor/iron, -/area/station/science/xenobiology) +/area/station/hallway/primary/aft) "osa" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -42888,24 +43587,17 @@ }, /turf/open/space/basic, /area/space/nearstation) -"ose" = ( +"osh" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, +/obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"osj" = ( -/obj/machinery/power/terminal, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/maintenance/solars/starboard/fore) +/obj/effect/landmark/navigate_destination/chemfactory, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) "osp" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -42922,6 +43614,11 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"osu" = ( +/obj/structure/railing, +/obj/structure/cable, +/turf/open/floor/catwalk_floor, +/area/station/hallway/secondary/entry) "osw" = ( /obj/effect/turf_decal/arrows{ dir = 4 @@ -42932,11 +43629,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"osy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "osP" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron, @@ -42951,49 +43643,41 @@ dir = 8 }, /area/station/engineering/break_room) +"osU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron, +/area/station/medical/chemistry) +"osW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "osY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/broken_flooring/corner/directional/south, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"otk" = ( -/obj/effect/turf_decal/siding/thinplating_new/light{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/smooth_large, -/area/station/science/robotics/mechbay) -"otB" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/green/corner{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) -"otC" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron/dark/side, -/area/station/hallway/primary/central/fore) -"otJ" = ( +"otz" = ( +/obj/structure/hedge, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"otN" = ( +/obj/effect/turf_decal/stripes/line, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"otQ" = ( -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) "otX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43115,12 +43799,12 @@ dir = 1 }, /area/station/command/gateway) -"owc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/furniture_parts, -/obj/structure/railing/corner/end, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/science/xenobiology) +"owm" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/science/cytology) "owv" = ( /obj/machinery/atmospherics/components/unary/passive_vent{ dir = 1; @@ -43128,26 +43812,28 @@ }, /turf/open/floor/circuit, /area/station/science/server) -"owD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 +"owE" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair{ + dir = 1 }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/department/medical/central) +"owI" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Construction Hatch" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/science/cytology) -"owF" = ( -/obj/structure/fermenting_barrel, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) -"owH" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/binary/valve/digital{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) +/area/station/hallway/secondary/construction) "owJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -43171,13 +43857,12 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"owZ" = ( -/obj/item/kirbyplants/organic/applebush, -/obj/structure/cable, +"owS" = ( +/obj/effect/turf_decal/siding/white/corner, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/bridge) +/turf/open/floor/iron/dark/small, +/area/station/science/xenobiology) "oxc" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/cup/glass/mug/coco{ @@ -43193,14 +43878,12 @@ }, /turf/open/floor/wood, /area/station/engineering/break_room) -"oxl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"oxg" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 }, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/science/lobby) +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "oxm" = ( /obj/effect/turf_decal/bot, /obj/machinery/door/window/right/directional/south{ @@ -43235,6 +43918,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/sorting) +"oye" = ( +/obj/effect/landmark/start/roboticist, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "oyn" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/public/glass{ @@ -43259,6 +43948,14 @@ /obj/structure/cable, /turf/open/floor/grass, /area/station/service/chapel) +"oyA" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/landmark/start/scientist, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/science/cytology) "oyH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43314,12 +44011,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /turf/closed/wall/r_wall, /area/station/engineering/supermatter) -"oAi" = ( -/obj/effect/turf_decal/trimline/dark/filled/warning{ +"ozV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_edge{ dir = 8 }, -/turf/open/floor/iron/dark/small, -/area/station/maintenance/department/science/xenobiology) +/area/station/maintenance/starboard/greater) +"oAg" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "oAn" = ( /obj/effect/turf_decal/siding/brown{ dir = 10 @@ -43333,21 +44037,24 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, /area/station/security/lockers) +"oAz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/light/colour_cycle/dancefloor_b, +/area/station/maintenance/starboard/central) "oAA" = ( /obj/structure/closet/emcloset, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"oAS" = ( -/obj/effect/turf_decal/trimline/dark/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/small, -/area/station/maintenance/department/science/xenobiology) +"oAU" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/science/breakroom) "oAY" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -43358,6 +44065,14 @@ /obj/effect/mapping_helpers/airlock/access/all/security/entrance, /turf/open/floor/iron/textured_half, /area/station/security/brig) +"oBg" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "oBh" = ( /obj/structure/alien/weeds/node, /turf/open/misc/asteroid, @@ -43372,20 +44087,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/security/processing) -"oBA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "oBF" = ( /obj/effect/turf_decal/arrows/white{ dir = 4 @@ -43429,37 +44130,41 @@ dir = 8 }, /area/station/security/warden) -"oBX" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ +"oCa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Law Office" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/lawyer, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/textured_half{ dir = 1 }, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/genetics) +/area/station/service/lawoffice) "oCb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /obj/machinery/meter, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"oCg" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/floor/iron/dark/small, -/area/station/tcommsat/server) "oCi" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/light/small/directional/east, /obj/structure/disposalpipe/segment, /turf/open/floor/wood/parquet, /area/station/service/library) +"oCm" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock{ + name = "Xenobiology Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/turf/open/floor/plating, +/area/station/science/xenobiology) "oCq" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -43471,6 +44176,10 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"oCB" = ( +/obj/machinery/atmospherics/components/binary/tank_compressor, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "oCE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43506,6 +44215,12 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"oDC" = ( +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "oDS" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/closed/wall/r_wall, @@ -43600,12 +44315,6 @@ dir = 4 }, /area/station/maintenance/starboard/greater) -"oFg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "oFu" = ( /turf/closed/wall, /area/station/security/office) @@ -43637,24 +44346,21 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/smooth_half, /area/station/cargo/storage) -"oGL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/red/line{ +"oGM" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_large, -/area/station/science/auxlab/firing_range) -"oGQ" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron/white/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/area/station/hallway/secondary/dock) "oHa" = ( /obj/structure/table, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -43674,28 +44380,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/stairs, /area/station/maintenance/port/greater) -"oHp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) "oHw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/port/aft) -"oHy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/broken_flooring/corner/directional/south, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/hallway/secondary/dock) "oHG" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/item/radio/intercom/directional/north, @@ -43707,12 +44397,13 @@ dir = 1 }, /area/station/security/execution/transfer) -"oIa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"oId" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/autoname/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/secondary/dock) +/area/station/commons/fitness/recreation/entertainment) "oIf" = ( /obj/effect/turf_decal/sand/plating, /obj/machinery/modular_computer/preset/engineering{ @@ -43721,14 +44412,19 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/maintenance/department/electrical) -"oIx" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +"oIz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 }, /obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/science/xenobiology) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/engine, +/area/station/science/explab) "oIE" = ( /obj/effect/turf_decal/stripes/end{ dir = 1 @@ -43796,14 +44492,14 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/smooth_large, /area/station/engineering/supermatter/room) -"oJn" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 4 +"oJr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/effect/mapping_helpers/mail_sorting/science/rd_office, -/obj/structure/cable, -/turf/open/floor/iron/white/side, -/area/station/science/research) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/cytology) "oJv" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -43831,11 +44527,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"oJz" = ( -/obj/structure/bodycontainer/morgue, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "oJA" = ( /obj/structure/transport/linear/tram, /obj/structure/fluff/tram_rail/floor, @@ -43862,16 +44553,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark/textured_half, /area/station/security/execution/education) -"oJL" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/smooth_large, -/area/station/science/auxlab/firing_range) "oJO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43882,14 +44563,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"oJP" = ( -/obj/machinery/telecomms/broadcaster/preset_left, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) "oKb" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -43924,6 +44597,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/safe) +"oKT" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "oLc" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -43952,6 +44633,12 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) +"oLw" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "oLD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -43969,6 +44656,10 @@ /obj/structure/cable, /turf/open/floor/iron/herringbone, /area/station/commons/dorms) +"oMk" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/iron/dark/textured_half, +/area/station/command/bridge) "oMy" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -43991,6 +44682,18 @@ /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) +"oNw" = ( +/obj/structure/disposaloutlet{ + desc = "An outlet for the pneumatic disposal system. This one seems designed for rapid corpse disposal."; + name = "rapid corpse mover 9000"; + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/plating, +/area/station/medical/morgue) "oND" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/stripes/line{ @@ -43998,32 +44701,37 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) -"oNN" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/science/research) "oNQ" = ( /obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/service/chapel/office) -"oNX" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Cytology Zoo" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"oNR" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) +"oNV" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/area/station/hallway/secondary/recreation) +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door/directional/south{ + id = "XenoPens"; + name = "Xenobiology Shutters"; + req_access = list("xenobiology") + }, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/science/xenobiology) "oOb" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, @@ -44041,16 +44749,6 @@ /obj/structure/closet/crate/miningcar, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"oOh" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/light/small/directional/south, -/obj/structure/cable, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/lobby) "oOl" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 9 @@ -44120,12 +44818,6 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/maintenance/port/aft) -"oOR" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/transit_tube/horizontal, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "oOV" = ( /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 8 @@ -44165,6 +44857,12 @@ "oPj" = ( /turf/open/floor/engine/plasma, /area/station/engineering/atmos) +"oPs" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/sign/departments/aiupload/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) "oPy" = ( /obj/structure/bookcase/random, /obj/structure/sign/painting/library{ @@ -44180,13 +44878,17 @@ /turf/open/floor/catwalk_floor/iron_dark, /area/station/command/heads_quarters/rd) "oPM" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/light/cold/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/science/cytology) +"oPO" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/broken_flooring/pile/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/hallway/secondary/dock) "oPQ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/west, @@ -44234,13 +44936,6 @@ "oQF" = ( /turf/closed/wall/r_wall, /area/station/security/execution/transfer) -"oQJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/cytology) "oQK" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ initialize_directions = 8 @@ -44248,6 +44943,14 @@ /obj/effect/turf_decal/siding/wideplating, /turf/open/floor/wood, /area/station/engineering/atmos/pumproom) +"oQM" = ( +/obj/machinery/door/airlock{ + name = "Xenobiology Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/aft) "oQP" = ( /obj/effect/turf_decal/trimline/neutral/line{ dir = 8 @@ -44258,6 +44961,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"oRd" = ( +/obj/item/kirbyplants/random, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/science/cytology) +"oRe" = ( +/obj/machinery/computer/arcade/amputation, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "oRj" = ( /obj/effect/turf_decal/siding/yellow{ dir = 8 @@ -44286,20 +45000,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/cargo/storage) -"oRv" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/item/kirbyplants/random, -/obj/item/radio/intercom/directional/south, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "oRw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/airalarm/directional/south, @@ -44322,12 +45022,6 @@ dir = 8 }, /area/station/service/chapel/storage) -"oRB" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "oRJ" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/light/cold/directional/west, @@ -44345,7 +45039,6 @@ name = "St. Brendan's" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/maintenance/starboard/greater) "oRW" = ( @@ -44384,6 +45077,30 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/carpet/lone, /area/station/service/chapel/office) +"oSN" = ( +/obj/structure/cable, +/obj/machinery/camera/directional/south{ + c_tag = "Atmospherics - South" + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table, +/obj/item/storage/box/mousetraps{ + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/restraints/legcuffs/beartrap{ + pixel_x = 8; + pixel_y = 13 + }, +/obj/item/flashlight{ + pixel_y = 4 + }, +/turf/open/floor/iron/white/small, +/area/station/service/janitor) "oTf" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -44406,6 +45123,15 @@ /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"oTq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "oTH" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/decal/cleanable/dirt, @@ -44459,6 +45185,15 @@ }, /turf/open/floor/iron/dark, /area/station/science/genetics) +"oTU" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "oTZ" = ( /obj/structure/cable, /obj/structure/reflector/single/anchored{ @@ -44487,17 +45222,10 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"oUB" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/science/xenobiology) +"oUC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/white, +/area/station/science/cytology) "oUJ" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -44516,6 +45244,28 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/security/evidence) +"oUW" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/science/xenobiology) +"oVb" = ( +/obj/structure/table/reinforced, +/obj/machinery/requests_console/auto_name/directional/east, +/obj/item/stack/cable_coil{ + pixel_y = 4 + }, +/obj/item/stack/cable_coil, +/obj/item/plant_analyzer{ + pixel_y = 2; + pixel_x = -3 + }, +/obj/item/healthanalyzer{ + pixel_y = 2; + pixel_x = 3 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "oVl" = ( /obj/structure/sign/picture_frame/portrait/bar{ pixel_y = 32 @@ -44561,11 +45311,6 @@ }, /turf/open/floor/iron/dark/diagonal, /area/station/service/bar) -"oVF" = ( -/obj/structure/hedge, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "oVK" = ( /obj/structure/chair{ pixel_y = -2 @@ -44574,6 +45319,14 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron, /area/station/security/execution/transfer) +"oVV" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "oVW" = ( /obj/effect/turf_decal/weather/dirt{ dir = 5 @@ -44593,12 +45346,6 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/captain) -"oWf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "oWg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44618,27 +45365,32 @@ /obj/effect/mapping_helpers/airlock/access/any/command/maintenance, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) -"oWr" = ( -/obj/machinery/door/airlock{ - name = "Xenobiology Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/aft) -"oXa" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "oXs" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/emcloset, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"oXz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/table/reinforced/rglass, +/obj/item/reagent_containers/cup/glass/mug/nanotrasen{ + pixel_y = 6; + pixel_x = -7 + }, +/obj/item/storage/box/coffeepack{ + pixel_x = 8; + pixel_y = 6 + }, +/obj/item/phone{ + desc = "Supposedly a direct line to Nanotrasen Central Command. It's not even plugged in."; + pixel_x = 2; + pixel_y = -2 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/turf/open/floor/iron/checker, +/area/station/command/bridge) "oXK" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -44652,6 +45404,16 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"oXO" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/structure/broken_flooring/singular/directional/east, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/hallway/secondary/dock) "oYi" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -44667,11 +45429,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) -"oYj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "oYv" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44680,20 +45437,19 @@ dir = 8 }, /area/station/engineering/main) -"oYx" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/tcommsat/server) "oYF" = ( /obj/structure/reflector/box/anchored{ dir = 4 }, /turf/open/floor/iron/smooth_large, /area/station/engineering/supermatter/room) +"oYG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/white/small, +/area/station/commons/fitness/locker_room) "oYL" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -44702,15 +45458,18 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"oYS" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/computer/station_alert/station_only{ +"oZe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ dir = 8 }, -/obj/item/radio/intercom/command/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/corporate_dock) +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "oZi" = ( /obj/effect/turf_decal/siding/wideplating/dark/corner, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -44718,6 +45477,22 @@ }, /turf/open/floor/iron, /area/station/security/brig/entrance) +"oZo" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) +"oZr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) "oZt" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -44760,13 +45535,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/dorms) -"oZY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) "oZZ" = ( /obj/structure/disposalpipe/segment, /obj/effect/landmark/start/depsec/supply, @@ -44779,10 +45547,26 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/supply) +"pal" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/machinery/light/no_nightlight/directional/south, +/turf/open/floor/iron, +/area/station/engineering/atmos) "pan" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) +"pao" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/storage/tech) "par" = ( /obj/structure/chair/sofa/bench{ dir = 1 @@ -44875,22 +45659,21 @@ }, /turf/open/floor/iron/smooth, /area/station/service/greenroom) +"pbQ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/trash, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "pbV" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 }, /turf/open/floor/iron, /area/station/cargo/lobby) -"pca" = ( -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) "pcb" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 4 @@ -44898,6 +45681,22 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/security/execution/transfer) +"pcf" = ( +/obj/machinery/holopad, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs) +"pcu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/engineering/storage/tech) "pcv" = ( /obj/machinery/door/airlock/command{ name = "Head of Security's Bedroom" @@ -44907,24 +45706,6 @@ dir = 8 }, /area/station/command/heads_quarters/hos) -"pcy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/research) -"pcE" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Break Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/research) "pcK" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/tile/blue{ @@ -44937,17 +45718,16 @@ dir = 8 }, /area/station/hallway/primary/central/fore) -"pcL" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/green{ - dir = 6 +"pcR" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/machinery/light/small/directional/south, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "pdf" = ( /obj/structure/transport/linear/tram, /obj/effect/landmark/transport/transport_id/birdshot/line_2, @@ -44994,17 +45774,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"pdU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/item/storage/box/petridish{ - pixel_x = -8; - pixel_y = -4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/cytology) "pdY" = ( /obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/iron/diagonal, @@ -45028,22 +45797,34 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"pem" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/subspace/transmitter, -/obj/item/stock_parts/subspace/transmitter, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/amplifier, -/obj/item/stock_parts/subspace/amplifier, -/obj/item/stock_parts/subspace/amplifier, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) +"pel" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"pen" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets, +/obj/machinery/light/small/directional/west, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/cafeteria, +/area/station/science/breakroom) "peE" = ( /obj/structure/closet, /turf/open/floor/iron/smooth, /area/station/cargo/lobby) +"peH" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/binary/valve/digital{ + dir = 4 + }, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "peN" = ( /obj/structure/lattice, /obj/machinery/camera/motion/directional/north{ @@ -45060,6 +45841,15 @@ }, /turf/open/floor/grass, /area/station/service/chapel) +"pfb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sign/departments/medbay/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "pfd" = ( /obj/effect/turf_decal/stripes/white/corner{ dir = 1 @@ -45113,19 +45903,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"pfC" = ( -/obj/structure/table/glass, -/obj/item/folder/blue{ - pixel_y = 2 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) "pfT" = ( /obj/structure/training_machine, /turf/open/floor/iron/smooth_large, @@ -45160,15 +45937,15 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/small, /area/station/security/prison/shower) -"pgy" = ( +"pgF" = ( /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 4 }, -/obj/effect/decal/cleanable/cobweb, -/obj/item/radio/intercom/directional/north, -/obj/machinery/smartfridge/organ, -/turf/open/floor/iron/white, -/area/station/science/cytology) +/obj/structure/broken_flooring/pile/directional/east, +/obj/item/flashlight, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/hallway/secondary/dock) "phd" = ( /obj/effect/turf_decal/siding/red{ dir = 4 @@ -45217,22 +45994,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"phG" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/stone, -/area/station/service/bar) -"phM" = ( -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/breakroom) "phY" = ( /obj/structure/railing{ dir = 1 @@ -45263,6 +46024,11 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/command/corporate_showroom) +"pij" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/tcommsat/server) "pil" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock{ @@ -45287,15 +46053,6 @@ /obj/effect/landmark/start/chemist, /turf/open/floor/iron/dark/small, /area/station/medical/chemistry) -"piI" = ( -/obj/structure/table, -/obj/item/flashlight/lamp{ - pixel_y = 7; - pixel_x = -5 - }, -/obj/effect/spawner/random/medical/minor_healing, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "piJ" = ( /obj/structure/bed, /obj/item/bedsheet/purple, @@ -45309,6 +46066,15 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"piP" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock{ + name = "Gas Lab Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "pjb" = ( /obj/structure/broken_flooring/singular/directional/south, /turf/open/floor/iron, @@ -45342,27 +46108,18 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"pjA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"pjT" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, +"pjD" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/command/bridge) "pjX" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -45407,6 +46164,23 @@ /obj/item/weldingtool, /turf/open/floor/iron/dark, /area/station/maintenance/department/engine/atmos) +"pkF" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/firealarm/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/robotics/augments) +"pkN" = ( +/obj/effect/turf_decal/siding/dark_blue{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "pkQ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -45447,6 +46221,19 @@ }, /turf/open/floor/grass, /area/station/service/hydroponics) +"pkY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=10.0-ScienceFoyer-StarboardHall"; + location = "9.0-StarboardHall-ScienceFoyer" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "plf" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -45464,22 +46251,6 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/starboard) -"plz" = ( -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "Bridge Blast Door" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/command/corporate_showroom) -"plB" = ( -/obj/machinery/door/airlock/centcom{ - name = "Frozeno!" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den/gaming) "plJ" = ( /obj/machinery/photocopier, /obj/effect/turf_decal/siding/wood{ @@ -45498,6 +46269,24 @@ }, /turf/open/floor/catwalk_floor/titanium, /area/station/command/heads_quarters/ce) +"pmj" = ( +/obj/machinery/door/airlock/command/glass{ + name = "E.V.A. Storage" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron/smooth_half{ + dir = 1 + }, +/area/station/ai_monitored/command/storage/eva) "pmq" = ( /obj/structure/bed/maint, /obj/effect/decal/cleanable/dirt, @@ -45525,6 +46314,14 @@ }, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) +"pmH" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/lobby) "pmN" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -45532,45 +46329,22 @@ }, /turf/open/floor/iron, /area/station/security/prison/workout) -"pmZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 1 - }, -/obj/structure/table/wood/fancy/red, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) -"pnf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/entertainment/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "pnl" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/electrical) -"pnq" = ( -/obj/machinery/door/airlock/public{ - name = "Locker Room" +"pnp" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_half, -/area/station/commons/fitness/recreation) +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs/auxiliary) "pnt" = ( /obj/structure/broken_flooring/corner/directional/south, /obj/machinery/firealarm/directional/south, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"pnB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "pnF" = ( /obj/effect/turf_decal/tile/green/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -45594,6 +46368,11 @@ /obj/structure/flora/bush/jungle/c/style_random, /turf/open/floor/grass, /area/station/service/chapel) +"pnO" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/science/server) "pnQ" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 6 @@ -45620,11 +46399,10 @@ /turf/open/floor/iron/white, /area/station/medical/treatment_center) "pof" = ( -/obj/effect/turf_decal/siding/thinplating_new/terracotta, -/obj/machinery/vending/coffee, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "pog" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/iron/freezer, @@ -45645,6 +46423,13 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"poy" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/terracotta/corner, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) "poA" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/light/small/dim/directional/east, @@ -45687,33 +46472,20 @@ /obj/effect/turf_decal/siding/wideplating/dark/corner, /turf/open/floor/iron, /area/station/security) +"poX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + id_tag = "AuxToilet3"; + name = "Unit 3" + }, +/turf/open/floor/iron/showroomfloor, +/area/station/maintenance/department/science/xenobiology) "ppk" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/iron, /area/station/cargo/storage) -"ppm" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/item/clothing/head/cone{ - pixel_x = 6; - pixel_y = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) -"ppp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/chair{ - pixel_y = -2 - }, -/obj/effect/turf_decal/siding/blue, -/turf/open/floor/iron/white/small, -/area/station/command/heads_quarters/cmo) "pps" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/window/spawner/directional/north, @@ -45769,6 +46541,14 @@ "pqm" = ( /turf/closed/wall/r_wall, /area/station/engineering/storage/tcomms) +"pqn" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white/side, +/area/station/science/lobby) "pqr" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/effect/turf_decal/bot{ @@ -45779,6 +46559,25 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) +"pqA" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/paper/fluff/ids_for_dummies{ + pixel_x = 5 + }, +/obj/item/paper_bin/carbon{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/stamp/head/hop{ + pixel_x = -4; + pixel_y = 4 + }, +/turf/open/floor/iron/large, +/area/station/command/heads_quarters/hop) "pqK" = ( /obj/structure/cable, /obj/machinery/door/window/left/directional/south, @@ -45802,17 +46601,13 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"pqT" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"prf" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/warning/electric_shock, +"pqW" = ( /obj/structure/cable, -/turf/open/floor/engine, -/area/station/science/cytology) +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "prh" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 10 @@ -45827,6 +46622,21 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/iron/dark, /area/station/security/prison/safe) +"pru" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/grass, +/area/station/medical/virology) +"prI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/cytology) "prP" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 @@ -45848,18 +46658,20 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/command/teleporter) -"psn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/research/glass{ - name = "Gun Range" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, +"psw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_half{ - dir = 1 +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 }, -/area/station/science/auxlab/firing_range) +/obj/machinery/firealarm/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "psz" = ( /obj/machinery/door/window/left/directional/west{ name = "Fitness Ring" @@ -45916,13 +46728,6 @@ /obj/structure/broken_flooring/corner/directional/south, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"ptj" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/diagonal, -/area/station/science/auxlab/firing_range) "ptl" = ( /obj/machinery/duct, /turf/open/floor/plating, @@ -45945,6 +46750,18 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/stone, /area/station/command/corporate_suite) +"ptv" = ( +/obj/machinery/light/cold/directional/north, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) +"ptz" = ( +/obj/machinery/firealarm/directional/north, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ + dir = 10 + }, +/turf/open/floor/circuit, +/area/station/tcommsat/server) "ptC" = ( /obj/machinery/shower/directional/west, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -45968,10 +46785,31 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"pua" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"puh" = ( +/obj/machinery/incident_display/delam/directional/north, +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/turf/open/floor/iron/small, +/area/station/engineering/break_room) "puk" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/cargo/lobby) +"puo" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) "pus" = ( /obj/effect/turf_decal/box/red/corners, /obj/effect/turf_decal/stripes/white/line{ @@ -45999,17 +46837,30 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) +"pvu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) "pvC" = ( /obj/structure/disposalpipe/segment{ dir = 10 }, /turf/open/floor/wood, /area/station/service/chapel/office) -"pvU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table_or_rack, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/science/xenobiology) +"pvS" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/station_alert/station_only{ + dir = 8 + }, +/obj/item/radio/intercom/command/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/corporate_dock) "pvY" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 @@ -46018,6 +46869,18 @@ /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"pwj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/diagonal, +/area/station/ai_monitored/command/storage/eva) "pwn" = ( /obj/effect/spawner/random/vending/colavend, /obj/structure/sign/departments/telecomms/directional/south, @@ -46028,6 +46891,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"pwA" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white/side, +/area/station/science/research) "pwN" = ( /turf/open/floor/iron/dark/small, /area/station/service/chapel/storage) @@ -46040,12 +46909,25 @@ /obj/machinery/light/no_nightlight/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) +"pxe" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs) "pxj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/herringbone, /area/station/security/execution/education) +"pxk" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "pxx" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -46078,14 +46960,11 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"pyk" = ( -/obj/structure/closet/crate/trashcart/filled, -/obj/structure/spider/stickyweb, -/obj/effect/spawner/random/maintenance/four, -/obj/machinery/power/apc/auto_name/directional/east, +"pyr" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/stone, -/area/station/service/abandoned_gambling_den) +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "pys" = ( /obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, @@ -46100,6 +46979,14 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"pyM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "pzb" = ( /obj/effect/turf_decal/trimline/blue/corner{ dir = 1 @@ -46111,12 +46998,6 @@ "pzd" = ( /turf/closed/wall, /area/station/commons/fitness/recreation/entertainment) -"pzg" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "pzk" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46135,6 +47016,16 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, /area/station/security/execution/transfer) +"pzG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "pzL" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -46147,24 +47038,6 @@ /obj/item/stack/sheet/mineral/titanium, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) -"pAg" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/chair/wood{ - dir = 4 - }, -/turf/open/misc/dirt/station, -/area/station/medical/morgue) -"pAl" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/white{ - dir = 5 - }, -/obj/machinery/light_switch/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) "pAo" = ( /obj/structure/window/spawner/directional/south, /obj/effect/turf_decal/stripes/end{ @@ -46185,30 +47058,21 @@ }, /turf/open/floor/iron, /area/station/security) -"pAs" = ( +"pAr" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/directional/south{ - c_tag = "Xenobiology - Cell 6"; - name = "xenobiology camera"; - network = list("ss13","xeno","rd") - }, -/obj/effect/turf_decal/box/red/corners{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 9 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"pAC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) +/obj/effect/spawner/random/trash, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "pAH" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"pAS" = ( +/obj/structure/hedge, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "pAU" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -46223,21 +47087,12 @@ }, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) -"pAY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"pBa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/dock) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "pBm" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, @@ -46258,6 +47113,14 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/carpet, /area/station/maintenance/hallway/abandoned_recreation) +"pBp" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) "pBu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral{ @@ -46302,17 +47165,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"pCj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "pCn" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos/project) -"pCv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "pCC" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -46327,25 +47191,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/security/brig) -"pCT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"pCU" = ( -/obj/machinery/door/airlock{ - name = "Supply Closet" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/aft) "pDr" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -46357,34 +47202,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/prison/rec) -"pDD" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/lawoffice) -"pDK" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/engineering_all, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) -"pDQ" = ( -/obj/structure/table/glass, -/obj/effect/decal/cleanable/dirt, -/obj/item/folder/blue, -/obj/item/stamp/law, -/obj/effect/landmark/event_spawn, -/obj/item/clothing/glasses/sunglasses{ - pixel_y = 15 - }, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/lawoffice) "pDU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -46396,6 +47213,15 @@ /obj/structure/chair/stool/directional/east, /turf/open/floor/iron/herringbone, /area/station/commons/dorms) +"pEj" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/machinery/light/warm/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation/entertainment) "pEo" = ( /obj/item/radio/intercom/directional/west, /obj/structure/disposalpipe/segment, @@ -46412,15 +47238,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/engineering/atmos) -"pEq" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "pEs" = ( /obj/effect/turf_decal/siding/blue, /turf/open/floor/iron/white, @@ -46447,15 +47264,32 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/dorms) +"pEy" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "pEB" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/prison) +"pEC" = ( +/obj/effect/turf_decal/stripes/white/line, +/turf/open/floor/iron/dark/side, +/area/station/cargo/storage) "pED" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/iron/white/small, /area/station/science/server) +"pEF" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/diagonal, +/area/station/ai_monitored/command/storage/eva) "pEL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/blue{ @@ -46501,25 +47335,25 @@ }, /turf/open/floor/wood, /area/station/engineering/atmospherics_engine) -"pEU" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/machinery/door/airlock/freezer{ - name = "Freezer" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 1 - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen) "pFk" = ( /obj/structure/broken_flooring/singular/directional/east, /obj/effect/decal/cleanable/dirt, /obj/structure/alien/weeds, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"pFI" = ( +"pFv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white/corner, +/area/station/commons/dorms) +"pFx" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -46541,6 +47375,12 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/electrical) +"pFN" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/tcommsat/server) "pFQ" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 @@ -46561,16 +47401,22 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"pGp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"pFZ" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/button/door/directional/north{ + id = "Xenolab"; + name = "Test Chamber Blast Doors"; + pixel_x = 26; + pixel_y = -2; + req_access = list("xenobiology") }, -/obj/machinery/camera/autoname/directional/south, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) +/obj/machinery/atmospherics/components/binary/pump, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/xenobiology) "pGE" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -46582,11 +47428,6 @@ /obj/machinery/telecomms/processor/preset_two, /turf/open/floor/circuit, /area/station/tcommsat/server) -"pGK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "pGR" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -46626,18 +47467,20 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/chapel, /area/station/maintenance/starboard/greater) -"pHq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "pHw" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/item/airlock_painter, /turf/open/floor/iron, /area/station/commons/storage/art) +"pHy" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "pHA" = ( /obj/effect/turf_decal/weather/dirt{ dir = 6 @@ -46658,12 +47501,9 @@ }, /area/station/commons/storage/tools) "pHI" = ( -/obj/structure/hedge, -/obj/effect/turf_decal/siding/thinplating_new/terracotta/corner{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/commons/fitness/recreation) "pHJ" = ( /turf/open/floor/plating/rust, /area/station/maintenance/starboard/greater) @@ -46701,6 +47541,20 @@ /obj/structure/reagent_dispensers/plumbed, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) +"pIe" = ( +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Research Director's Office" + }, +/obj/machinery/door/poddoor/preopen{ + id = "rdoffice"; + name = "Research Director's Shutters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/command/heads_quarters/rd) "pIf" = ( /obj/structure/table, /obj/machinery/light/small/directional/east, @@ -46755,18 +47609,6 @@ }, /turf/open/floor/iron/white/small, /area/station/service/hydroponics) -"pIM" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/shaker{ - pixel_x = -6 - }, -/obj/item/reagent_containers/cup/glass/bottle/wine/unlabeled{ - pixel_x = 6; - pixel_y = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "pIS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -46775,12 +47617,33 @@ }, /turf/open/floor/plating, /area/station/command/bridge) +"pJa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "pJc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/holopad, /obj/structure/cable, /turf/open/floor/stone, /area/station/service/bar) +"pJe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/airlock/command/glass{ + name = "Telecommunications Server Room" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) "pJj" = ( /obj/structure/chair/sofa/bench/left{ dir = 1 @@ -46796,24 +47659,11 @@ /obj/effect/landmark/start/cargo_technician, /turf/open/floor/iron, /area/station/cargo/storage) -"pJr" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"pJu" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/airlock/command/glass{ - name = "Telecommunications Server Room" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 1 - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) +"pJn" = ( +/obj/structure/closet/secure_closet/personal, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "pJv" = ( /obj/structure/chair/stool/directional/south, /turf/open/floor/iron/smooth, @@ -46831,11 +47681,6 @@ /obj/effect/spawner/random/armory/shotgun, /turf/open/floor/plating, /area/station/ai_monitored/security/armory) -"pJz" = ( -/obj/machinery/firealarm/directional/west, -/obj/structure/urinal/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) "pKi" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ @@ -46871,46 +47716,12 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"pKS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/turf_decal/siding/blue{ - dir = 10 - }, -/turf/open/floor/iron/white/small, -/area/station/command/heads_quarters/cmo) -"pKU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "pKW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) -"pLe" = ( -/obj/structure/cable, -/obj/effect/landmark/navigate_destination, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, -/obj/effect/turf_decal/siding/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/siding/yellow{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering{ - name = "Tech Storage" - }, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/storage/tech) "pLf" = ( /obj/machinery/griddle, /obj/effect/turf_decal/siding{ @@ -46925,22 +47736,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/hallway/secondary/exit/departure_lounge) -"pLr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/door/airlock/command{ - name = "Council Chambers" - }, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "Bridge Blast Door" - }, -/turf/open/floor/iron/dark/textured_half, -/area/station/command/corporate_showroom) "pLI" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -46966,6 +47761,13 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/north, /turf/open/floor/iron/cafeteria, /area/station/hallway/secondary/exit/departure_lounge) +"pMf" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/structure/urinal/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) "pMq" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 4 @@ -46981,16 +47783,44 @@ }, /turf/open/floor/wood, /area/station/engineering/atmos/office) +"pMs" = ( +/obj/structure/transit_tube/horizontal, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) "pMA" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/catwalk_floor/iron_dark, /area/station/science/xenobiology) +"pME" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/cold/directional/south, +/obj/machinery/atmospherics/components/tank/oxygen{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/science/ordnance/storage) "pMM" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, /turf/open/floor/engine, /area/station/engineering/supermatter) +"pMN" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/airlock/command{ + name = "Council Chambers" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_half, +/area/station/command/bridge) "pMS" = ( /obj/structure/table, /obj/machinery/light/small/directional/south, @@ -47043,6 +47873,14 @@ }, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) +"pNo" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 4 + }, +/obj/effect/mapping_helpers/mail_sorting/science/rd_office, +/obj/structure/cable, +/turf/open/floor/iron/white/side, +/area/station/science/research) "pNC" = ( /turf/open/floor/iron/dark/side{ dir = 1 @@ -47057,14 +47895,6 @@ /obj/item/stock_parts/subspace/filter, /turf/open/floor/iron/dark, /area/station/engineering/storage/tcomms) -"pNO" = ( -/obj/effect/turf_decal/siding{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/small, -/area/station/science/lab) "pNZ" = ( /obj/structure/sign/directions/dorms{ dir = 4 @@ -47099,10 +47929,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"pOq" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "pOw" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -47132,12 +47958,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/prison) -"pOL" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer2{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "pOM" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/red/line{ @@ -47164,12 +47984,6 @@ }, /turf/open/floor/wood/parquet, /area/station/service/library) -"pOX" = ( -/obj/effect/turf_decal/trimline/neutral/end{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "pPj" = ( /obj/structure/mirror/directional/east, /obj/structure/chair/stool/bar/directional/east, @@ -47188,24 +48002,22 @@ /obj/item/airlock_painter, /turf/open/floor/iron/small, /area/station/engineering/atmos/storage/gas) -"pPp" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) -"pPt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/blue/corner{ +"pPn" = ( +/obj/structure/closet/crate/grave, +/turf/open/misc/dirt/station, +/area/station/medical/morgue) +"pPw" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/white/small, -/area/station/medical/storage) -"pPD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/closed/wall, -/area/station/science/ordnance/testlab) +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/science/xenobiology) "pPK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -47229,6 +48041,30 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/aft) +"pQc" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/item/kirbyplants/random, +/obj/item/radio/intercom/directional/south, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) +"pQh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/autoname/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "pQj" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -47246,28 +48082,24 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/smooth_large, /area/station/science/robotics/mechbay) -"pQE" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" +"pQv" = ( +/obj/structure/rack, +/obj/item/poster/random_contraband{ + pixel_y = 8 }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "XenoPens"; - name = "Xenobiology Lockdown" +/obj/item/poster/random_contraband{ + pixel_y = 4 }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) +/obj/item/poster/random_contraband, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/science/xenobiology) "pQP" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/components/unary/bluespace_sender, /turf/open/floor/iron/small, /area/station/engineering/atmos/office) -"pQW" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "pRc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -47346,6 +48178,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/prison) +"pSk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/station/medical/psychology) "pSq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/random/directional/north, @@ -47365,6 +48206,27 @@ }, /turf/open/floor/plating, /area/station/science/ordnance/testlab) +"pSC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + name = "Research Wing" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "rdrnd"; + name = "Research and Development Shutters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/hallway/primary/starboard) "pSN" = ( /obj/item/radio/intercom/directional/south, /obj/machinery/holopad, @@ -47379,21 +48241,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"pST" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) -"pTh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/smooth, -/area/station/hallway/secondary/command) -"pTi" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "pTk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -47438,6 +48285,15 @@ }, /turf/closed/wall/r_wall, /area/station/maintenance/department/engine/atmos) +"pTY" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/small, +/area/station/service/barber) "pTZ" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 @@ -47449,6 +48305,21 @@ /obj/effect/turf_decal/tile/green, /turf/open/floor/iron/dark, /area/station/medical/chemistry) +"pUl" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/iron/stairs, +/area/station/maintenance/department/science/xenobiology) +"pUm" = ( +/obj/effect/turf_decal/trimline/dark/end{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/department/science/xenobiology) "pUs" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, @@ -47463,29 +48334,18 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/general, /turf/open/floor/catwalk_floor, /area/station/engineering/break_room) -"pUx" = ( -/obj/structure/closet/crate/freezer/blood, -/obj/machinery/camera/autoname/directional/east, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) -"pUy" = ( -/obj/effect/turf_decal/siding/thinplating_new/terracotta, -/obj/structure/bookcase/random, -/obj/effect/turf_decal/siding/thinplating_new/terracotta{ - dir = 6 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) "pUA" = ( /obj/machinery/space_heater, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) +"pUB" = ( +/obj/item/radio/intercom/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/science/lobby) "pUC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/doppler_array{ @@ -47494,17 +48354,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"pUL" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/computer/records/medical/laptop{ - dir = 8; - pixel_y = 1 - }, -/obj/machinery/light/small/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/corporate_dock) "pUM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/effect/turf_decal/stripes/line, @@ -47525,13 +48374,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/security/processing) -"pVa" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) "pVj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral{ @@ -47570,18 +48412,35 @@ dir = 1 }, /area/station/cargo/lobby) -"pWl" = ( -/obj/machinery/firealarm/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ +"pVY" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"pWb" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/area/station/science/lobby) +/obj/machinery/shower/directional/west, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) "pWm" = ( /turf/closed/wall, /area/station/maintenance/department/electrical) +"pWq" = ( +/obj/effect/turf_decal/siding{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/white/small, +/area/station/science/lab) +"pWs" = ( +/obj/structure/bookcase/random, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 10 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/meeting_room) "pWt" = ( /obj/structure/lattice, /obj/structure/railing/corner{ @@ -47595,20 +48454,6 @@ }, /turf/open/floor/iron/diagonal, /area/station/command/heads_quarters/hop) -"pWC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/medical/glass{ - name = "Primary Treatment Centre" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/iron/white/small, -/area/station/medical/treatment_center) "pWF" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -47658,24 +48503,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"pWZ" = ( -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, -/obj/structure/railing{ - dir = 9 - }, -/obj/structure/table/glass, -/obj/item/storage/box/monkeycubes{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/storage/box/monkeycubes{ - pixel_x = 6; - pixel_y = 2 - }, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) "pXh" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -47740,18 +48567,6 @@ /obj/effect/turf_decal/delivery/white, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) -"pXQ" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/robotics/augments) -"pXS" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/broken_flooring/pile/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/hallway/secondary/dock) "pYi" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -47852,17 +48667,6 @@ /obj/item/shard/titanium, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"qac" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/science/lower) -"qak" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/herringbone, -/area/station/commons/dorms) "qan" = ( /obj/structure/cable/layer3, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -47873,6 +48677,10 @@ }, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) +"qap" = ( +/obj/machinery/holopad, +/turf/open/floor/iron, +/area/station/cargo/storage) "qav" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; @@ -47885,6 +48693,18 @@ /obj/structure/mirror/directional/north, /turf/open/floor/iron/white/small, /area/station/maintenance/port/aft) +"qaO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/light/cold/directional/south, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) "qaU" = ( /obj/effect/turf_decal/arrows/white, /obj/effect/turf_decal/stripes/line{ @@ -47929,6 +48749,12 @@ dir = 8 }, /area/station/hallway/secondary/dock) +"qbo" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/science/robotics/augments) "qbq" = ( /obj/structure/chair{ dir = 1 @@ -47958,15 +48784,19 @@ /obj/item/stack/tile/catwalk_tile/iron, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"qbN" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ +"qbH" = ( +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/obj/structure/chair/office{ dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/landmark/start/depsec/science, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/checkpoint/science) "qbP" = ( /obj/effect/turf_decal/bot, /obj/machinery/airalarm/directional/east, @@ -47981,17 +48811,43 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/smooth, /area/station/engineering/break_room) +"qbU" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/pen{ + pixel_x = 8; + pixel_y = 8 + }, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) +"qcf" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/side, +/area/station/hallway/secondary/construction) +"qco" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1 + }, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/xenobiology) "qcr" = ( /obj/structure/flora/bush/flowers_yw/style_random, /mob/living/carbon/human/species/monkey, /turf/open/floor/grass, /area/station/medical/virology) -"qcv" = ( -/obj/effect/landmark/navigate_destination/dockarrival, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "qcB" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, @@ -48008,6 +48864,16 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) +"qdn" = ( +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/light/cold/directional/east, +/obj/machinery/power/apc/auto_name/directional/east{ + areastring = "/area/station/science/ordnance/burnchamber" + }, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "qdu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -48018,6 +48884,24 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/prison) +"qdI" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Cytology Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/cytology) +"qdK" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/smooth, +/area/station/maintenance/solars/starboard/fore) "qdM" = ( /obj/structure/chair/sofa/bench/left{ dir = 4 @@ -48033,17 +48917,6 @@ dir = 1 }, /area/station/hallway/primary/aft) -"qdR" = ( -/obj/structure/toilet, -/obj/machinery/light/small/directional/west, -/obj/machinery/button/door/directional/east{ - id = "AuxToilet1"; - name = "Lock Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) "qdS" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -48074,36 +48947,6 @@ "qei" = ( /turf/closed/wall, /area/station/science/ordnance/storage) -"qek" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 10 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/tank_dispenser/oxygen{ - pixel_x = -1; - pixel_y = 2 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 4 - }, -/area/station/ai_monitored/command/storage/eva) -"qem" = ( -/obj/effect/turf_decal/box/red/corners{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/obj/effect/turf_decal/weather/snow/corner{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "qen" = ( /obj/structure/table, /obj/item/clothing/gloves/boxing, @@ -48142,6 +48985,14 @@ /obj/structure/sign/departments/lawyer/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"qfq" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/landmark/navigate_destination/aiupload, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) "qfv" = ( /obj/structure/flora/rock/pile/jungle/style_random, /obj/structure/window/reinforced/spawner/directional/east, @@ -48158,15 +49009,17 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/carpet/executive, /area/station/command/heads_quarters/captain/private) -"qfA" = ( +"qfI" = ( /obj/machinery/door/airlock{ - name = "Law Office" + name = "Supply Closet" }, -/obj/effect/mapping_helpers/airlock/access/any/service/lawyer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_half, -/area/station/service/lawoffice) +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/aft) "qfK" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -48186,19 +49039,12 @@ /obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"qgi" = ( -/obj/structure/rack, -/obj/item/poster/random_official{ - pixel_y = 7 +"qga" = ( +/obj/structure/chair/office{ + dir = 4 }, -/obj/item/poster/random_official{ - pixel_y = 3 - }, -/obj/item/poster/random_official, -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, /area/station/maintenance/department/science/xenobiology) "qgj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -48208,6 +49054,12 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"qgq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/science/lower) "qgs" = ( /obj/structure/cable, /obj/item/kirbyplants/random/fullysynthetic, @@ -48227,14 +49079,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"qgx" = ( -/obj/machinery/door/airlock{ - name = "Law Office Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/lawyer, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "qgJ" = ( /obj/machinery/light/dim/directional/west, /obj/machinery/duct, @@ -48252,55 +49096,6 @@ "qgZ" = ( /turf/open/floor/carpet/lone, /area/station/service/chapel/office) -"qhd" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"qhh" = ( -/obj/structure/table/glass, -/obj/item/book/manual/wiki/cytology{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/item/reagent_containers/dropper{ - pixel_x = -11; - pixel_y = -4 - }, -/obj/item/biopsy_tool{ - pixel_x = -5; - pixel_y = 2 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"qhl" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/rnd_all, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) -"qhv" = ( -/obj/structure/broken_flooring/corner/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/hallway/secondary/dock) -"qhF" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/mid_joiner, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/fitness/recreation) "qhR" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood/corner{ @@ -48392,6 +49187,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"qiJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/light/cold/directional/west, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/primary/aft) "qiL" = ( /obj/structure/disposalpipe/segment, /obj/structure/sign/directions/evac/directional/east{ @@ -48455,13 +49264,6 @@ /obj/item/clothing/suit/toggle/owlwings/griffinwings, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/aft) -"qka" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/cytology) "qke" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/neutral/line{ @@ -48514,6 +49316,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"qkZ" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "qlc" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -48534,20 +49343,43 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"qln" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Arrivals" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/hallway/secondary/entry) "qlr" = ( /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"qly" = ( -/obj/effect/turf_decal/siding/thinplating_new/terracotta, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) -"qlP" = ( -/obj/structure/chair{ - dir = 1 +"qlz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ + dir = 9 }, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) +/turf/open/floor/circuit, +/area/station/tcommsat/server) +"qlS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/head/cone{ + pixel_x = 6; + pixel_y = -8 + }, +/obj/effect/decal/cleanable/blood, +/obj/machinery/light/broken/directional/north, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "qlV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -48556,12 +49388,20 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"qme" = ( -/obj/machinery/atmospherics/components/binary/volume_pump{ +"qmh" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ dir = 8 }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "qmv" = ( /obj/machinery/door/airlock/maintenance{ name = "Atmospherics Maintenance" @@ -48569,15 +49409,6 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/general, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"qmy" = ( -/obj/effect/turf_decal/tile/blue, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white/corner{ - dir = 8 - }, -/area/station/hallway/secondary/dock) "qmz" = ( /obj/structure/table/wood, /turf/open/floor/wood, @@ -48594,6 +49425,16 @@ }, /turf/open/floor/iron/smooth, /area/station/service/library) +"qmO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/light/small/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/xenobiology) "qmT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/effect/turf_decal/caution/stand_clear, @@ -48636,20 +49477,20 @@ }, /turf/open/floor/iron/dark/small, /area/station/security/processing) -"qnt" = ( -/obj/machinery/power/solar{ - id = "forestarboard"; - name = "Fore-Starboard Solar Array" - }, -/obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/fore) -"qnJ" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"qnT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/sign/departments/chemistry/pharmacy/directional/west, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/primary/aft) "qnU" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -48660,16 +49501,29 @@ }, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/qm) -"qod" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) -"qoj" = ( -/obj/structure/bodycontainer/morgue{ - dir = 8 +"qnZ" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) +"qob" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 4 }, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) +/area/station/science/lower) +"qoo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/public/glass{ + name = "Dorms" + }, +/turf/open/floor/iron/textured_half{ + dir = 1 + }, +/area/station/commons/fitness/locker_room) "qop" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -48683,18 +49537,27 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/commons/dorms) -"qoA" = ( -/obj/machinery/holopad, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "qoD" = ( /turf/closed/wall/r_wall, /area/station/command/corporate_showroom) +"qoM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/item/radio/intercom/directional/south, +/obj/machinery/atmospherics/components/trinary/mixer/flipped{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/science/ordnance/storage) +"qoR" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "qpe" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -48770,6 +49633,18 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/eighties/red, /area/station/hallway/primary/central/fore) +"qqX" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8 + }, +/obj/effect/mapping_helpers/mail_sorting/science/robotics, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 6 + }, +/area/station/science/lower) "qrb" = ( /obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, @@ -48781,32 +49656,32 @@ }, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/captain/private) -"qrm" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/eighties, -/area/station/service/abandoned_gambling_den/gaming) -"qrB" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/xenobiology) "qrJ" = ( /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/cargo/miningfoundry) +"qrK" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) +"qrL" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) "qrW" = ( /obj/machinery/portable_atmospherics/canister/plasma, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /turf/open/floor/engine/plasma, /area/station/engineering/atmos) -"qsg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/terminal, -/obj/structure/chair/stool/directional/east, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/tcommsat/server) "qsj" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/opposingcorners, @@ -48833,6 +49708,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) +"qsV" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 5 + }, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/freezerchamber) "qsY" = ( /obj/structure/chair/stool/directional/west, /obj/effect/turf_decal/siding/wood{ @@ -48880,11 +49764,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/central/greater) -"qug" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/storage/tech) "quq" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/closet/crate/cardboard, @@ -48948,15 +49827,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/security/courtroom) -"qvF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "qvL" = ( /obj/effect/turf_decal/siding/wood, /obj/item/kirbyplants/random, @@ -48970,12 +49840,6 @@ /obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"qwc" = ( -/obj/structure/broken_flooring/singular/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "qwq" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/machinery/computer/prisoner/management{ @@ -49010,6 +49874,12 @@ }, /turf/open/floor/eighties, /area/station/hallway/primary/central/fore) +"qwB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/furniture_parts, +/obj/structure/railing/corner/end, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/department/science/xenobiology) "qwC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -49042,14 +49912,6 @@ }, /turf/open/floor/iron/solarpanel/airless, /area/station/solars/port) -"qxi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/central) "qxv" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -49068,11 +49930,6 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/white/textured_large, /area/station/command/heads_quarters/cmo) -"qxP" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "qxX" = ( /obj/structure/window/spawner/directional/south, /obj/structure/flora/bush/large/style_random{ @@ -49082,13 +49939,6 @@ /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/misc/sandy_dirt, /area/station/science/research) -"qyr" = ( -/obj/effect/turf_decal/siding/wideplating/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wideplating/corner, -/turf/open/floor/wood, -/area/station/engineering/main) "qyx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/chair{ @@ -49117,12 +49967,6 @@ /obj/structure/railing, /turf/open/space/basic, /area/space/nearstation) -"qyO" = ( -/obj/structure/broken_flooring/corner/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "qyT" = ( /turf/closed/wall, /area/station/hallway/secondary/exit/departure_lounge) @@ -49238,11 +50082,23 @@ /obj/machinery/bluespace_vendor/directional/north, /turf/open/floor/iron, /area/station/commons/dorms) -"qAl" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +"qAk" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/science/research) "qAn" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -49284,6 +50140,19 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"qAv" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"qAB" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "qAJ" = ( /obj/effect/spawner/random/structure/closet_private, /obj/machinery/light/small/directional/east, @@ -49330,6 +50199,14 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/plating, /area/station/cargo/boutique) +"qBB" = ( +/obj/structure/cable, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted, +/obj/effect/turf_decal/siding/white, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "qBG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -49381,24 +50258,9 @@ /area/station/hallway/secondary/exit/departure_lounge) "qCc" = ( /obj/machinery/light/cold/directional/north, -/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"qCj" = ( -/obj/machinery/airalarm/directional/south, -/obj/item/kirbyplants/organic/applebush, -/obj/effect/turf_decal/siding/thinplating_new/terracotta/corner{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) -"qCx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "qCG" = ( /obj/effect/turf_decal/siding/white{ dir = 9 @@ -49427,25 +50289,6 @@ dir = 1 }, /area/station/cargo/lobby) -"qCJ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/table/wood, -/obj/item/paper/fluff/ids_for_dummies{ - pixel_x = 5 - }, -/obj/item/paper_bin/carbon{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/stamp/head/hop{ - pixel_x = -4; - pixel_y = 4 - }, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/hop) "qCK" = ( /obj/effect/landmark/start/botanist, /obj/effect/turf_decal/siding/thinplating_new/light{ @@ -49454,6 +50297,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/small, /area/station/service/hydroponics) +"qCN" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Blast Door" + }, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/science/xenobiology) "qCT" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -49475,32 +50327,28 @@ }, /turf/open/floor/iron, /area/station/security/warden) -"qDd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Theater Greenroom" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ +"qCY" = ( +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/iron/textured_half{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/area/station/service/greenroom) -"qDi" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden, /turf/open/floor/wood/tile, /area/station/tcommsat/server) +"qDr" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/dark_red/fourcorners, +/obj/item/restraints/handcuffs, +/obj/machinery/light/small/directional/west, +/obj/machinery/airalarm/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs) "qDx" = ( /obj/structure/toilet, /obj/structure/sign/poster/contraband/random/directional/north, @@ -49593,9 +50441,9 @@ /turf/open/floor/iron/dark/small, /area/station/security/checkpoint/customs) "qEB" = ( -/obj/effect/turf_decal/siding/blue/corner, -/turf/open/floor/iron/white/small, -/area/station/medical/storage) +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/science/lower) "qEO" = ( /obj/machinery/camera/autoname/directional/east, /obj/machinery/status_display/evac/directional/east, @@ -49620,16 +50468,15 @@ /obj/machinery/door/poddoor/shutters, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"qFb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"qER" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/lower) +/obj/machinery/chem_dispenser, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) "qFc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -49661,6 +50508,20 @@ }, /turf/open/floor/iron/dark, /area/station/medical/chemistry) +"qFz" = ( +/obj/structure/hedge, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"qFT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/stairs, +/area/station/hallway/primary/central/fore) "qGc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/firedoor, @@ -49681,22 +50542,6 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/central/fore) -"qGf" = ( -/obj/structure/flora/bush/flowers_pp{ - pixel_y = 3 - }, -/obj/effect/dummy/lighting_obj, -/obj/effect/light_emitter/fake_outdoors, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/grass/Airless, -/area/station/hallway/primary/central/aft) -"qGk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/diagonal, -/area/station/ai_monitored/command/storage/eva) "qGu" = ( /obj/effect/turf_decal/siding/dark_red, /obj/item/radio/intercom/directional/south, @@ -49705,17 +50550,16 @@ }, /turf/open/floor/stone, /area/station/command/heads_quarters/hos) -"qGB" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"qGw" = ( +/obj/effect/turf_decal/siding{ + dir = 6 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/blood/gibs/down, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) +/obj/item/assembly/igniter, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white/small, +/area/station/science/lobby) "qGH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -49725,6 +50569,27 @@ /obj/effect/turf_decal/siding/wideplating/dark/corner, /turf/open/floor/iron, /area/station/security) +"qGV" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/purple{ + dir = 1 + }, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/science/genetics) +"qHe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/diagonal, +/area/station/ai_monitored/command/storage/eva) "qHr" = ( /obj/effect/turf_decal/weather/dirt{ dir = 8 @@ -49734,6 +50599,10 @@ /obj/machinery/status_display/ai/directional/west, /turf/open/floor/grass, /area/station/service/chapel) +"qHt" = ( +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "qHH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/firealarm/directional/south, @@ -49748,13 +50617,11 @@ }, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) -"qHY" = ( -/obj/machinery/firealarm/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/lower) +"qHP" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark/corner, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron, +/area/station/security/courtroom) "qIb" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock{ @@ -49777,6 +50644,7 @@ /turf/closed/wall, /area/station/medical/cryo) "qIk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, /turf/open/floor/circuit/telecomms/mainframe, /area/station/science/xenobiology) "qIp" = ( @@ -49791,35 +50659,10 @@ /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) -"qID" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/status_display/evac/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/lower) -"qIM" = ( -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/siding/corner{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) "qIQ" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"qIZ" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/broken_flooring/pile/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/hallway/secondary/dock) "qJq" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -49856,6 +50699,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/cafeteria, /area/station/science/circuits) +"qKl" = ( +/obj/structure/steam_vent, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) +"qKt" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/science/xenobiology) "qKx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -49922,6 +50776,14 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) +"qLw" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "qLA" = ( /obj/structure/chair{ dir = 4 @@ -49933,6 +50795,11 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) +"qLB" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/science/ordnance/testlab) "qLD" = ( /obj/structure/chair{ name = "Defense" @@ -49943,11 +50810,17 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron, /area/station/security/courtroom) -"qLE" = ( +"qLJ" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) +/obj/structure/cable, +/obj/machinery/light/floor, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/engineering/storage/tech) "qLU" = ( /obj/effect/turf_decal/tile/green/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -49970,24 +50843,19 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) -"qMb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/medical/pharmacy) "qMj" = ( /obj/effect/turf_decal/bot/right, /turf/open/floor/engine, /area/station/engineering/atmospherics_engine) -"qMp" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/security/courtroom) +"qMC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/small, +/area/station/commons/fitness/locker_room) +"qMD" = ( +/turf/open/floor/wood, +/area/station/hallway/secondary/entry) "qMG" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable, @@ -50014,6 +50882,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) +"qMO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "qMP" = ( /obj/structure/closet/firecloset, /obj/structure/sign/poster/official/random/directional/north, @@ -50035,6 +50909,20 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"qNI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/highsecurity{ + name = "AI Upload" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_half, +/area/station/ai_monitored/turret_protected/ai_upload) "qNL" = ( /obj/machinery/computer/security{ dir = 8 @@ -50068,14 +50956,6 @@ }, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) -"qOG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/wideplating_new/terracotta{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/maintenance/central/lesser) "qOJ" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -50122,15 +51002,20 @@ /obj/machinery/door/firedoor/heavy, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/office) -"qPJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) +"qPp" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/stairs, +/area/station/hallway/primary/central/fore) "qPN" = ( /turf/closed/wall/r_wall, /area/station/security/prison/safe) +"qPV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/steam_vent, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "qQi" = ( /obj/structure/chair/stool/directional/north, /obj/effect/turf_decal/siding/yellow{ @@ -50152,14 +51037,6 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) -"qQp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/green{ - dir = 6 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/medical/chemistry) "qQv" = ( /turf/open/floor/iron, /area/station/security/prison/rec) @@ -50186,37 +51063,17 @@ dir = 1 }, /area/station/science/lower) -"qQR" = ( -/obj/structure/table/wood, -/obj/machinery/light/small/directional/south, -/obj/machinery/computer/security/telescreen/engine/directional/west, -/obj/machinery/status_display/evac/directional/south, -/obj/item/radio/off{ - pixel_x = 1; - pixel_y = 3 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/ce) -"qRa" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) "qRb" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/structure/railing, /turf/open/floor/iron, /area/station/engineering/atmos) -"qRo" = ( -/obj/machinery/door/airlock/public{ - name = "Abandoned Dock" +"qRh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/secondary/dock) +/area/station/hallway/secondary/entry) "qRs" = ( /obj/structure/chair/stool/directional/north, /obj/machinery/light/small/directional/south, @@ -50236,12 +51093,28 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/iron, /area/station/security/prison/rec) +"qRF" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/security{ + dir = 8 + }, +/obj/machinery/camera/directional/east, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/light_switch/directional/south, +/turf/open/floor/iron/dark, +/area/station/command/corporate_dock) "qRN" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, /obj/machinery/holopad, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"qRO" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "qRU" = ( /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ dir = 8 @@ -50268,11 +51141,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/carpet, /area/station/service/library) -"qSh" = ( -/obj/machinery/firealarm/directional/east, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "qSk" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -50286,12 +51154,28 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/port) +"qSx" = ( +/obj/machinery/firealarm/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side, +/area/station/science/lower) "qSC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line, /obj/machinery/portable_atmospherics/canister/nitrogen, /turf/open/floor/iron/smooth_large, /area/station/science/ordnance/storage) +"qSE" = ( +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 1 + }, +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "qSF" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -50303,21 +51187,34 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/iron/smooth_large, /area/station/cargo/warehouse) +"qSO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/aft) "qSZ" = ( /obj/structure/hedge, /obj/machinery/light/cold/directional/west, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) -"qTb" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/light/floor, +"qTc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 8 +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/area/station/science/research) +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "qTe" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -50329,20 +51226,6 @@ dir = 8 }, /area/station/science/research) -"qTk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"qTv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/science/xenobiology) "qTz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, @@ -50379,16 +51262,11 @@ /obj/effect/turf_decal/loading_area, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"qUf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +"qUa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "qUm" = ( /obj/structure/table/glass, /obj/item/folder/yellow, @@ -50416,6 +51294,9 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) +"qUD" = ( +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/department/science/xenobiology) "qUE" = ( /obj/machinery/pipedispenser/disposal/transit_tube, /obj/effect/turf_decal/stripes/box, @@ -50432,23 +51313,6 @@ /obj/item/kirbyplants/organic/plant24, /turf/open/floor/iron/smooth, /area/station/engineering/main) -"qUL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"qUR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "qUS" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 4 @@ -50458,22 +51322,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) -"qUZ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/turf/open/space/basic, -/area/station/solars/starboard/fore) -"qVa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "qVm" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 8 @@ -50489,6 +51337,17 @@ /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) +"qVC" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/broken_flooring/pile/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "qVJ" = ( /obj/item/clothing/head/cone{ pixel_x = -4; @@ -50527,6 +51386,16 @@ "qVP" = ( /turf/closed/wall/r_wall, /area/station/maintenance/port/lesser) +"qVQ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron/smooth, +/area/station/command/bridge) "qVR" = ( /turf/open/floor/wood, /area/station/cargo/boutique) @@ -50538,13 +51407,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/wood, /area/station/cargo/boutique) -"qWg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Bathrooms" - }, -/turf/open/floor/iron/textured_half, -/area/station/commons/toilet/restrooms) "qWh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -50579,21 +51441,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"qWJ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side, +/area/station/science/research) "qWL" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "Bridge Blast Door" - }, -/obj/machinery/door/airlock/command{ - name = "Council Chambers" - }, -/turf/open/floor/iron/dark/textured_half{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/area/station/command/heads_quarters/hop) +/turf/open/floor/iron/cafeteria, +/area/station/science/breakroom) "qWQ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -50647,21 +51505,6 @@ /obj/effect/mapping_helpers/airlock/access/any/command/maintenance, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) -"qXh" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/dock) "qXj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -50716,6 +51559,24 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"qXT" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron, +/area/station/security/courtroom) +"qYb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "qYh" = ( /obj/structure/closet/crate/silvercrate, /obj/effect/turf_decal/bot_white/left, @@ -50759,12 +51620,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/small, /area/station/hallway/secondary/service) -"qYv" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/airalarm/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/cafeteria, -/area/station/science/breakroom) "qYy" = ( /obj/structure/cable, /obj/structure/barricade/wooden, @@ -50851,16 +51706,6 @@ /obj/structure/sign/departments/medbay/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"qZw" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass{ - name = "Dormatories" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/commons/fitness/locker_room) "qZy" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -50882,6 +51727,17 @@ }, /turf/open/floor/tram, /area/station/maintenance/port/aft) +"qZM" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/item/clothing/head/cone{ + pixel_x = 6; + pixel_y = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "qZU" = ( /obj/machinery/portable_atmospherics/canister/plasma, /obj/effect/turf_decal/stripes/white/line{ @@ -50956,13 +51812,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) -"raZ" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "rbc" = ( /obj/structure/transport/linear/tram, /obj/structure/tram, @@ -50971,6 +51820,10 @@ }, /turf/open/floor/tram, /area/station/security/tram) +"rbf" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "rbj" = ( /obj/item/radio/intercom/directional/east, /obj/structure/disposalpipe/trunk{ @@ -50983,6 +51836,14 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/medical/pharmacy) +"rbB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "rbD" = ( /obj/machinery/door/airlock/medical/glass{ name = "Primary Treatment Centre" @@ -50993,12 +51854,6 @@ }, /turf/open/floor/iron/white/small, /area/station/medical/treatment_center) -"rbH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/science/ordnance/testlab) "rbI" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10 @@ -51007,12 +51862,6 @@ /obj/machinery/shower/directional/east, /turf/open/floor/iron/dark/small, /area/station/engineering/main) -"rbO" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "rbT" = ( /obj/effect/landmark/navigate_destination/cargo, /obj/effect/turf_decal/tile/brown/half/contrasted{ @@ -51021,14 +51870,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"rbW" = ( -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/general, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) "rce" = ( /obj/machinery/camera{ c_tag = "Xenobiology - Cell 3"; @@ -51059,14 +51900,6 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"rci" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "rcl" = ( /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/engine, @@ -51100,6 +51933,13 @@ /obj/machinery/light/small/dim/directional/east, /turf/open/floor/iron, /area/station/maintenance/department/engine/atmos) +"rdm" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "rds" = ( /obj/machinery/computer/slot_machine{ pixel_y = 2 @@ -51115,20 +51955,6 @@ "rdw" = ( /turf/open/floor/eighties/red, /area/station/service/abandoned_gambling_den/gaming) -"rdA" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/siding/wideplating_new/terracotta{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/maintenance/central/lesser) -"rdH" = ( -/obj/machinery/keycard_auth/wall_mounted/directional/south, -/turf/open/floor/mineral/titanium, -/area/station/command/heads_quarters/ce) "rdM" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -51161,13 +51987,6 @@ }, /turf/open/floor/iron/white/small, /area/station/security/warden) -"reg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/steam_vent, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "reh" = ( /turf/closed/wall/r_wall, /area/station/science/robotics/lab) @@ -51182,6 +52001,19 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"rer" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/science/xenobiology) "rev" = ( /obj/machinery/requests_console/directional/south{ department = "Security"; @@ -51205,17 +52037,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/smooth_large, /area/station/maintenance/central/lesser) -"rez" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ - dir = 1 - }, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) -"reE" = ( -/obj/machinery/holopad, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) "reG" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -51244,6 +52065,10 @@ "reM" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/escape) +"reN" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/turf/closed/wall/r_wall, +/area/station/science/ordnance/burnchamber) "reS" = ( /obj/effect/spawner/random/trash, /obj/effect/decal/cleanable/dirt, @@ -51258,10 +52083,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron, /area/station/security/execution/transfer) -"rff" = ( -/obj/effect/spawner/random/trash/caution_sign, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "rfi" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -51280,11 +52101,10 @@ /obj/effect/turf_decal/trimline/blue/end, /turf/open/floor/iron/dark, /area/station/medical/medbay/lobby) -"rfB" = ( -/obj/item/kirbyplants/random, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) +"rfu" = ( +/obj/item/shovel, +/turf/open/misc/dirt/station, +/area/station/medical/morgue) "rfD" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -51293,12 +52113,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, /area/station/science/xenobiology) -"rfO" = ( -/obj/item/radio/intercom/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/command/heads_quarters/rd) "rfP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -51310,32 +52124,48 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"rfW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ +"rfY" = ( +/obj/structure/table/glass, +/obj/effect/turf_decal/siding/wood{ dir = 8 }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/item/phone{ + desc = "Supposedly a direct line to Nanotrasen Central Command. It's not even plugged in."; + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/radio{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/structure/cable, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) +"rgb" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/smooth_large, +/area/station/science/auxlab/firing_range) +"rgz" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/light/cold/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/area/station/hallway/primary/starboard) "rgA" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"rgK" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 8 - }, -/obj/item/kirbyplants/random/fullysynthetic, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "rgM" = ( /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/glass, @@ -51409,12 +52239,25 @@ }, /turf/open/floor/iron, /area/station/cargo/lobby) -"rhL" = ( -/obj/machinery/photocopier, +"rhH" = ( +/obj/effect/turf_decal/tile/blue, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/white/corner{ + dir = 8 + }, +/area/station/hallway/secondary/dock) +"rhX" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth_large, +/area/station/science/auxlab/firing_range) "rig" = ( /obj/machinery/door/poddoor/massdriver_chapel, /turf/open/floor/plating, @@ -51424,43 +52267,15 @@ /obj/machinery/camera/directional/north, /turf/open/misc/dirt/station, /area/station/service/chapel) -"riq" = ( -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "Secure Creature Pen"; - req_access = list("research") - }, -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/xenobiology) "rir" = ( /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) -"riS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "riV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) -"rji" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "rjo" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -51516,24 +52331,18 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/central/fore) -"rkI" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Tech Storage" - }, -/obj/machinery/door/firedoor, +"rkr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 8 }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, -/obj/effect/mapping_helpers/airlock/access/all/command/eva, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/smooth_half{ - dir = 1 +/turf/open/floor/iron/dark/side{ + dir = 8 }, -/area/station/engineering/storage/tech) +/area/station/hallway/secondary/construction) "rkM" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 6 @@ -51541,6 +52350,31 @@ /obj/machinery/light/no_nightlight/directional/north, /turf/open/floor/iron/small, /area/station/engineering/atmos/pumproom) +"rkN" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Engine Coolant Bypass" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"rkO" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/starboard) "rlb" = ( /obj/item/kirbyplants/random/fullysynthetic, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -51561,11 +52395,6 @@ dir = 1 }, /area/station/commons/dorms) -"rln" = ( -/obj/item/kirbyplants/random, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "rlq" = ( /obj/structure/bed{ dir = 4 @@ -51584,18 +52413,17 @@ "rlr" = ( /turf/closed/wall, /area/station/medical/storage) +"rlH" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) "rlM" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/air_sensor/ordnance_burn_chamber, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) -"rma" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "rmc" = ( /obj/effect/turf_decal/tile/brown/half/contrasted, /obj/structure/disposalpipe/segment, @@ -51617,22 +52445,6 @@ dir = 8 }, /area/station/engineering/main) -"rmX" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/iron, -/area/station/security/courtroom) -"rnc" = ( -/obj/structure/cable, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 9 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/herringbone, -/area/station/security/courtroom) "rnr" = ( /obj/effect/turf_decal/weather/dirt{ dir = 1 @@ -51670,6 +52482,18 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/wood/tile, /area/station/maintenance/port/lesser) +"roz" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"roC" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/stairs{ + dir = 8 + }, +/area/station/science/xenobiology) "roD" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, @@ -51690,19 +52514,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) -"rpc" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/science/xenobiology) "rpg" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -51783,12 +52594,6 @@ "rqw" = ( /turf/closed/wall, /area/station/commons/dorms) -"rqD" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "rqF" = ( /obj/structure/flora/bush/jungle/a/style_3, /turf/open/misc/dirt/station, @@ -51798,20 +52603,13 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"rrb" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ +"rrg" = ( +/obj/effect/turf_decal/siding{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/science/xenobiology) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/small, +/area/station/science/lobby) "rro" = ( /obj/structure/railing, /obj/structure/disposalpipe/segment{ @@ -51822,13 +52620,6 @@ dir = 4 }, /area/station/engineering/main) -"rrp" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "rrt" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -51842,6 +52633,14 @@ }, /turf/open/floor/iron/small, /area/station/engineering/atmos/pumproom) +"rrE" = ( +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "rrJ" = ( /obj/structure/filingcabinet/filingcabinet, /obj/machinery/power/apc/auto_name/directional/west, @@ -51875,35 +52674,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"rsg" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/item/radio/intercom/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) -"rsl" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/crystal, -/obj/item/stock_parts/subspace/crystal, -/obj/item/stock_parts/subspace/crystal, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) -"rsr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/station/command/heads_quarters/ce) "rss" = ( /obj/machinery/portable_atmospherics/canister/plasma, /obj/effect/turf_decal/stripes/white/line{ @@ -51934,49 +52704,11 @@ "rsL" = ( /turf/closed/wall/r_wall, /area/station/maintenance/starboard/fore) -"rsX" = ( -/obj/effect/turf_decal/siding{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lab) -"rsZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/small, -/area/station/commons/fitness/locker_room) -"rta" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "rth" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/large, /area/station/command/heads_quarters/captain) -"rto" = ( -/obj/structure/table/glass, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 11; - pixel_y = 6 - }, -/obj/item/folder/blue{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) "rtH" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52039,15 +52771,6 @@ dir = 4 }, /area/station/science/ordnance/testlab) -"ruh" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 4 - }, -/obj/machinery/camera/directional/south{ - c_tag = "atmospherics - lower" - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) "rui" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -52058,13 +52781,17 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/checkpoint/engineering) -"ruB" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"ruu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/cold/directional/north, +/obj/effect/landmark/start/hangover, +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/lower) +/turf/open/floor/plating, +/area/station/science/lobby) "ruC" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/tile/green/anticorner/contrasted, @@ -52077,6 +52804,14 @@ "ruD" = ( /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"ruG" = ( +/obj/structure/broken_flooring/pile/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/alien/weeds, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "ruS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -52087,9 +52822,31 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"ruT" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "abandoned_lab"; + name = "Abandoned Lab Shutters" + }, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "ruY" = ( /turf/open/floor/plating, /area/station/maintenance/fore/lesser) +"rva" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/dark_red/fourcorners, +/obj/machinery/recharger, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs) +"rvh" = ( +/obj/machinery/firealarm/directional/east, +/obj/machinery/light/small/directional/east, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "rvp" = ( /turf/closed/mineral/random/stationside, /area/station/maintenance/hallway/abandoned_command) @@ -52123,6 +52880,17 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) +"rvE" = ( +/obj/machinery/button/door/directional/east{ + id = "AuxToilet3"; + name = "Lock Control"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/structure/toilet, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/maintenance/department/science/xenobiology) "rvI" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 @@ -52133,6 +52901,19 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) +"rvJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) +"rvU" = ( +/obj/machinery/newscaster/directional/south, +/obj/structure/table, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/iron, +/area/station/commons/storage/art) "rvX" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/left/directional/south{ @@ -52154,16 +52935,19 @@ /obj/effect/turf_decal/tile/green/opposingcorners, /turf/open/floor/iron/dark, /area/station/medical/chemistry) +"rwb" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "rwg" = ( /turf/open/floor/iron/white/side{ dir = 6 }, /area/station/science/research) -"rwo" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/machinery/camera/directional/west, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "rwq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -52200,6 +52984,15 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/plating, /area/station/maintenance/department/prison) +"rwQ" = ( +/obj/machinery/duct, +/obj/machinery/holopad, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/white/small, +/area/station/medical/storage) +"rwY" = ( +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "rxa" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -52227,19 +53020,6 @@ /obj/item/razor, /turf/open/floor/iron/dark/small, /area/station/security/execution/education) -"rxB" = ( -/obj/structure/curtain/cloth/fancy/mechanical/start_closed{ - desc = "A set of curtains serving as a fancy theater backdrop. They can only be opened by a button."; - id = "abandoned_brewery"; - name = "Abandoned Brewery" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/maintenance/department/science/xenobiology) "rxD" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/effect/turf_decal/tile/blue, @@ -52285,6 +53065,15 @@ /obj/item/modular_computer/laptop, /turf/open/floor/iron/grimy, /area/station/science/cubicle) +"rxW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "rxX" = ( /obj/structure/closet{ name = "Paramedic Supplies" @@ -52326,14 +53115,17 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"ryk" = ( -/obj/machinery/status_display/ai/directional/north, +"ryn" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/area/station/science/research) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "ryr" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -52359,6 +53151,17 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) +"ryP" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/science/xenobiology) "ryW" = ( /obj/machinery/camera/autoname/directional/east, /obj/effect/turf_decal/tile/neutral, @@ -52374,6 +53177,14 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron, /area/station/cargo/storage) +"rza" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/cafeteria, +/area/station/science/breakroom) "rzb" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -52387,9 +53198,6 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/binary/valve/digital{ - dir = 4 - }, /turf/open/floor/iron/white/small, /area/station/science/ordnance/storage) "rze" = ( @@ -52398,6 +53206,17 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) +"rzk" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "rzm" = ( /obj/machinery/camera/directional/west{ c_tag = "Engineering - Decontamination B" @@ -52407,6 +53226,18 @@ }, /turf/open/floor/iron/smooth_large, /area/station/engineering/break_room) +"rzq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) +"rzI" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/lawyer, +/turf/open/floor/iron/dark/herringbone, +/area/station/security/courtroom) "rzJ" = ( /obj/structure/chair/sofa/bench/left{ dir = 4 @@ -52418,13 +53249,6 @@ dir = 1 }, /area/station/hallway/secondary/entry) -"rzO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "rzX" = ( /obj/structure/hedge, /obj/machinery/status_display/supply{ @@ -52441,6 +53265,13 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"rAe" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "rAt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -52484,6 +53315,14 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/plating, /area/station/engineering/gravity_generator) +"rAJ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "rAR" = ( /obj/structure/cable, /obj/machinery/door/airlock/security/glass{ @@ -52492,12 +53331,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/textured_half, /area/station/security/brig/entrance) -"rBc" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "rBe" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -52507,27 +53340,15 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"rBq" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/obj/item/restraints/handcuffs, -/obj/machinery/light/small/directional/west, -/obj/machinery/airalarm/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs) +"rBg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/ordnance/testlab) "rBy" = ( /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, /area/station/security/prison) -"rBz" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "rBE" = ( /obj/machinery/airalarm/directional/south, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -52553,15 +53374,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/dorms) -"rBY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "rCa" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/corner{ dir = 1 }, @@ -52602,6 +53416,13 @@ dir = 4 }, /area/station/hallway/secondary/entry) +"rDn" = ( +/obj/structure/sign/warning/engine_safety/directional/north, +/obj/machinery/light/cold/dim/directional/north, +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/turf/open/floor/iron/small, +/area/station/engineering/break_room) "rDs" = ( /obj/machinery/door/airlock/mining/glass{ name = "Filing Room" @@ -52620,18 +53441,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"rDD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"rDF" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Applied Sciences" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/corner, -/area/station/commons/dorms) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/textured_half, +/area/station/science/lobby) "rDP" = ( /obj/item/kirbyplants/random/fullysynthetic, /obj/effect/turf_decal/tile/dark_red/opposingcorners, @@ -52689,6 +53510,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"rEN" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/computer/pod/old/mass_driver_controller/ordnancedriver{ + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/science/ordnance/testlab) "rEV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52703,17 +53535,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"rEY" = ( -/obj/effect/turf_decal/tile/blue, -/obj/machinery/light/directional/north, -/obj/structure/filingcabinet/chestdrawer{ - pixel_y = 2 - }, -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/iron/dark/textured_edge{ - dir = 1 - }, -/area/station/command/heads_quarters/hop) "rFb" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/hidden, /obj/effect/turf_decal/tile/yellow, @@ -52721,6 +53542,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/smooth, /area/station/engineering/main) +"rFi" = ( +/obj/item/kirbyplants/random, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "rFm" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -52733,17 +53559,6 @@ /obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"rFp" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/computer/pod/old/mass_driver_controller/ordnancedriver{ - pixel_x = 24 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/science/ordnance/testlab) "rFv" = ( /obj/structure/railing{ dir = 1 @@ -52773,19 +53588,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_dark, /area/station/science/xenobiology) -"rFH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/window/right/directional/east{ - name = "Research Delivery"; - req_access = list("science") - }, -/obj/structure/cable, -/turf/open/floor/iron/white/side{ - dir = 6 - }, -/area/station/science/research) "rFU" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -52796,16 +53598,12 @@ /obj/effect/turf_decal/trimline/blue/filled/corner, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"rGp" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Testing Chamber" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) +"rGu" = ( +/obj/structure/lattice/catwalk, +/obj/item/stack/cable_coil, +/obj/structure/cable, +/turf/open/space/basic, +/area/station/solars/starboard/fore) "rGB" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -52814,21 +53612,6 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"rGI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"rGO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/screwdriver, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/construction) "rHe" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -52866,6 +53649,16 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/engine/atmos) +"rHF" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Recreation" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/textured_half, +/area/station/commons/fitness/recreation/entertainment) "rHH" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -52881,6 +53674,14 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"rHU" = ( +/obj/machinery/light/cold/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/science/lobby) "rHY" = ( /obj/effect/turf_decal/siding/wideplating_new/terracotta{ dir = 1 @@ -52895,6 +53696,12 @@ /obj/structure/reagent_dispensers/wall/peppertank/directional/north, /turf/open/floor/iron, /area/station/security/lockers) +"rIh" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/maintenance/department/engine/atmos) "rIn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -52924,6 +53731,20 @@ "rIY" = ( /turf/closed/wall/r_wall, /area/station/construction/mining/aux_base) +"rJc" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/power/smes/full, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/construction) +"rJk" = ( +/obj/machinery/light/cold/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/research) "rJo" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -52935,13 +53756,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/prison) -"rJw" = ( -/mob/living/carbon/human/species/monkey{ - name = "George" - }, -/obj/structure/cable, -/turf/open/floor/grass, -/area/station/science/xenobiology) +"rJz" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "rJB" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -52966,6 +53784,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/storage) +"rJU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/light/cold/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "rJW" = ( /obj/machinery/suit_storage_unit/hos, /obj/effect/decal/cleanable/dirt, @@ -52979,11 +53805,25 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"rKh" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/camera/directional/west, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "rKn" = ( /obj/structure/cable, /obj/item/banner/cargo, /turf/open/floor/iron/smooth, /area/station/command/heads_quarters/qm) +"rKo" = ( +/obj/structure/chair/comfy/brown{ + buildstackamount = 0; + color = "#c45c57"; + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) "rKv" = ( /obj/structure/broken_flooring/singular/directional/east, /turf/open/floor/iron, @@ -52994,22 +53834,6 @@ }, /turf/open/floor/iron, /area/station/science/cytology) -"rKE" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/lower) -"rKR" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/engineering/main) "rKZ" = ( /obj/structure/railing, /obj/machinery/light/small/dim/directional/north, @@ -53027,16 +53851,6 @@ }, /turf/open/floor/iron/small, /area/station/engineering/break_room) -"rLk" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 10 - }, -/turf/open/floor/engine, -/area/station/science/explab) "rLp" = ( /obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ @@ -53048,14 +53862,17 @@ /obj/machinery/door/poddoor/incinerator_ordmix, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) -"rLt" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/medical_all, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/effect/turf_decal/bot, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) +"rLu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/research{ + name = "Xenobiology Secure Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/xenobiology) "rLx" = ( /obj/effect/turf_decal/siding/thinplating/terracotta, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53079,11 +53896,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/command/nuke_storage) -"rMb" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) "rMf" = ( /obj/structure/table, /obj/machinery/computer/arcade/orion_trail{ @@ -53120,6 +53932,22 @@ }, /turf/open/space/basic, /area/space/nearstation) +"rMq" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Secure Tech Storage" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/obj/structure/cable, +/turf/open/floor/iron/smooth_half{ + dir = 1 + }, +/area/station/engineering/storage/tech) "rMt" = ( /obj/structure/flora/bush/flowers_br/style_random, /obj/structure/flora/rock/pile/style_random, @@ -53147,14 +53975,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) -"rNd" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "rNn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53165,6 +53985,23 @@ /obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/security) +"rNt" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm/directional/east, +/obj/machinery/duct, +/turf/open/floor/iron/white/small, +/area/station/commons/toilet/restrooms) +"rNx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue, +/obj/structure/disposalpipe/junction/flip, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/fore) "rNB" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/catwalk_floor/iron_smooth, @@ -53187,6 +54024,16 @@ /obj/effect/spawner/random/entertainment/arcade, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) +"rNK" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side, +/area/station/science/xenobiology) "rNL" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -53194,6 +54041,12 @@ /obj/structure/displaycase/trophy, /turf/open/floor/wood/parquet, /area/station/service/library) +"rNM" = ( +/obj/effect/turf_decal/siding, +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/lab) "rNN" = ( /obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/neutral{ @@ -53222,11 +54075,18 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/wood, /area/station/commons/fitness/recreation) -"rOW" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/server) +"rOL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/research{ + name = "Augment Corridor" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/robotics/augments) "rOX" = ( /turf/closed/wall, /area/station/science/robotics/augments) @@ -53328,25 +54188,26 @@ /obj/structure/flora/bush/flowers_br/style_random, /turf/open/floor/grass, /area/station/service/chapel) +"rPZ" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/command/bridge) "rQi" = ( /turf/closed/wall/r_wall, /area/station/engineering/main) -"rQr" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/spawner/random/entertainment/dice, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) -"rQw" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) "rQC" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/service/chapel/office) +"rQD" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/smooth_large, +/area/station/ai_monitored/command/storage/eva) "rQF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53375,6 +54236,18 @@ dir = 1 }, /area/station/hallway/secondary/exit/departure_lounge) +"rQX" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/floor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ + dir = 9 + }, +/turf/open/floor/iron/dark, +/area/station/tcommsat/server) "rRa" = ( /obj/effect/spawner/random/trash, /obj/effect/decal/cleanable/dirt, @@ -53404,6 +54277,13 @@ }, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/qm) +"rRm" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "rRq" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/dark_red/opposingcorners, @@ -53432,17 +54312,31 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/courtroom) +"rRZ" = ( +/obj/effect/turf_decal/weather/snow, +/obj/machinery/light/small/directional/north, +/obj/machinery/icecream_vat, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) +"rSe" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured, +/area/station/command/meeting_room) "rSi" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 8 }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) -"rSt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "rSy" = ( /obj/machinery/door/airlock{ id_tag = "CabinS"; @@ -53450,15 +54344,6 @@ }, /turf/open/floor/carpet/green, /area/station/commons/dorms) -"rSz" = ( -/obj/structure/chair/comfy/brown{ - buildstackamount = 0; - color = "#c45c57"; - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) "rSB" = ( /obj/structure/railing{ dir = 8 @@ -53552,28 +54437,15 @@ /obj/item/assembly/mousetrap/armed, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) -"rUI" = ( -/obj/item/radio/intercom/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 4 +"rVf" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/area/station/science/lobby) -"rUR" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/science/xenobiology) -"rUV" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=7.0-Arrivals-Pharmacy"; - location = "6.3-Arrivals" - }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron, -/area/station/hallway/secondary/entry) +/area/station/hallway/primary/central/fore) "rVj" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/cold/directional/north, @@ -53612,6 +54484,15 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) +"rVy" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/smooth_large, +/area/station/science/auxlab/firing_range) "rVH" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/structure/table/glass, @@ -53637,6 +54518,24 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"rVM" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/broken_flooring/singular/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) +"rVN" = ( +/obj/machinery/computer/security/telescreen/entertainment/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "rVT" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -53644,24 +54543,33 @@ }, /turf/open/floor/iron/dark, /area/station/security/processing) +"rVX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "rWa" = ( /obj/structure/closet, /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/smooth, /area/station/cargo/lobby) -"rWm" = ( -/obj/machinery/camera/directional/west, +"rWd" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Chemistry Lab" }, -/area/station/science/lobby) -"rWr" = ( -/obj/structure/table, -/obj/item/flatpack/flatpacker, -/turf/open/floor/iron/dark, -/area/station/science/lab) +/obj/effect/turf_decal/delivery/red, +/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, +/turf/open/floor/iron/dark/small, +/area/station/medical/chemistry) "rWs" = ( /obj/effect/turf_decal/siding/brown{ dir = 5 @@ -53744,13 +54652,6 @@ /obj/effect/turf_decal/delivery/white, /turf/open/floor/iron/dark/side, /area/station/cargo/sorting) -"rWS" = ( -/obj/item/kirbyplants/random, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) "rWU" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, @@ -53764,14 +54665,9 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "rXv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/hallway/secondary/command) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) "rXw" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -53782,6 +54678,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"rXD" = ( +/obj/effect/turf_decal/siding/thinplating_new/terracotta, +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/obj/item/kirbyplants/organic/applebush, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/meeting_room) "rXW" = ( /obj/structure/flora/bush/flowers_yw, /obj/machinery/door/window/left/directional/west{ @@ -53822,13 +54724,6 @@ /obj/structure/flora/bush/flowers_yw/style_3, /turf/open/floor/grass, /area/station/service/chapel) -"rYx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wideplating/dark, -/turf/open/floor/iron/small, -/area/station/service/barber) "rYD" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/air_input, /turf/open/floor/engine/air, @@ -53889,16 +54784,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/electrical) -"rZw" = ( -/obj/structure/table/glass, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) "rZz" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/neutral/line, @@ -53950,43 +54835,38 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"saA" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/cytology) "saL" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/light/small/directional/west, /turf/open/floor/wood/parquet, /area/station/service/library) "saY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/science/robotics/augments) "sbq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall/r_wall, /area/station/science/ordnance/freezerchamber) -"sbx" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/cafeteria, -/area/station/hallway/secondary/exit/departure_lounge) +"sbr" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/science/cytology) "sbN" = ( /obj/machinery/rnd/server, /turf/open/floor/circuit, /area/station/science/server) +"sbS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) "sbU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -54020,6 +54900,11 @@ /obj/effect/landmark/start/research_director, /turf/open/floor/iron/grimy, /area/station/science/cubicle) +"scc" = ( +/obj/machinery/firealarm/directional/west, +/obj/structure/urinal/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) "scj" = ( /turf/closed/wall/r_wall, /area/station/science/lower) @@ -54088,13 +54973,11 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"sdm" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"sdE" = ( +/obj/structure/hedge, +/obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/command/heads_quarters/hop) "sdZ" = ( /obj/machinery/portable_atmospherics/canister, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -54106,12 +54989,10 @@ /obj/effect/turf_decal/tile/dark/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) -"sea" = ( -/obj/effect/turf_decal/siding/white/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) +"seb" = ( +/obj/effect/landmark/start/roboticist, +/turf/open/floor/iron/smooth_large, +/area/station/science/robotics/mechbay) "seq" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/plating, @@ -54145,19 +55026,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/fore/greater) +"seV" = ( +/obj/structure/transit_tube/horizontal, +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/space/basic, +/area/space/nearstation) "sfk" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"sfq" = ( -/obj/machinery/light/cold/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 +"sfp" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id = "mechbay"; + name = "Mech Bay Shutters" }, -/area/station/science/research) +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/science/robotics/mechbay) "sfu" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/disposalpipe/segment, @@ -54213,22 +55101,50 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, /area/station/cargo/sorting) +"sfZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + name = "Research Wing" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "rdrnd"; + name = "Research and Development Shutters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/hallway/primary/starboard) +"sgd" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "sge" = ( /obj/structure/reagent_dispensers/beerkeg, /obj/item/clothing/head/costume/festive, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"sgm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"sgk" = ( +/obj/structure/closet/secure_closet/brig, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron, -/area/station/maintenance/starboard/greater) -"sgt" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/transit_tube/horizontal, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/security/execution/transfer) +"sgo" = ( +/obj/structure/broken_flooring/corner, /turf/open/floor/plating, -/area/station/maintenance/starboard/greater) +/area/station/maintenance/department/science/xenobiology) "sgw" = ( /obj/machinery/mass_driver/ordnance{ dir = 1 @@ -54241,17 +55157,20 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) -"sgJ" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark/side, -/area/station/hallway/primary/central/fore) "sgO" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/smooth_edge{ dir = 1 }, /area/station/maintenance/starboard/greater) +"sgW" = ( +/obj/machinery/light_switch/directional/south, +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/smooth, +/area/station/maintenance/solars/starboard/fore) "sgY" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -54260,18 +55179,23 @@ /obj/machinery/vending/coffee, /turf/open/floor/plating, /area/station/hallway/secondary/recreation) -"shm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/broken_flooring/singular/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "shD" = ( /turf/closed/wall, /area/station/hallway/secondary/recreation) +"shE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side, +/area/station/science/lower) +"shG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "shL" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod One"; @@ -54290,11 +55214,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/grass, /area/station/service/chapel) -"sib" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/construction) "sip" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/item/robot_suit, @@ -54304,6 +55223,12 @@ "sis" = ( /turf/open/floor/grass, /area/station/security/prison/garden) +"siC" = ( +/obj/machinery/firealarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "siG" = ( /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ dir = 1 @@ -54342,6 +55267,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"sjs" = ( +/obj/machinery/door/window/brigdoor/left/directional/north{ + name = "Command Desk"; + req_access = list("command") + }, +/obj/effect/turf_decal/siding/dark, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/command/bridge) "sjw" = ( /obj/machinery/door/airlock/external{ name = "Atmospherics External Access" @@ -54439,10 +55374,6 @@ }, /turf/open/floor/iron/white/small, /area/station/security/warden) -"skT" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) "skU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -54474,6 +55405,15 @@ "slw" = ( /turf/closed/wall, /area/station/cargo/drone_bay) +"slA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/lobby) "slG" = ( /obj/docking_port/stationary{ dir = 2; @@ -54522,20 +55462,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"smh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=23.4-Evac"; - location = "23.3-Evac" - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"smk" = ( -/obj/effect/turf_decal/siding/thinplating_new/light, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/smooth_large, -/area/station/science/robotics/mechbay) "smH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -54566,11 +55492,6 @@ /obj/machinery/rnd/experimentor, /turf/open/floor/engine, /area/station/science/explab) -"sny" = ( -/obj/machinery/holopad, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron, -/area/station/security/courtroom) "snB" = ( /obj/structure/transport/linear/tram, /obj/structure/chair{ @@ -54579,17 +55500,6 @@ /obj/structure/thermoplastic, /turf/open/floor/tram, /area/station/security/tram) -"snJ" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/light/small/directional/south, -/obj/item/kirbyplants/fern, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"snK" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark/corner, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/security/courtroom) "snW" = ( /obj/structure/chair/sofa/bench/right{ dir = 1 @@ -54600,21 +55510,6 @@ "snZ" = ( /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"sok" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/machinery/light/cold/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/dock) "sor" = ( /obj/machinery/computer/exoscanner_control{ dir = 1 @@ -54656,6 +55551,12 @@ }, /turf/open/floor/iron, /area/station/security/courtroom) +"soG" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/vending/wardrobe/jani_wardrobe, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron/small, +/area/station/service/janitor) "soO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -54680,13 +55581,6 @@ /obj/effect/mapping_helpers/airlock/access/any/security/court, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"spi" = ( -/obj/structure/chair{ - pixel_y = -2 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark/small, -/area/station/security/checkpoint/customs/auxiliary) "spk" = ( /obj/machinery/camera/directional/east, /obj/machinery/light/small/directional/east, @@ -54726,19 +55620,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/small, /area/station/service/bar) -"spK" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) -"spP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs/auxiliary) "sqa" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -54791,13 +55672,10 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs/auxiliary) -"sqV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) +"sqC" = ( +/obj/effect/spawner/random/maintenance, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/department/science/xenobiology) "sqY" = ( /obj/structure/flora/bush/large/style_random{ pixel_x = -20; @@ -54825,15 +55703,31 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"srl" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/vending/cigarette, -/turf/open/floor/iron/smooth, -/area/station/hallway/secondary/command) "srn" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall, /area/station/maintenance/port/greater) +"srp" = ( +/obj/machinery/door/window/right/directional/south{ + name = "Jetpack Storage" + }, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/tank/jetpack/carbondioxide, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = 4; + pixel_y = -1 + }, +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark, +/turf/open/floor/iron/dark/smooth_edge, +/area/station/ai_monitored/command/storage/eva) "srx" = ( /obj/machinery/power/port_gen/pacman, /obj/effect/turf_decal/bot{ @@ -54856,32 +55750,6 @@ /obj/structure/window/spawner/directional/west, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"srE" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/airlock/command/glass{ - name = "Telecommunications Server Room" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "comms-entrance-south" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) -"srH" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/tcommsat/server) "srK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -54912,14 +55780,6 @@ "ssz" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/science/xenobiology) -"ssY" = ( -/obj/structure/kitchenspike, -/obj/effect/turf_decal/weather/snow, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "sta" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/corner{ @@ -54939,22 +55799,6 @@ dir = 4 }, /area/station/hallway/primary/central/fore) -"stj" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Tech Storage" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/structure/cable, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/engineering/storage/tech) "stH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/brown/half, @@ -54963,15 +55807,13 @@ }, /turf/open/floor/iron/textured_half, /area/station/cargo/miningoffice) -"stV" = ( -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/tile/neutral{ +"stP" = ( +/obj/effect/turf_decal/siding{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/lab) "stX" = ( /obj/effect/landmark/start/chief_medical_officer, /turf/open/floor/wood/parquet, @@ -55010,11 +55852,32 @@ /obj/machinery/holopad, /turf/open/floor/iron/white/small, /area/station/science/lab) +"suu" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/table, +/obj/item/reagent_containers/cup/beaker/large{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/medkit{ + pixel_y = -2 + }, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "suw" = ( /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/checker, /area/station/command/heads_quarters/hos) +"suy" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/rnd_all, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "suM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/firealarm/directional/south, @@ -55024,24 +55887,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"suU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "svd" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 }, /turf/open/floor/iron/small, /area/station/engineering/atmos/pumproom) -"svh" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "svo" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/dna_scannernew, @@ -55069,17 +55920,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/science/genetics) -"svz" = ( -/obj/machinery/door/airlock/research{ - name = "Xenobiology Secure Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/xenobiology) "svD" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/flora/bush/flowers_yw, @@ -55134,47 +55974,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"swh" = ( -/obj/structure/table/wood, -/obj/machinery/computer/pod/old{ - dir = 8 - }, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) -"swk" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) -"swn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/turf/open/floor/circuit/telecomms/mainframe, -/area/station/science/xenobiology) "swu" = ( /turf/open/floor/wood, /area/station/security/detectives_office) -"swB" = ( +"swH" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/starboard) -"swF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/light/small/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/xenobiology) +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/construction) "swJ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -55198,6 +56006,16 @@ /obj/machinery/camera/directional/north, /turf/open/floor/grass, /area/station/service/chapel) +"swQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "aibridge" + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "swT" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Engineering Maintenance" @@ -55220,9 +56038,34 @@ /obj/effect/spawner/random/vending/colavend, /turf/open/floor/wood/tile, /area/station/service/bar) +"sxj" = ( +/obj/machinery/holopad, +/obj/structure/cable, +/turf/open/floor/iron/smooth_large, +/area/station/science/robotics/mechbay) +"sxl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "sxm" = ( /turf/closed/wall, /area/station/tcommsat/server) +"sxo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "sxu" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ @@ -55248,21 +56091,23 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"sxF" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/science/research) "sxH" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange, /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"sxK" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink/directional/south, +/obj/structure/mirror/directional/north, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "sxQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55323,25 +56168,23 @@ "syk" = ( /turf/closed/wall, /area/station/security/warden) -"sys" = ( -/obj/structure/broken_flooring/side/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) -"syA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/public/glass{ - name = "Dorms" - }, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/commons/fitness/locker_room) "syC" = ( /obj/structure/window/spawner/directional/west, /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/misc/sandy_dirt, /area/station/medical/medbay/lobby) +"syK" = ( +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 5 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) "syN" = ( /obj/effect/spawner/random/trash, /turf/open/floor/plating, @@ -55361,6 +56204,12 @@ }, /turf/open/floor/plating, /area/station/engineering/supermatter) +"szo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "szC" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -55370,6 +56219,12 @@ }, /turf/open/floor/wood, /area/station/service/chapel) +"sAc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) "sAy" = ( /obj/structure/railing{ dir = 1 @@ -55384,13 +56239,6 @@ }, /turf/open/floor/iron/dark, /area/station/cargo/storage) -"sBc" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) "sBm" = ( /obj/structure/transport/linear/tram, /obj/structure/fluff/tram_rail/floor, @@ -55408,18 +56256,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/sorting) -"sBq" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/closet/l3closet/janitor, -/obj/item/clothing/gloves/color/orange, -/obj/item/clothing/shoes/galoshes, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/small, -/area/station/service/janitor) -"sBA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/closed/wall/r_wall, -/area/station/science/ordnance/testlab) +"sBw" = ( +/obj/structure/cable, +/obj/machinery/holopad, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/smooth, +/area/station/hallway/secondary/command) "sBL" = ( /obj/structure/sign/directions/science{ dir = 4; @@ -55450,6 +56292,14 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/service/lawoffice) +"sCh" = ( +/obj/structure/sign/poster/official/random/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) "sCi" = ( /turf/closed/wall, /area/station/service/lawoffice) @@ -55473,6 +56323,10 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, /area/station/maintenance/department/engine/atmos) +"sCn" = ( +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "sCp" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -55556,11 +56410,6 @@ /obj/structure/hedge, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) -"sDs" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/siding/wideplating/dark, -/turf/open/floor/iron, -/area/station/commons/dorms) "sDA" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -55570,34 +56419,12 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"sDE" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/obj/machinery/button/curtain{ - id = "abandoned_brewery"; - name = "curtain control"; - pixel_y = -24 - }, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) -"sDZ" = ( +"sDM" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ +/turf/open/floor/iron/dark/side{ dir = 4 }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=15.0-CentralStarboard-CentralFore"; - location = "14.0-Dormatories-CentralStarboard" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/area/station/science/lab) "sEd" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -55628,6 +56455,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) +"sED" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/light_switch/directional/north, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "sES" = ( /obj/machinery/door/airlock/hatch{ name = "Creature Pen" @@ -55642,6 +56474,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/prison) +"sFm" = ( +/obj/structure/closet/emcloset, +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) "sFs" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -55663,13 +56504,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"sGk" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 6 - }, -/obj/structure/flora/bush/flowers_yw, -/turf/open/floor/grass, -/area/station/service/chapel) "sGp" = ( /obj/structure/flora/rock/pile/style_random, /obj/structure/window/reinforced/spawner/directional/west, @@ -55682,26 +56516,29 @@ /obj/structure/closet/crate/freezer/surplus_limbs, /turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/theatre) -"sGE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +"sGz" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/turf/open/floor/plating, -/area/station/science/ordnance/storage) -"sGH" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 8 +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/item/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 }, -/obj/machinery/door/window/right/directional/west{ - name = "Medical Supplies"; - req_access = list("medical") +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/service/lawoffice) +"sGI" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/small, -/area/station/medical/storage) +/obj/effect/decal/cleanable/cobweb, +/obj/item/radio/intercom/directional/north, +/obj/machinery/smartfridge/organ, +/turf/open/floor/iron/white, +/area/station/science/cytology) "sGN" = ( /obj/machinery/modular_computer/preset/cargochat/service{ dir = 8 @@ -55736,6 +56573,22 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"sHl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"sHv" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/broken_flooring/singular/directional/east, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "sHH" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/portable_atmospherics/canister/plasma, @@ -55771,6 +56624,14 @@ }, /turf/open/floor/plating/elevatorshaft, /area/station/engineering/main) +"sHT" = ( +/obj/effect/turf_decal/siding/dark_blue/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "sHV" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -55785,14 +56646,18 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/engine, /area/station/science/cytology) -"sIj" = ( +"sIq" = ( +/obj/machinery/photocopier, +/obj/structure/sign/poster/official/random/directional/north, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/wood/tile, +/area/station/command/heads_quarters/hop) +"sIt" = ( +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/lobby) +/turf/open/floor/plating, +/area/station/maintenance/aft) "sIA" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -55817,25 +56682,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) -"sJg" = ( -/obj/machinery/door/airlock/command{ - name = "Research Division Server Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/server) "sJi" = ( /obj/effect/landmark/start/depsec/medical, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs/auxiliary) -"sJr" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_large, -/area/station/science/auxlab/firing_range) "sJv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55847,14 +56697,14 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/port) -"sJw" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/holopad, +"sJA" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/obj/effect/turf_decal/siding, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) +/turf/open/floor/iron/white/small, +/area/station/science/lobby) "sJE" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/item/kirbyplants/random/fullysynthetic, @@ -55870,24 +56720,6 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) -"sJN" = ( -/obj/effect/turf_decal/siding, -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lab) -"sJO" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "sJR" = ( /turf/open/floor/plating, /area/station/maintenance/fore/greater) @@ -55922,17 +56754,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"sKm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) "sKq" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -55955,18 +56776,6 @@ }, /turf/open/floor/grass, /area/station/science/genetics) -"sKB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "sKE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white/small, @@ -55989,6 +56798,16 @@ }, /turf/open/floor/iron, /area/station/cargo/office) +"sKQ" = ( +/obj/machinery/light/cold/directional/north, +/obj/machinery/newscaster/directional/north, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/station/science/ordnance/testlab) "sKS" = ( /obj/structure/sign/poster/official/pda_ad/directional/north, /obj/structure/tank_holder/extinguisher, @@ -55996,6 +56815,17 @@ /obj/effect/gibspawner, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"sLi" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/hop) +"sLq" = ( +/obj/effect/turf_decal/trimline/dark/filled/warning, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/department/science/xenobiology) "sLB" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -56034,23 +56864,6 @@ /obj/structure/holosign/barrier/atmos/tram, /turf/open/floor/tram, /area/station/security/tram) -"sMh" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/science/research) "sMj" = ( /obj/effect/turf_decal/siding/wood/corner, /obj/effect/turf_decal/siding/wood{ @@ -56148,6 +56961,18 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"sOa" = ( +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "sOi" = ( /obj/effect/turf_decal/siding/wood/end{ dir = 1 @@ -56173,19 +56998,6 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/engineering/gravity_generator) -"sOt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/chair/sofa/bench{ - dir = 1 - }, -/obj/machinery/newscaster/directional/south, -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "sOy" = ( /obj/structure/window/spawner/directional/west, /turf/open/floor/iron/dark, @@ -56215,6 +57027,15 @@ /obj/effect/landmark/navigate_destination, /turf/open/floor/iron/textured_half, /area/station/commons/storage/art) +"sPa" = ( +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/door/airlock/grunge{ + name = "St. Brendan's" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/greater) "sPb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -56232,6 +57053,13 @@ dir = 4 }, /area/station/engineering/main) +"sPr" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/science/cytology) "sPx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/broken_flooring/pile/directional/east, @@ -56258,6 +57086,18 @@ }, /turf/open/space/basic, /area/space/nearstation) +"sQo" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "sQv" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/spawner/random/structure/closet_empty/crate, @@ -56310,6 +57150,11 @@ }, /turf/open/floor/iron/dark/textured_corner, /area/station/command/heads_quarters/hop) +"sQO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "sQP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -56332,6 +57177,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/engine, /area/station/science/explab) +"sQX" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/binary/valve/digital{ + dir = 4 + }, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "sRf" = ( /obj/machinery/power/turbine/inlet_compressor{ dir = 8 @@ -56354,6 +57208,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/storage) +"sRB" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Break Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/research) "sRD" = ( /obj/machinery/shower/directional/west, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -56373,14 +57237,6 @@ "sRL" = ( /turf/closed/wall, /area/station/service/janitor) -"sRN" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/door/airlock{ - id_tag = "AuxToilet2"; - name = "Unit 2" - }, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/department/science/xenobiology) "sRT" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/siding/thinplating{ @@ -56409,12 +57265,27 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"sSm" = ( +/obj/structure/closet/crate/trashcart/filled, +/obj/structure/spider/stickyweb, +/obj/effect/spawner/random/maintenance/four, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/stone, +/area/station/service/abandoned_gambling_den) "sSq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) +"sSt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "sSB" = ( /turf/open/floor/catwalk_floor, /area/station/engineering/break_room) @@ -56453,30 +57324,56 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"sTi" = ( -/obj/item/clothing/head/cone{ - pixel_x = -8; - pixel_y = 17 +"sTf" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/obj/structure/broken_flooring/singular/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/secondary/dock) -"sTp" = ( -/obj/effect/turf_decal/trimline/dark/line{ +/area/station/hallway/primary/fore) +"sTg" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/small, -/area/station/maintenance/department/science/xenobiology) +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "sTq" = ( /obj/structure/railing{ dir = 10 }, /turf/open/space/basic, /area/space/nearstation) +"sTs" = ( +/obj/effect/turf_decal/tile/blue, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 8 + }, +/area/station/hallway/secondary/dock) +"sTz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"sTD" = ( +/obj/machinery/door/window/brigdoor/left/directional/south{ + name = "Creature Pen"; + req_access = list("research") + }, +/obj/machinery/door/window/brigdoor/left/directional/north{ + name = "Creature Pen"; + req_access = list("research") + }, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron, +/area/station/science/xenobiology) "sTJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/effect/turf_decal/stripes/line{ @@ -56499,33 +57396,10 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/grimy, /area/station/service/library/private) -"sTR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Cold Room" - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/white/small, -/area/station/medical/coldroom) "sUe" = ( -/obj/structure/table/reinforced/rglass, -/obj/machinery/coffeemaker/impressa{ - pixel_x = 2 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/checker, -/area/station/command/bridge) -"sUg" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/courtroom) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/commons/fitness/recreation) "sUr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -56591,6 +57465,11 @@ /obj/structure/cable, /turf/open/floor/iron/textured_half, /area/station/security) +"sVk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "sVp" = ( /obj/structure/table, /obj/structure/sign/poster/official/corporate_perks_vacation/directional/east, @@ -56618,13 +57497,6 @@ /obj/effect/spawner/random/vending/colavend, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"sVG" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "sVN" = ( /turf/closed/wall/r_wall, /area/station/security/prison/workout) @@ -56666,21 +57538,36 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/grimy, /area/station/maintenance/starboard/greater) -"sWQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) -"sXc" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters{ - dir = 1; - id = "abandoned_lab"; - name = "Abandoned Lab Shutters" +"sWE" = ( +/obj/effect/turf_decal/trimline/dark/corner{ + dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/dark/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, /area/station/maintenance/department/science/xenobiology) +"sXd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/book/manual/wiki/chemistry{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/book/manual/wiki/grenades, +/obj/item/book/manual/wiki/plumbing{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/plunger, +/turf/open/floor/iron, +/area/station/medical/chemistry) "sXi" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, @@ -56696,12 +57583,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/engine/atmos) -"sXo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "sXq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -56734,12 +57615,12 @@ /obj/machinery/telecomms/receiver/preset_left, /turf/open/floor/circuit, /area/station/tcommsat/server) -"sXD" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/service/library) +"sXz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/science/cytology) "sXE" = ( /mob/living/basic/bot/firebot, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -56747,19 +57628,16 @@ /obj/machinery/holopad, /turf/open/floor/iron/smooth_large, /area/station/engineering/storage_shared) -"sXG" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/science/cytology) "sXI" = ( /obj/structure/frame/machine, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) +"sXL" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "sXO" = ( /obj/structure/chair{ dir = 4 @@ -56785,17 +57663,6 @@ "sYa" = ( /turf/closed/wall/r_wall, /area/station/science/robotics/augments) -"sYb" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/components/unary/outlet_injector{ - dir = 8; - pixel_x = -4 - }, -/turf/open/floor/engine, -/area/station/science/cytology) "sYg" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -56803,15 +57670,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"sYo" = ( -/obj/effect/spawner/random/entertainment/arcade, -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/hallway/secondary/exit/departure_lounge) "sYs" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/tile/red/opposingcorners{ @@ -56819,19 +57677,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/hallway/secondary/exit/departure_lounge) -"sYt" = ( -/obj/structure/table/reinforced, -/obj/machinery/newscaster/directional/east, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/clothing/gloves/color/yellow, -/obj/item/t_scanner, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage/tech) "sYw" = ( /obj/structure/chair{ pixel_y = -2 @@ -56864,10 +57709,6 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) -"sZh" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "sZo" = ( /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 10 @@ -56877,19 +57718,26 @@ }, /turf/open/floor/iron/white/small, /area/station/service/hydroponics) -"sZx" = ( -/obj/structure/disposalpipe/trunk{ +"sZw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/purple{ - dir = 9 +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"sZy" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 4 + }, +/obj/effect/mapping_helpers/dead_body_placer{ + bodycount = 2 }, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) "sZA" = ( /obj/structure/flora/bush/flowers_br/style_random, /obj/structure/flora/bush/flowers_pp/style_2, @@ -56968,16 +57816,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/security/checkpoint/customs/auxiliary) -"taL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "taT" = ( /obj/machinery/door/airlock/maintenance{ name = "Maintenance" @@ -57005,15 +57843,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/textured_half, /area/station/security/execution/transfer) -"tbk" = ( -/obj/machinery/door/airlock/hatch{ - name = "Experimentation Chamber" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/science/explab) "tbr" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/mapping_helpers/airlock/abandoned, @@ -57029,6 +57858,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/explab) +"tbv" = ( +/obj/structure/bonfire, +/obj/item/storage/box/matches{ + pixel_x = -4; + pixel_y = -6 + }, +/turf/open/misc/dirt/station, +/area/station/medical/morgue) "tbB" = ( /obj/structure/table/reinforced, /obj/effect/mapping_helpers/broken_floor, @@ -57050,6 +57887,18 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/lab) +"tbI" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"tbK" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "tbS" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -57058,11 +57907,13 @@ }, /turf/open/floor/iron/dark, /area/station/science/genetics) -"tcz" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) +"tci" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) "tcC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -57071,6 +57922,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/security/processing) +"tcF" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "tdb" = ( /turf/open/floor/wood, /area/station/engineering/main) @@ -57111,13 +57968,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/lockers) -"tdE" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "tdF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57138,32 +57988,12 @@ }, /turf/open/floor/iron/smooth_large, /area/station/maintenance/department/medical/central) -"tdS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine, -/area/station/science/explab) "tdY" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/east, /turf/open/floor/plating/rust, /area/station/maintenance/department/electrical) -"tec" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/steam_vent, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "teo" = ( /obj/machinery/door/airlock/atmos/glass{ name = "Distro Access" @@ -57221,6 +58051,11 @@ }, /turf/open/floor/iron, /area/station/science/ordnance/testlab) +"teF" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "teG" = ( /obj/structure/chair/sofa/bench{ dir = 4 @@ -57233,6 +58068,16 @@ dir = 1 }, /area/station/hallway/secondary/entry) +"teP" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "teV" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -57246,22 +58091,6 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) -"tff" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/machinery/reagentgrinder{ - pixel_x = -9; - pixel_y = 8 - }, -/obj/item/stock_parts/matter_bin{ - pixel_x = 6; - pixel_y = 7 - }, -/obj/item/stock_parts/matter_bin{ - pixel_x = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/lab) "tfh" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -57303,14 +58132,13 @@ /obj/item/clipboard, /turf/open/floor/iron/white/small, /area/station/science/server) -"tfH" = ( -/obj/effect/turf_decal/tile/blue, +"tfG" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 8 - }, -/area/station/hallway/secondary/dock) +/turf/open/floor/iron/white/small, +/area/station/science/cubicle) "tfM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral, @@ -57319,9 +58147,29 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"tfQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "tgl" = ( /turf/closed/wall, /area/station/service/greenroom) +"tgm" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock{ + name = "Cytology Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "tgp" = ( /obj/structure/table/reinforced, /obj/item/folder{ @@ -57355,13 +58203,6 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"tgJ" = ( -/obj/machinery/cryo_cell, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/small, -/area/station/medical/cryo) "thb" = ( /obj/structure/chair/stool/directional/south, /obj/effect/turf_decal/siding/yellow{ @@ -57370,15 +58211,6 @@ /obj/effect/landmark/start/station_engineer, /turf/open/floor/wood, /area/station/engineering/break_room) -"the" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/research) "thw" = ( /obj/machinery/atmospherics/components/binary/pump/layer4{ dir = 8; @@ -57390,6 +58222,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) +"thL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/science/xenobiology) "thM" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/structure/closet/secure_closet/miner, @@ -57417,11 +58256,6 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) -"tis" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/research) "tit" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/portable_atmospherics/canister/air, @@ -57449,11 +58283,6 @@ /obj/structure/alien/weeds, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) -"tiQ" = ( -/obj/machinery/rnd/production/protolathe/department/science, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/lab) "tiW" = ( /obj/structure/chair{ pixel_y = -2 @@ -57484,13 +58313,35 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/engineering/lobby) -"tje" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 8 +"tjf" = ( +/obj/structure/cable, +/obj/structure/table/bronze, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) +/obj/item/reagent_containers/cup/glass/bottle/beer{ + pixel_x = 7; + pixel_y = 11 + }, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + pixel_x = -1; + pixel_y = 11 + }, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + pixel_x = -7; + pixel_y = 7 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/meeting_room) "tjg" = ( /obj/machinery/atmospherics/components/binary/pump/off{ name = "O2 To Pure" @@ -57503,15 +58354,6 @@ "tjj" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/ai_upload) -"tjm" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/research) "tjs" = ( /obj/machinery/airalarm/directional/west, /obj/effect/spawner/random/entertainment/arcade{ @@ -57523,6 +58365,13 @@ /obj/machinery/light/small/dim/directional/west, /turf/open/floor/eighties/red, /area/station/hallway/primary/central/fore) +"tjC" = ( +/obj/structure/hedge, +/obj/effect/turf_decal/siding/thinplating_new/terracotta/corner{ + dir = 8 + }, +/turf/open/floor/wood/tile, +/area/station/command/corporate_showroom) "tjT" = ( /obj/machinery/chem_master/condimaster, /obj/effect/turf_decal/siding/wood/end{ @@ -57548,6 +58397,13 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/plating, /area/station/cargo/warehouse) +"tkj" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/machinery/light/floor, +/turf/open/floor/stone, +/area/station/service/bar) "tkm" = ( /obj/structure/window/spawner/directional/west, /obj/structure/flora/bush/large/style_random{ @@ -57627,13 +58483,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/engineering/storage_shared) -"tmr" = ( -/obj/structure/bed/medical/emergency, -/obj/machinery/iv_drip, -/obj/effect/turf_decal/bot_white, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "tms" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -57646,14 +58495,6 @@ /obj/machinery/light/floor, /turf/open/floor/grass, /area/station/service/hydroponics) -"tmI" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Recreation" - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "tmK" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -57697,13 +58538,6 @@ }, /turf/open/floor/iron/small, /area/station/maintenance/port/lesser) -"tmV" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/coroner, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "tnb" = ( /turf/open/floor/plating, /area/station/maintenance/central/lesser) @@ -57727,6 +58561,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/engine, /area/station/science/explab) +"tnv" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/cubicle) "tnx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -57759,6 +58599,30 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/maintenance/department/engine/atmos) +"tnK" = ( +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/command/bridge) +"tnL" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"tnT" = ( +/obj/machinery/light/floor, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/bridge) "tnZ" = ( /obj/structure/bookcase/random, /obj/structure/sign/poster/official/random/directional/west, @@ -57767,14 +58631,6 @@ }, /turf/open/floor/wood/parquet, /area/station/service/library) -"tob" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, -/area/station/maintenance/starboard/greater) "tof" = ( /turf/closed/wall/rust, /area/station/ai_monitored/turret_protected/ai) @@ -57850,6 +58706,11 @@ }, /turf/open/floor/plating/airless, /area/station/hallway/secondary/dock) +"toS" = ( +/turf/open/floor/iron/dark/textured_corner{ + dir = 8 + }, +/area/station/command/heads_quarters/hop) "toT" = ( /obj/structure/flora/rock/pile/jungle/style_random, /obj/structure/window/reinforced/spawner/directional/west, @@ -57858,17 +58719,18 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) -"toU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "toX" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/machinery/light/no_nightlight/directional/south, /turf/open/floor/iron, /area/station/engineering/atmos/project) +"tph" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/delivery, +/obj/structure/sign/poster/official/random/directional/west, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark/smooth_large, +/area/station/ai_monitored/command/storage/eva) "tpk" = ( /obj/machinery/vending/wardrobe/law_wardrobe, /obj/effect/turf_decal/siding/wood{ @@ -57879,15 +58741,8 @@ /area/station/service/lawoffice) "tpl" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/command/bridge) +/turf/open/floor/iron/grimy, +/area/station/science/cubicle) "tpm" = ( /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/noslip, @@ -57957,18 +58812,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"tqs" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/door/window/right/directional/east{ - name = "Corpse Arrivals" +"tqA" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/medical/morgue) -"tqD" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/ai_upload) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/science/xenobiology) "tqF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -57986,47 +58837,29 @@ /obj/effect/landmark/navigate_destination/dockaux, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"tqX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/dock) "tri" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/station/maintenance/hallway/abandoned_recreation) -"trl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) "trp" = ( /turf/closed/wall, /area/station/maintenance/port/aft) -"trz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/status_display/ai/directional/west, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "trB" = ( /turf/open/floor/glass, /area/station/hallway/primary/central/aft) +"trC" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/outlet_injector{ + dir = 8; + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/station/science/cytology) "trI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -58049,12 +58882,6 @@ /obj/machinery/computer/atmos_control/plasma_tank, /turf/open/floor/iron, /area/station/engineering/atmos) -"tsb" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/sign/departments/aiupload/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "tsk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -58077,27 +58904,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/textured_half, /area/station/service/chapel/office) -"tst" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" - }, -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/science/xenobiology) -"tsA" = ( -/obj/effect/turf_decal/siding/wood{ +"tsw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "tsB" = ( /obj/effect/turf_decal/tile/brown/opposingcorners{ dir = 1 @@ -58170,6 +58984,13 @@ }, /turf/open/floor/iron/white/small, /area/station/security/execution/education) +"tuh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) "tuk" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/chair/sofa/bench/right{ @@ -58178,14 +58999,6 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron, /area/station/security/processing) -"tum" = ( -/obj/machinery/door/airlock{ - name = "Abandoned Brewery" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "tuu" = ( /obj/structure/table, /obj/item/stack/sheet/glass/fifty, @@ -58227,14 +59040,6 @@ "tuT" = ( /turf/closed/wall, /area/station/hallway/secondary/entry) -"tuW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/checker, -/area/station/command/bridge) "tuY" = ( /obj/effect/spawner/random/structure/closet_private, /obj/machinery/light/small/directional/west, @@ -58243,6 +59048,15 @@ "tuZ" = ( /turf/closed/wall, /area/station/security/brig/entrance) +"tvq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Recreation" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "tvx" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -58301,19 +59115,22 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"twf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "twg" = ( /obj/structure/railing{ dir = 5 }, /turf/open/space/basic, /area/space/nearstation) -"twi" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/steam_vent, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "twm" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -58401,6 +59218,28 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) +"txv" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/research) +"txz" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/machinery/fax{ + fax_name = "Research Director's Office"; + name = "Research Director's Fax Machine"; + pixel_y = 9 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) "txC" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -58409,10 +59248,18 @@ "txN" = ( /turf/closed/wall, /area/station/security/prison/workout) -"txV" = ( -/obj/structure/cable, +"txS" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/shaker{ + pixel_x = -6 + }, +/obj/item/reagent_containers/cup/glass/bottle/wine/unlabeled{ + pixel_x = 6; + pixel_y = 4 + }, /turf/open/floor/plating, -/area/station/maintenance/starboard/central) +/area/station/maintenance/department/science/xenobiology) "txW" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/south, @@ -58555,10 +59402,27 @@ /obj/structure/flora/bush/large/style_random, /turf/open/floor/grass, /area/station/service/chapel) +"tzU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "tzZ" = ( /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) +"tAd" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/service/library) "tAm" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/effect/decal/cleanable/dirt, @@ -58589,16 +59453,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"tAr" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) "tAs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -58644,28 +59498,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"tAP" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 10 - }, -/obj/effect/mapping_helpers/dead_body_placer{ - bodycount = 2 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) -"tAQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "tAS" = ( /turf/open/floor/iron/dark, /area/station/medical/chemistry) @@ -58753,12 +59585,18 @@ /obj/structure/disposalpipe/segment, /turf/open/space/basic, /area/space/nearstation) -"tCZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"tCG" = ( +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/science/robotics/mechbay) +"tCL" = ( +/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Maintenance" }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "tDb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/firedoor, @@ -58770,16 +59608,24 @@ }, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) -"tDd" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +"tDg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wideplating_new/terracotta{ dir = 4 }, -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/pharmacy) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "tDn" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/prison) +"tDo" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/cafeteria, +/area/station/science/breakroom) "tDu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, @@ -58870,26 +59716,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/station/security/tram) -"tEC" = ( -/obj/machinery/door/airlock/research{ - name = "Robotics Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/robotics/lab) -"tEL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "tFs" = ( /obj/structure/table/glass, /obj/item/storage/medkit/regular{ @@ -58902,6 +59728,22 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"tFA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/grunge{ + name = "Morgue" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/medical/morgue) "tFH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -58924,10 +59766,24 @@ /obj/machinery/chem_master, /turf/open/floor/iron, /area/station/medical/chemistry) -"tGp" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) +"tGa" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/food/grown/grapes{ + pixel_y = 4; + pixel_x = -5 + }, +/obj/item/food/grown/grapes{ + pixel_y = 4 + }, +/obj/item/food/grown/grapes{ + pixel_y = 2; + pixel_x = 5 + }, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "tGq" = ( /turf/closed/wall, /area/station/service/kitchen/coldroom) @@ -58940,25 +59796,10 @@ /obj/machinery/transport/destination_sign/indicator/directional/north, /turf/open/floor/noslip, /area/station/security/tram) -"tGB" = ( -/obj/machinery/light_switch/directional/south, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/maintenance/solars/starboard/fore) "tGF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth_large, /area/station/engineering/break_room) -"tGI" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "tGJ" = ( /obj/effect/turf_decal/tile/dark_red/fourcorners, /obj/machinery/computer/records/security, @@ -58974,6 +59815,11 @@ dir = 4 }, /area/station/hallway/secondary/entry) +"tGY" = ( +/obj/structure/alien/weeds, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "tHa" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -58986,6 +59832,13 @@ /mob/living/carbon/human/species/monkey/punpun, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) +"tHm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/chief_medical_officer, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "tHo" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -58999,21 +59852,18 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/security/tram) -"tHy" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "tHK" = ( /turf/closed/wall, /area/station/security/prison/shower) -"tHL" = ( -/obj/machinery/door/firedoor, +"tHO" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 8 + }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/hallway/secondary/entry) +/turf/open/floor/iron/white/side, +/area/station/science/lower) "tIa" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/chair{ @@ -59022,6 +59872,18 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/security/brig/entrance) +"tIy" = ( +/obj/machinery/door/airlock/hatch{ + name = "Secure Pen" + }, +/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/science/cytology) "tIz" = ( /obj/structure/chair/wood{ dir = 8 @@ -59029,18 +59891,12 @@ /obj/effect/landmark/blobstart, /turf/open/floor/wood, /area/station/service/chapel/funeral) -"tIB" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"tIM" = ( +/obj/machinery/ntnet_relay, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage/tech) +/turf/open/floor/circuit, +/area/station/tcommsat/server) "tIN" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow{ @@ -59078,17 +59934,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) -"tJw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/research{ - name = "Xenobiology Secure Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/xenobiology) "tJz" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -59098,11 +59943,6 @@ }, /turf/open/floor/plating, /area/station/security/brig/entrance) -"tJC" = ( -/obj/machinery/light/cold/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "tJF" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/rack, @@ -59147,17 +59987,16 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"tKm" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/power/floodlight, +/obj/structure/alien/weeds, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "tKn" = ( /turf/open/floor/iron/small, /area/station/engineering/atmos/pumproom) -"tKD" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/light/no_nightlight/directional/south, -/turf/open/floor/iron, -/area/station/engineering/atmos) "tKG" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/broken_floor, @@ -59192,22 +60031,6 @@ /obj/effect/mapping_helpers/mail_sorting/service/hydroponics, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"tLc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) -"tLj" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/machinery/light/small/broken/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) "tLn" = ( /obj/effect/turf_decal/siding{ dir = 1 @@ -59235,24 +60058,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"tMh" = ( -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Command Desk"; - req_access = list("command") - }, -/obj/effect/turf_decal/siding/dark, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/command/bridge) -"tMs" = ( -/obj/machinery/telecomms/server/presets/service, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) +"tMr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "tMS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59279,17 +60088,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/engineering/atmos/pumproom) -"tNn" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "tNs" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -59311,26 +60109,6 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/engine, /area/station/science/xenobiology) -"tNy" = ( -/obj/machinery/door/airlock/research{ - name = "Gun Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/auxlab/firing_range) -"tNz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "tNA" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -59348,10 +60126,30 @@ }, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) +"tNL" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/closet/firecloset, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "tNT" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/kitchen/small, /area/station/maintenance/aft) +"tNU" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/storage/dice, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/station/security/prison/rec) "tNV" = ( /obj/structure/closet/secure_closet/engineering_welding, /obj/effect/turf_decal/bot, @@ -59379,15 +60177,22 @@ }, /turf/open/floor/iron/white/small, /area/station/commons/toilet/restrooms) -"tOk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, +"tOm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/primary/aft) "tOu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, @@ -59416,58 +60221,16 @@ /obj/machinery/light/small/directional/west, /turf/open/misc/sandy_dirt, /area/station/service/lawoffice) -"tOZ" = ( -/obj/machinery/light/cold/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "tPf" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"tPm" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "tPE" = ( /obj/structure/table, /obj/item/soap, /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/showroomfloor, /area/station/service/barber) -"tPF" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/engineering/storage/tech) -"tPH" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/fitness/recreation) -"tPM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "tPP" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59524,30 +60287,40 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"tQA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"tQM" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, +"tQC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" }, -/area/station/science/xenobiology) +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/command/bridge) +"tQP" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "tQR" = ( /obj/machinery/door/airlock/engineering{ name = "Engine Airlock" @@ -59589,10 +60362,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"tRn" = ( -/obj/structure/closet/crate/grave/filled, -/turf/open/misc/dirt/station, -/area/station/medical/morgue) "tRw" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -59603,6 +60372,20 @@ dir = 4 }, /area/station/science/research) +"tRx" = ( +/obj/structure/fermenting_barrel, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) +"tRy" = ( +/obj/effect/mapping_helpers/airlock/access/all/medical/coroner, +/obj/machinery/door/airlock/grunge{ + name = "On-Station Burial Site" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/station/medical/morgue) "tRE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59627,16 +60410,6 @@ dir = 1 }, /area/station/security/prison/safe) -"tSq" = ( -/obj/machinery/telecomms/processor/preset_three, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/tcommsat/server) -"tSu" = ( -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "tSv" = ( /obj/effect/decal/cleanable/glass, /obj/structure/chair/stool/directional/east, @@ -59652,25 +60425,11 @@ }, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) -"tSH" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/records/medical/laptop{ - dir = 8; - pixel_y = 1 - }, -/obj/machinery/light/small/directional/east, -/obj/effect/turf_decal/trimline/dark_blue/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"tSI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/broken_flooring/singular/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +"tSS" = ( +/obj/effect/spawner/xmastree, +/obj/structure/flora/tree/jungle/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "tTg" = ( /obj/structure/table, /obj/item/trash/cheesie{ @@ -59681,19 +60440,13 @@ /obj/item/storage/fancy/donut_box, /turf/open/floor/iron/checker, /area/station/security/breakroom) -"tTp" = ( -/obj/effect/turf_decal/caution/stand_clear/red{ - dir = 8 - }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, +"tTk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "tTx" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -59701,14 +60454,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) -"tTA" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/very_dim/directional/east, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) +"tTJ" = ( +/obj/structure/fermenting_barrel, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "tTT" = ( /turf/open/floor/iron/white/corner{ dir = 1 @@ -59726,17 +60476,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/iron, /area/station/security/execution/transfer) -"tUa" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/south, -/obj/structure/flora/rock/pile/jungle/style_random, -/obj/structure/sign/departments/restroom/directional/west, -/turf/open/misc/sandy_dirt, -/area/station/hallway/secondary/entry) -"tUc" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/stairs, -/area/station/hallway/primary/central/fore) "tUj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59747,16 +60486,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"tUo" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/turf_decal/siding{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) "tUz" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -59768,22 +60497,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) -"tUH" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) -"tUZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "tVc" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod One"; @@ -59795,6 +60508,14 @@ "tVe" = ( /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) +"tVg" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/medical_all, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/bot, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "tVp" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -59850,14 +60571,6 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"tWG" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/cafeteria, -/area/station/science/breakroom) "tWQ" = ( /obj/machinery/door/airlock/public/glass{ name = "Departure Lounge" @@ -59879,6 +60592,23 @@ /obj/structure/table/bronze, /turf/open/floor/wood/tile, /area/station/maintenance/port/lesser) +"tXp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=23.4-Evac"; + location = "23.3-Evac" + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"tXs" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured, +/area/station/command/meeting_room) "tXy" = ( /obj/structure/flora/tree/jungle/small/style_3, /obj/effect/turf_decal/weather/dirt, @@ -59897,13 +60627,10 @@ /obj/effect/turf_decal/siding/wideplating, /turf/open/floor/wood, /area/station/engineering/atmospherics_engine) -"tXG" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) +"tXI" = ( +/obj/machinery/holopad/secure, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai) "tXL" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -59920,6 +60647,17 @@ }, /turf/open/floor/iron/dark, /area/station/medical/chemistry) +"tXV" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/status_display/evac/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "tYj" = ( /obj/item/exodrone, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -59928,6 +60666,16 @@ "tYq" = ( /turf/closed/wall, /area/station/security/execution/transfer) +"tYv" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "tYx" = ( /obj/machinery/firealarm/directional/east, /obj/effect/turf_decal/tile/red/opposingcorners{ @@ -59957,6 +60705,10 @@ }, /turf/open/floor/tram, /area/station/security/tram) +"tYN" = ( +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "tYT" = ( /turf/open/misc/asteroid/airless, /area/space/nearstation) @@ -59964,6 +60716,24 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/hallway/primary/central/aft) +"tZe" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/purple{ + dir = 4 + }, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"tZh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/filingcabinet, +/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ + dir = 8 + }, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) "tZi" = ( /obj/structure/sign/poster/contraband/got_wood/directional/north, /turf/open/floor/light/colour_cycle/dancefloor_b, @@ -59989,6 +60759,15 @@ /obj/machinery/light/small/dim/directional/east, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) +"tZr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "tZt" = ( /obj/machinery/light/small/broken{ dir = 4 @@ -60005,6 +60784,13 @@ }, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"tZD" = ( +/obj/structure/sign/warning/no_smoking/circle/directional/north, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "tZE" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -60039,6 +60825,12 @@ /obj/machinery/light/cold/dim/directional/east, /turf/open/floor/iron, /area/station/engineering/main) +"tZY" = ( +/obj/structure/hedge, +/obj/machinery/status_display/evac/directional/west, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "uaa" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -60060,26 +60852,6 @@ /obj/machinery/smartfridge/chemistry/virology/preloaded, /turf/open/floor/iron/white, /area/station/medical/virology) -"uax" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs) -"uaF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/right{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "uaT" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -60121,45 +60893,17 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/dark, /area/station/medical/medbay/lobby) -"ubk" = ( +"ubn" = ( +/obj/structure/extinguisher_cabinet/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) -"ubl" = ( -/obj/machinery/newscaster/directional/south, -/obj/structure/table, -/obj/item/storage/box/lights/mixed, -/turf/open/floor/iron, -/area/station/commons/storage/art) +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/science/lobby) "uby" = ( /turf/closed/wall, /area/station/security/prison/garden) -"ubK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/hallway/primary/central/fore) -"ubT" = ( -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/blue, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/primary/fore) "ubV" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/recharge_station, @@ -60167,15 +60911,16 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) -"uch" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 +"ucj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/science/explab) +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/exit/departure_lounge) "ucm" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -60190,6 +60935,10 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/project) +"ucx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) "ucy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/red{ @@ -60240,22 +60989,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/project) -"ucY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/construction) -"udd" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white, -/area/station/science/cytology) "ude" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -60264,6 +60997,31 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"udg" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/purple{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) +"udl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/research/glass{ + name = "Gun Range" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth_half{ + dir = 1 + }, +/area/station/science/auxlab/firing_range) "udv" = ( /obj/machinery/telecomms/receiver/preset_right, /turf/open/floor/circuit, @@ -60310,28 +61068,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"udK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=4.0-TechStorage-AftHall"; - location = "3.0-StarboardHall-TechStorage" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"udO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "udW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60422,26 +61158,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/air_output, /turf/open/floor/engine/air, /area/station/engineering/atmos) -"ueT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/cytology) "ueX" = ( /turf/closed/wall/rust, /area/station/maintenance/port/fore) -"ufb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_half, -/area/station/hallway/primary/central/fore) -"ufd" = ( -/obj/effect/turf_decal/trimline/dark/end{ - dir = 2 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/small, -/area/station/maintenance/department/science/xenobiology) "ufe" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60461,31 +61180,6 @@ "ufn" = ( /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"ufE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/primary/aft) -"ufF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "ugb" = ( /obj/machinery/door/airlock/security/glass{ id_tag = "outerbrig"; @@ -60512,6 +61206,29 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) +"ugv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/dock) +"ugx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "ugA" = ( /obj/effect/turf_decal/siding/yellow{ dir = 1 @@ -60521,6 +61238,15 @@ }, /turf/open/floor/wood, /area/station/engineering/break_room) +"ugC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "ugF" = ( /obj/machinery/power/emitter, /obj/effect/turf_decal/stripes/line{ @@ -60528,27 +61254,10 @@ }, /turf/open/floor/iron/dark/small, /area/station/engineering/storage_shared) -"ugH" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/turf/open/floor/iron/dark/herringbone, -/area/station/security/courtroom) "ugI" = ( /obj/structure/flora/tree/jungle/style_3, /turf/open/floor/grass, /area/station/service/chapel) -"ugJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) "uhe" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/conveyor{ @@ -60567,11 +61276,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"uhk" = ( -/obj/machinery/smartfridge/organ, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "uhq" = ( /obj/structure/chair/bronze, /turf/open/floor/wood/tile, @@ -60621,15 +61325,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark/small, /area/station/medical/chemistry) -"uid" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/central) "uij" = ( /obj/docking_port/stationary{ dheight = 4; @@ -60649,13 +61344,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"uiB" = ( -/obj/effect/turf_decal/siding{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) "uiK" = ( /obj/machinery/atmospherics/pipe/layer_manifold/supply/visible{ dir = 4 @@ -60681,6 +61369,18 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/wood, /area/station/maintenance/hallway/abandoned_recreation) +"uiP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "uiU" = ( /obj/effect/spawner/structure/window, /obj/structure/disposalpipe/segment{ @@ -60688,18 +61388,6 @@ }, /turf/open/floor/plating, /area/station/cargo/office) -"uiY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "ujq" = ( /obj/structure/disposalpipe/segment, /obj/structure/closet/emcloset, @@ -60751,30 +61439,20 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/hallway/secondary/construction) -"ujT" = ( -/obj/machinery/door/airlock{ - name = "Sec Post Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, +"ujP" = ( /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) -"ujX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"ujZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) +/obj/effect/turf_decal/trimline/neutral/line, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "ukf" = ( /obj/effect/turf_decal/bot, /turf/open/floor/engine, @@ -60783,52 +61461,26 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall, /area/station/cargo/miningfoundry) -"ukk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/lower) -"uku" = ( -/obj/machinery/computer/crew{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light_switch/directional/south, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "ukA" = ( /obj/machinery/pipedispenser/disposal, /obj/structure/spider/stickyweb, /turf/open/floor/iron/dark, /area/station/maintenance/department/engine/atmos) -"ukB" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 10 - }, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/medical/morgue) "ukI" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"ukN" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/lower) "ukP" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/atmos) -"ukQ" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/research) "ukV" = ( /obj/machinery/computer/security{ dir = 8 @@ -60862,6 +61514,20 @@ /obj/structure/chair/stool/directional/north, /turf/open/floor/iron, /area/station/security/prison/workout) +"uly" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "ulC" = ( /obj/structure/closet/secure_closet/atmospherics, /obj/effect/turf_decal/bot{ @@ -60879,12 +61545,15 @@ /obj/effect/mapping_helpers/mail_sorting/service/kitchen, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"ulK" = ( -/obj/machinery/ntnet_relay, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/tcommsat/server) +"ulI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "ulO" = ( /turf/open/floor/plating, /area/station/maintenance/department/medical/central) @@ -60900,13 +61569,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"umr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/science/explab) "ums" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/engineering) @@ -60928,22 +61590,24 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"umL" = ( -/obj/structure/disposalpipe/segment, +"umX" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, /obj/structure/cable, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/office) -"unc" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) +"umY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/toy/plush/slimeplushie{ + name = "Nanners" + }, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "unf" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted, /obj/machinery/computer/records/security{ @@ -60951,6 +61615,16 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs/auxiliary) +"uny" = ( +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 1 + }, +/obj/machinery/modular_computer/preset/engineering{ + dir = 1 + }, +/obj/effect/turf_decal/siding/yellow, +/turf/open/floor/wood/tile, +/area/station/command/bridge) "unG" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -60961,17 +61635,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"unT" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) "uoh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral, @@ -61003,13 +61666,15 @@ }, /turf/open/floor/grass, /area/station/service/chapel) -"upe" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"upc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) +/obj/structure/sign/departments/medbay/alt/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "upg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, @@ -61021,22 +61686,6 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/port) -"upr" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/research) -"upy" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/research) "upz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -61070,26 +61719,20 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"upP" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 5 - }, -/area/station/science/research) "upV" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, /turf/open/floor/iron, /area/station/security/courtroom) -"uqc" = ( -/obj/effect/spawner/random/trash, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) +"uqa" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/command_all, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/storage/tech) "uqe" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -61115,10 +61758,24 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"uqn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/science/lower) "uqq" = ( /obj/structure/table, /turf/open/floor/iron/dark/small, /area/station/maintenance/central/lesser) +"uqt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "uqw" = ( /turf/closed/wall/r_wall, /area/station/commons/fitness/recreation) @@ -61129,13 +61786,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"uqH" = ( -/obj/machinery/firealarm/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/science/breakroom) "uqL" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/spawner/random/trash, @@ -61144,23 +61794,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"uqO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"uqU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/trap/stun, -/obj/structure/alien/weeds, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "uqV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -61170,6 +61803,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"urc" = ( +/obj/structure/alien/weeds, +/obj/structure/cable, +/turf/open/misc/asteroid, +/area/station/maintenance/starboard/greater) "urd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61220,8 +61858,9 @@ /obj/structure/disposalpipe/junction{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/cafeteria, /area/station/science/breakroom) "urm" = ( @@ -61277,12 +61916,6 @@ }, /turf/open/floor/iron, /area/station/security) -"ury" = ( -/obj/structure/transit_tube/horizontal, -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) "urz" = ( /obj/structure/cable, /turf/closed/wall/r_wall, @@ -61308,6 +61941,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/herringbone, /area/station/commons/dorms) +"urL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/herringbone, +/area/station/commons/dorms) "urM" = ( /obj/effect/turf_decal/tile/dark_red/fourcorners, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -61328,6 +61965,15 @@ /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/fore/greater) +"usj" = ( +/obj/structure/rack, +/obj/item/aicard, +/obj/item/clothing/gloves/color/yellow, +/obj/item/ai_module/reset, +/obj/effect/turf_decal/siding/dark, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron, +/area/station/engineering/storage/tech) "usF" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/easel, @@ -61360,6 +62006,22 @@ /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) +"utq" = ( +/obj/machinery/door/airlock/command/glass{ + name = "E.V.A. Storage" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/smooth_half{ + dir = 1 + }, +/area/station/ai_monitored/command/storage/eva) "utD" = ( /obj/machinery/light_switch/directional/west, /obj/effect/turf_decal/stripes/corner{ @@ -61369,15 +62031,6 @@ dir = 8 }, /area/station/hallway/secondary/construction) -"utF" = ( -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "Bridge Blast Door" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/meeting_room) "utP" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/item/paper_bin/carbon{ @@ -61392,6 +62045,19 @@ /obj/effect/landmark/navigate_destination/dockescpod, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"uub" = ( +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"uul" = ( +/obj/item/kirbyplants/organic/applebush, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/iron/dark/textured, +/area/station/command/meeting_room) "uur" = ( /obj/structure/table/wood/fancy/green, /obj/item/storage/wallet{ @@ -61430,20 +62096,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/engineering/break_room) -"uuY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/research/glass{ - name = "Gun Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/auxlab/firing_range) "uvb" = ( /obj/structure/dresser, /turf/open/floor/wood, @@ -61457,6 +62109,12 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) +"uvi" = ( +/obj/machinery/sparker/directional/north{ + id = "Xenobio" + }, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) "uvx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -61474,23 +62132,63 @@ "uvA" = ( /turf/closed/wall/r_wall, /area/station/command/gateway) +"uvC" = ( +/obj/machinery/door/poddoor/shutters{ + id = "evashutter"; + name = "E.V.A. Storage Shutter"; + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/iron/smooth_half{ + dir = 1 + }, +/area/station/ai_monitored/command/storage/eva) "uvG" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/effect/spawner/random/entertainment/arcade, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) +"uvS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/stack/cable_coil, +/obj/item/multitool, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine/bz, +/area/station/science/xenobiology) +"uvX" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/science/xenobiology) "uwB" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 4 }, /turf/open/floor/iron, /area/station/security/execution/transfer) -"uwI" = ( -/obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod, +"uwF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall/r_wall, +/area/station/command/corporate_dock) +"uwM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/west, +/obj/effect/landmark/navigate_destination/tcomms, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/hallway/secondary/entry) +/area/station/science/lower) "uwO" = ( /obj/machinery/door/airlock/hatch{ name = "Tool Supply Corridor" @@ -61499,16 +62197,19 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/catwalk_floor/iron_dark, /area/station/commons/storage/tools) -"uxd" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/delivery, -/obj/machinery/button/door/directional/west{ - name = "E.V.A Shutters"; - req_access = list("command"); - id = "evashutter" +"uxe" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/large, +/area/station/hallway/primary/central/fore) +"uxi" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/ai_monitored/command/storage/eva) +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/command/meeting_room) "uxJ" = ( /obj/machinery/smartfridge/chemistry/preloaded, /obj/machinery/door/firedoor, @@ -61524,19 +62225,17 @@ /obj/structure/trap/stun, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"uya" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/engineering/storage/tech) "uyA" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, /obj/structure/broken_flooring/singular/directional/south, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"uyF" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "uyH" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -61560,9 +62259,31 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/aft) +"uzu" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) +"uzA" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/disposalpipe/sorting/mail{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/lobby) "uzJ" = ( /turf/open/floor/iron, /area/station/cargo/storage) +"uzK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/lower) "uzY" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -61572,17 +62293,6 @@ dir = 1 }, /area/station/hallway/secondary/dock) -"uzZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "uAi" = ( /obj/structure/table/wood, /turf/open/floor/carpet/lone, @@ -61614,14 +62324,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/wood/tile, /area/station/command/bridge) -"uAX" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/floor, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) "uAY" = ( /turf/open/floor/plating, /area/station/maintenance/department/bridge) @@ -61646,17 +62348,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) -"uBo" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/machinery/light/floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/entry) "uBu" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -61712,6 +62403,14 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/captain/private) +"uBU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 9 + }, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) "uBY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/side, @@ -61739,6 +62438,15 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white/side, /area/station/hallway/primary/starboard) +"uCA" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "uCH" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/effect/turf_decal/stripes/line{ @@ -61748,17 +62456,45 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/plating, /area/station/engineering/atmos/storage/gas) -"uDg" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, +"uCS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"uCX" = ( +/obj/structure/table/reinforced, +/obj/machinery/newscaster/directional/east, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/clothing/gloves/color/yellow, +/obj/item/t_scanner, /turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/storage/tech) +"uDi" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/area/station/science/xenobiology) +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) +"uDj" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor/iron, +/area/station/science/lobby) "uDm" = ( /obj/effect/spawner/structure/window/reinforced, /obj/effect/turf_decal/stripes/corner{ @@ -61816,12 +62552,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"uDI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "uDQ" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, @@ -61851,6 +62581,16 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/stone, /area/station/command/corporate_suite) +"uEk" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "uEC" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/box/red/corners{ @@ -61881,13 +62621,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"uEQ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "uES" = ( /obj/machinery/door/window/brigdoor/right/directional/west{ id = "Cell 3"; @@ -61900,6 +62633,14 @@ }, /turf/open/floor/iron/dark/small, /area/station/security/brig) +"uEX" = ( +/obj/structure/kitchenspike, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "uEZ" = ( /obj/effect/turf_decal/siding/wideplating, /obj/effect/turf_decal/siding/wideplating{ @@ -61907,6 +62648,12 @@ }, /turf/open/floor/wood, /area/station/engineering/atmospherics_engine) +"uFc" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "uFe" = ( /obj/effect/turf_decal/arrows/red{ dir = 4; @@ -61930,16 +62677,6 @@ dir = 1 }, /area/station/command/bridge) -"uFt" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "uFw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, @@ -61950,17 +62687,6 @@ /obj/structure/cable, /turf/open/floor/iron/textured_half, /area/station/security/lockers) -"uFA" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Research Wing" - }, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/hallway/primary/starboard) "uFQ" = ( /obj/structure/closet/crate/coffin, /obj/structure/window/spawner/directional/south, @@ -61971,12 +62697,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, /turf/open/floor/engine/vacuum, /area/station/maintenance/disposal/incinerator) -"uFZ" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/vending/wardrobe/jani_wardrobe, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/small, -/area/station/service/janitor) "uGj" = ( /obj/effect/turf_decal/tile/green/half/contrasted, /obj/structure/table/glass, @@ -61987,27 +62707,6 @@ /obj/effect/mapping_helpers/requests_console/ore_update, /turf/open/floor/iron/white, /area/station/medical/virology) -"uGA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Research Wing" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "rdrnd"; - name = "Research and Development Shutters" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/hallway/primary/starboard) "uGF" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, @@ -62030,17 +62729,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"uGN" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/siding{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) "uGO" = ( /obj/structure/bed, /obj/effect/turf_decal/siding/red{ @@ -62051,25 +62739,24 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/small, /area/station/security/brig) -"uGT" = ( +"uGW" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/siding{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/white/side, +/area/station/science/research) +"uGX" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) -"uGU" = ( -/obj/effect/mapping_helpers/mail_sorting/science/research, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 10 - }, +/obj/structure/cable, +/turf/open/floor/iron/white/side, /area/station/science/research) "uHc" = ( /obj/structure/frame/machine, @@ -62079,14 +62766,6 @@ "uHd" = ( /turf/closed/wall, /area/station/science/robotics/lab) -"uHf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/departments/rndserver/directional/south, -/obj/structure/cable, -/turf/open/floor/iron/white/side, -/area/station/science/research) "uHo" = ( /obj/machinery/light/small/directional/east, /obj/machinery/computer/records/security{ @@ -62094,6 +62773,19 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) +"uHr" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table/glass, +/obj/item/folder/red{ + pixel_y = 7; + pixel_x = 7 + }, +/obj/machinery/cell_charger{ + pixel_x = -1; + pixel_y = -1 + }, +/turf/open/floor/iron/smooth, +/area/station/command/bridge) "uHv" = ( /obj/structure/rack, /obj/item/pipe_dispenser, @@ -62142,12 +62834,6 @@ dir = 1 }, /area/station/service/chapel/office) -"uHR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "uIj" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -62169,6 +62855,20 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/office) +"uIv" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/item/radio/intercom/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) +"uIy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "uIA" = ( /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 9 @@ -62185,20 +62885,6 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark/side, /area/station/cargo/lobby) -"uIP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/machinery/firealarm/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "uIT" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, @@ -62211,18 +62897,6 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/department/engine/atmos) -"uJc" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Applied Sciences" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_half, -/area/station/science/lobby) "uJi" = ( /obj/effect/turf_decal/tile/green/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -62232,6 +62906,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/service/hydroponics) +"uJm" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "uJq" = ( /obj/effect/spawner/random/structure/crate_abandoned, /turf/open/floor/plating, @@ -62261,6 +62941,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) +"uJP" = ( +/obj/effect/landmark/blobstart, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/grimy, +/area/station/maintenance/starboard/central) "uJV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -62309,15 +62997,6 @@ /obj/item/soap, /turf/open/floor/iron, /area/station/commons/dorms) -"uKH" = ( -/obj/machinery/camera/directional/north, -/obj/machinery/status_display/ai/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/research) "uKN" = ( /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, @@ -62336,6 +63015,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating/rust, /area/station/engineering/main) +"uLx" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/airlock/command/glass{ + name = "Telecommunications Server Room" + }, +/obj/structure/cable, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) "uLz" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -62345,17 +63033,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"uLD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 +"uLA" = ( +/obj/effect/turf_decal/trimline/dark/end{ + dir = 2 }, -/obj/machinery/duct, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/department/science/xenobiology) "uLO" = ( /obj/item/stack/sheet/cardboard{ amount = 14 @@ -62389,23 +63074,19 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/hallway/secondary/service) -"uMl" = ( -/obj/machinery/cryo_cell, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/small, -/area/station/medical/cryo) "uMu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/tram) -"uME" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) +"uMC" = ( +/obj/machinery/door/airlock/public{ + name = "Locker Room" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/textured_half, +/area/station/commons/fitness/recreation) "uMF" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -62448,12 +63129,12 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/cafeteria, /area/station/science/breakroom) -"uNe" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) +"uNq" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/closed/wall, +/area/station/medical/morgue) "uNz" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/dark_red{ @@ -62462,19 +63143,27 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/stone, /area/station/command/heads_quarters/hos) -"uNK" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/turf/open/floor/iron/dark, -/area/station/science/server) -"uNR" = ( -/obj/structure/chair{ - dir = 4; - pixel_y = -2 - }, +"uNO" = ( /obj/structure/cable, -/turf/open/floor/iron/cafeteria, -/area/station/science/breakroom) +/obj/machinery/airalarm/directional/north, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/office) +"uNT" = ( +/obj/effect/turf_decal/siding{ + dir = 6 + }, +/obj/machinery/firealarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/lab) "uNX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -62487,6 +63176,21 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/primary/aft) +"uOc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/science/explab) +"uOe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch/directional/west, +/obj/effect/landmark/event_spawn, +/obj/machinery/portable_atmospherics/pump/lil_pump, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "uOk" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/window/spawner/directional/south, @@ -62494,6 +63198,12 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) +"uOn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "uOt" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -62512,9 +63222,6 @@ }, /turf/open/floor/wood/tile, /area/station/maintenance/central/lesser) -"uOH" = ( -/turf/open/misc/dirt/station, -/area/station/medical/morgue) "uPf" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -62541,23 +63248,31 @@ }, /turf/open/floor/tram, /area/station/security/tram) -"uPJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/cable, +"uPx" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 +/obj/machinery/airalarm/directional/north, +/obj/item/clothing/head/cone{ + pixel_x = 6; + pixel_y = 1 }, -/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/area/station/hallway/secondary/dock) "uPM" = ( /obj/structure/urinal/directional/east, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white/small, /area/station/commons/toilet/restrooms) +"uPN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/station/engineering/storage/tech) "uPW" = ( /obj/structure/flora/bush/flowers_pp/style_2, /obj/structure/flora/bush/large/style_3, @@ -62569,13 +63284,17 @@ }, /turf/open/space/basic, /area/space/nearstation) -"uQb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +"uQa" = ( +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/turf/open/floor/plating, -/area/station/science/ordnance/storage) +/obj/machinery/firealarm/directional/north, +/obj/effect/landmark/start/depsec/science, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/security/checkpoint/science) "uQc" = ( /obj/machinery/smartfridge/chemistry/preloaded, /obj/machinery/door/firedoor, @@ -62623,6 +63342,13 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) +"uQH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/maintenance/department/medical/central) "uQI" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -62695,20 +63421,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/security/execution/education) -"uRP" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/arcade_boards, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) -"uRR" = ( -/obj/structure/table, -/obj/item/plant_analyzer, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron, -/area/station/security/prison/garden) "uRW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -62734,33 +63446,19 @@ }, /turf/open/floor/wood/parquet, /area/station/service/library) -"uSi" = ( -/obj/machinery/holopad, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) "uSj" = ( /turf/closed/wall/r_wall, /area/station/medical/medbay/central) -"uSo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/iron, +"uSx" = ( +/obj/structure/bodycontainer/morgue, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) +"uSI" = ( +/obj/structure/chair/stool/directional/east, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/herringbone, /area/station/commons/dorms) -"uSB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/west, -/obj/effect/landmark/navigate_destination/tcomms, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/lower) "uSM" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -62785,11 +63483,26 @@ }, /turf/open/floor/iron/textured_half, /area/station/commons/storage/art) -"uTb" = ( -/obj/structure/table/glass, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) +"uTi" = ( +/obj/structure/closet/crate/freezer/blood, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) +"uTo" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "uTz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -62832,39 +63545,18 @@ }, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) -"uTO" = ( -/obj/effect/spawner/structure/window/reinforced, +"uTV" = ( /obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/checkpoint/science) -"uTR" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/white/corner{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) "uUe" = ( -/obj/effect/turf_decal/siding/thinplating_new/terracotta, -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/obj/item/kirbyplants/organic/applebush, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) -"uUf" = ( -/obj/effect/turf_decal/siding{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) -"uUj" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/closed/wall/r_wall, +/area/station/command/corporate_dock) "uUq" = ( /obj/structure/table/wood, /obj/item/folder/yellow{ @@ -62907,6 +63599,13 @@ }, /turf/open/floor/stone, /area/station/service/bar) +"uUG" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/steam_vent, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "uUS" = ( /obj/machinery/door/airlock/research/glass{ name = "Cubicle" @@ -62926,18 +63625,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) -"uVo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "uVB" = ( /obj/item/kirbyplants/organic/plant17, /obj/structure/cable, @@ -62954,6 +63641,12 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/construction) +"uVE" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "uVH" = ( /obj/machinery/modular_computer/preset/civilian{ dir = 4 @@ -62961,6 +63654,13 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) +"uVO" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "uVT" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/hop) @@ -62986,18 +63686,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/science/robotics/augments) -"uWn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "uWo" = ( /turf/closed/wall, /area/station/medical/paramedic) +"uWr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "uWv" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/flora/bush/flowers_pp/style_random, @@ -63015,22 +63714,24 @@ }, /area/station/security/prison/safe) "uWz" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/machinery/light_switch/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/closed/wall/r_wall, -/area/station/command/corporate_dock) +/turf/open/floor/iron, +/area/station/commons/fitness/recreation/entertainment) "uWG" = ( /obj/structure/closet/firecloset, /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) -"uWQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/sorting/mail{ +"uWJ" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/lobby) +/obj/structure/cable, +/turf/open/floor/iron/smooth_large, +/area/station/science/robotics/mechbay) "uWZ" = ( /obj/machinery/door/airlock/public, /obj/effect/decal/cleanable/dirt, @@ -63053,18 +63754,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/aft) -"uXV" = ( -/obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Creature Pen"; - req_access = list("research") - }, -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Creature Pen"; - req_access = list("research") - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/science/xenobiology) "uXY" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/command/nuke_storage) @@ -63103,14 +63792,6 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) -"uYO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/south, -/obj/structure/broken_flooring/singular/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "uYY" = ( /obj/structure/closet/wardrobe/grey, /obj/effect/turf_decal/siding/wideplating/dark{ @@ -63123,14 +63804,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/security/courtroom) -"uZf" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/science/research) "uZk" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/chair{ @@ -63163,6 +63836,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/central/lesser) +"uZX" = ( +/obj/machinery/door/airlock/public{ + name = "Locker Room" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/textured_half, +/area/station/commons/fitness/recreation) "uZY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63178,6 +63858,13 @@ /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) +"vai" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "vam" = ( /obj/structure/flora/bush/large/style_random{ pixel_x = -20; @@ -63193,52 +63880,15 @@ /obj/structure/railing, /turf/open/space/basic, /area/space/nearstation) -"vaw" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/item/radio/intercom/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) -"vaR" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) -"vba" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/medical/chemistry) "vbp" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"vbq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/central) "vbA" = ( /obj/structure/sign/departments/science/alt/directional/east, /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) -"vbJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/commons/fitness/recreation) "vbK" = ( /turf/closed/wall, /area/station/science/research) @@ -63270,10 +63920,10 @@ /turf/open/floor/circuit, /area/station/tcommsat/server) "vbR" = ( -/obj/machinery/status_display/ai/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "vcd" = ( /obj/structure/chair{ dir = 8 @@ -63288,6 +63938,18 @@ }, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"vcr" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) +"vcw" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/hallway/secondary/command) "vcB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63309,45 +63971,10 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) -"vcW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Law Office" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/lawyer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/service/lawoffice) -"vdf" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/siding{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) "vdg" = ( /obj/structure/railing/corner, /turf/open/space/basic, /area/space/nearstation) -"vdj" = ( -/obj/effect/turf_decal/tile/blue, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk, -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/turf/open/floor/iron/dark/textured_edge{ - dir = 1 - }, -/area/station/command/heads_quarters/hop) "vdt" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/stripes/line{ @@ -63397,16 +64024,6 @@ }, /turf/open/floor/iron, /area/station/medical/chemistry) -"veg" = ( -/obj/effect/turf_decal/siding{ - dir = 6 - }, -/obj/item/assembly/igniter, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) "vej" = ( /turf/open/floor/plating, /area/station/maintenance/port/lesser) @@ -63416,6 +64033,10 @@ /obj/effect/landmark/atmospheric_sanity/ignore_area, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/engine/atmos) +"veq" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "vex" = ( /obj/effect/turf_decal/stripes/end, /obj/item/kirbyplants/random/fullysynthetic, @@ -63453,6 +64074,12 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark/herringbone, /area/station/security/execution/education) +"vff" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/science/lobby) "vfg" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -63489,14 +64116,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/smooth_large, /area/station/science/robotics/mechbay) -"vfH" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "vfI" = ( /obj/machinery/light_switch/directional/north, /obj/effect/turf_decal/siding/end{ @@ -63507,11 +64126,6 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) -"vfK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "vfN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -63575,26 +64189,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"vgy" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/dock) "vgz" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, /turf/open/floor/plating, -/area/station/tcommsat/server) +/area/station/maintenance/department/science/xenobiology) "vgL" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/effect/turf_decal/tile/brown/opposingcorners, @@ -63624,12 +64225,6 @@ }, /turf/open/floor/iron/dark/diagonal, /area/station/service/bar) -"vgY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "vhr" = ( /obj/structure/sink/directional/west, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -63644,18 +64239,6 @@ /obj/machinery/holopad, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"vhu" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/airlock/command/glass{ - name = "Telecommunications Server Room" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "comms-entrance-south" - }, -/obj/structure/cable, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) "vhI" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 4 @@ -63665,10 +64248,33 @@ }, /turf/open/floor/iron/dark, /area/station/security/processing) -"vid" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/aft) +"vhJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/science/research) +"vhM" = ( +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) +"vhV" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/pen{ + pixel_x = -2; + pixel_y = 3 + }, +/turf/open/floor/iron, +/area/station/cargo/sorting) +"vif" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/turf/open/floor/iron/white/small, +/area/station/command/heads_quarters/cmo) "vij" = ( /obj/structure/chair/comfy/black{ dir = 4 @@ -63687,18 +64293,6 @@ dir = 8 }, /area/station/science/research) -"viy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"viA" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/server) "viE" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -63706,30 +64300,10 @@ /obj/item/stack/cable_coil/cut, /turf/open/floor/plating, /area/station/maintenance/department/electrical) -"viK" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) -"viO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) "viP" = ( /obj/structure/closet/emcloset, /turf/open/floor/iron/small, /area/station/maintenance/starboard/central) -"viT" = ( -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "viW" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 4 @@ -63755,24 +64329,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"vje" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 10 +"vjc" = ( +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/structure/table/reinforced, -/obj/item/wrench, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/science/xenobiology) -"vjp" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/power/floodlight, -/obj/structure/alien/weeds, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "vjs" = ( /obj/structure/disposalpipe/segment, /obj/item/food/grown/pineapple{ @@ -63789,36 +64352,23 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/textured_half, /area/station/commons/toilet/restrooms) -"vjV" = ( -/obj/structure/cable, +"vjO" = ( +/obj/structure/alien/weeds, +/obj/effect/gibspawner/human, +/turf/open/misc/asteroid, +/area/station/maintenance/starboard/greater) +"vkg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/science/lower) -"vjX" = ( -/mob/living/basic/mining/lobstrosity, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) +/area/station/hallway/secondary/recreation) "vkh" = ( /turf/closed/wall, /area/station/service/bar) -"vkr" = ( -/obj/machinery/door/airlock/engineering{ - name = "Starboard Bow Solar Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/starboard/fore) -"vkt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/research) "vkC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/firealarm/directional/east, @@ -63826,39 +64376,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"vkD" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger{ - pixel_y = 3; - pixel_x = 1 - }, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high{ - pixel_y = 2; - pixel_x = 4 - }, -/obj/machinery/camera/autoname/motion/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "vkI" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 }, /turf/open/floor/wood/tile, /area/station/service/bar) -"vkJ" = ( -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = 9; - pixel_y = 4 - }, -/obj/item/radio{ - pixel_x = -6; - pixel_y = -3 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/security/science, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) "vkN" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -63892,12 +64415,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/auxlab/firing_range) -"vkV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/light/colour_cycle/dancefloor_b, -/area/station/maintenance/starboard/central) "vkW" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/structure/chair/office{ @@ -63925,6 +64442,15 @@ }, /turf/open/floor/plating, /area/station/security/prison/safe) +"vlp" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/lower) "vlq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/stool/directional/north, @@ -63934,13 +64460,6 @@ }, /turf/open/floor/light/colour_cycle/dancefloor_b, /area/station/maintenance/starboard/central) -"vlr" = ( -/obj/structure/fermenting_barrel, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/maintenance/department/science/xenobiology) "vlB" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, @@ -63956,6 +64475,7 @@ /area/station/maintenance/aft) "vlX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/chapel{ dir = 4 }, @@ -63968,6 +64488,10 @@ /obj/item/radio/intercom/chapel/directional/west, /turf/open/floor/iron/terracotta/diagonal, /area/station/service/chapel/office) +"vmg" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/station/maintenance/department/engine/atmos) "vmh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -63993,29 +64517,27 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/engineering/storage/tcomms) -"vmp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"vmo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/genetics) -"vmr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Maintenance" +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) +/obj/structure/table/wood/fancy/red, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "vmt" = ( /obj/structure/chair/stool/bamboo{ dir = 4 }, /turf/open/floor/iron/terracotta/diagonal, /area/station/service/chapel/office) +"vmx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/checkpoint/science) "vmB" = ( /obj/item/radio/intercom/directional/west, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -64032,12 +64554,6 @@ dir = 1 }, /area/station/service/chapel/office) -"vmJ" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/siding/corner, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) "vmL" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/airless, @@ -64057,18 +64573,18 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/wood, /area/station/service/chapel/office) +"vmZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/science/xenobiology) "vne" = ( /turf/open/floor/wood, /area/station/service/chapel/office) -"vnf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/lower) "vni" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/stripes/line{ @@ -64183,10 +64699,12 @@ }, /turf/open/space/basic, /area/space/nearstation) -"vob" = ( -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +"voa" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/electric_shock, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/science/cytology) "voe" = ( /obj/structure/chair/sofa/bench/right{ dir = 1 @@ -64196,11 +64714,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/security/tram) -"voh" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/cytology) "voj" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/machinery/light/cold/directional/east, @@ -64231,6 +64744,17 @@ /obj/structure/sign/nanotrasen, /turf/closed/wall/r_wall, /area/station/command/teleporter) +"vpa" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/science/xenobiology) "vpk" = ( /obj/structure/cable, /turf/open/floor/iron/smooth, @@ -64278,17 +64802,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/carpet, /area/station/commons/dorms) -"vpT" = ( -/obj/structure/chair/sofa/bench{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/primary/central/fore) "vpZ" = ( /obj/effect/turf_decal/siding/yellow{ dir = 8 @@ -64338,26 +64851,31 @@ /obj/machinery/power/apc/worn_out/directional/east, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"vqM" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/medical/central) "vqU" = ( /obj/machinery/rnd/server/master, /turf/open/floor/circuit, /area/station/science/server) -"vqX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/airlock/command/glass{ - name = "Telecommunications Server Room" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) "vrf" = ( /obj/structure/hedge, /obj/machinery/light/small/directional/north, /turf/open/floor/wood, /area/station/service/chapel/office) +"vrg" = ( +/obj/machinery/light/floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/cubicle) "vrh" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -64387,10 +64905,6 @@ }, /turf/open/floor/wood, /area/station/security/detectives_office) -"vrB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/herringbone, -/area/station/commons/dorms) "vrO" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/grunge{ @@ -64448,8 +64962,21 @@ /obj/item/stack/sheet/iron/fifty, /turf/open/floor/iron/dark/small, /area/station/engineering/storage_shared) -"vsi" = ( +"vsg" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/command/bridge) +"vsi" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, /turf/open/floor/wood, /area/station/commons/fitness/recreation) "vso" = ( @@ -64461,30 +64988,42 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/white, /area/station/science/research) +"vsp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"vsq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron, +/area/station/maintenance/department/medical/central) "vsx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"vsJ" = ( +"vsS" = ( /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 10 }, -/obj/machinery/firealarm/directional/south, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/robotics/augments) -"vsQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/light_switch/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/smooth, -/area/station/maintenance/solars/starboard/aft) +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "vsW" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/box/red/corners{ @@ -64495,13 +65034,18 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"vtd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +"vtc" = ( +/obj/structure/flora/bush/flowers_yw/style_3{ + pixel_x = 3; + pixel_y = 2 }, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) +/obj/machinery/light/floor, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/grass/airless, +/area/station/hallway/primary/central/aft) "vtr" = ( /obj/machinery/light/floor, /turf/open/floor/wood/parquet, @@ -64535,15 +65079,6 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"vtU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door/directional/east{ - name = "Abandoned Lab Shutters"; - id = "abandoned_lab" - }, -/obj/item/bot_assembly/medbot, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "vtX" = ( /obj/effect/landmark/start/assistant, /obj/effect/turf_decal/tile/neutral, @@ -64564,14 +65099,6 @@ /obj/item/fuel_pellet, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) -"vum" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/smooth, -/area/station/maintenance/solars/starboard/aft) "vun" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -64603,16 +65130,6 @@ /obj/machinery/deepfryer, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) -"vuB" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Xenobiology Kill Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron, -/area/station/science/xenobiology) "vuD" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -64679,13 +65196,6 @@ }, /turf/open/floor/carpet, /area/station/commons/dorms) -"vve" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass{ - name = "Aft Corridor" - }, -/turf/open/floor/iron/textured_half, -/area/station/hallway/primary/aft) "vvs" = ( /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, @@ -64717,6 +65227,14 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/general, /turf/open/floor/catwalk_floor, /area/station/engineering/break_room) +"vvI" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "vvK" = ( /obj/structure/table, /obj/effect/turf_decal/tile/green/fourcorners, @@ -64743,6 +65261,16 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/wood, /area/station/commons/fitness/recreation) +"vwa" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/science/xenobiology) "vwc" = ( /obj/structure/chair/comfy/brown{ buildstackamount = 0; @@ -64766,22 +65294,27 @@ }, /turf/open/floor/iron/textured_half, /area/station/hallway/primary/aft) +"vwj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/machinery/door/airlock/research/glass{ + name = "Smoking Lounge" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron, +/area/station/science/lower) "vws" = ( /obj/structure/closet/firecloset, /turf/open/floor/iron/small, /area/station/maintenance/department/medical/central) -"vwE" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/item/kirbyplants/random{ - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ - dir = 8 - }, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/server) "vwI" = ( /obj/structure/closet/secure_closet/hos, /obj/item/clothing/shoes/cowboy/black, @@ -64789,16 +65322,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/checker, /area/station/command/heads_quarters/hos) -"vwJ" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "vwQ" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/item/folder/red{ @@ -64836,6 +65359,10 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"vxl" = ( +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "vxm" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -64847,10 +65374,6 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"vxs" = ( -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron, -/area/station/commons/storage/art) "vxt" = ( /turf/closed/wall, /area/station/maintenance/department/engine) @@ -64877,17 +65400,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/electrical) -"vyi" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden, -/turf/open/floor/wood/tile, -/area/station/tcommsat/server) "vym" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/chair/office/light{ @@ -64896,6 +65408,22 @@ /obj/effect/landmark/start/geneticist, /turf/open/floor/iron/dark, /area/station/science/genetics) +"vys" = ( +/obj/effect/turf_decal/siding/thinplating/terracotta/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/commons/dorms) +"vyD" = ( +/obj/item/radio/intercom/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/research) "vyF" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/chair/sofa/bench/left{ @@ -64954,10 +65482,6 @@ /obj/structure/cable, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"vzD" = ( -/obj/effect/turf_decal/stripes/white/line, -/turf/open/floor/iron/dark/side, -/area/station/cargo/storage) "vzE" = ( /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/west, @@ -64977,14 +65501,6 @@ }, /turf/open/floor/engine/helium, /area/station/ai_monitored/turret_protected/ai) -"vzN" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Cytology Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/research, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/research) "vzV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -65012,6 +65528,12 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron, /area/station/security/tram) +"vAk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/small, +/area/station/hallway/primary/aft) "vAl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/table/wood, @@ -65026,15 +65548,6 @@ /obj/effect/turf_decal/tile/dark_red/fourcorners, /turf/open/floor/iron, /area/station/security/execution/transfer) -"vAw" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "vAx" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -65073,6 +65586,11 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white/textured_half, /area/station/science/lobby) +"vBa" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/commons/fitness/recreation) "vBG" = ( /obj/structure/table, /obj/machinery/microwave{ @@ -65087,6 +65605,13 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) +"vBS" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark/small, +/area/station/security/checkpoint/customs/auxiliary) "vCc" = ( /obj/machinery/door/airlock/public/glass{ name = "Lockers" @@ -65108,6 +65633,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"vCl" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tcomms) "vCm" = ( /obj/structure/railing{ dir = 1 @@ -65128,19 +65660,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) -"vCs" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "vCu" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/kitchen/small, /area/station/service/kitchen) +"vCL" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "vCO" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, @@ -65154,12 +65683,6 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/smooth_large, /area/station/science/ordnance/storage) -"vCZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "vDe" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/cable, @@ -65176,13 +65699,6 @@ /obj/machinery/shower/directional/south, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"vDC" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "vDG" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ dir = 4 @@ -65219,13 +65735,23 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"vEm" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, +"vEn" = ( +/obj/effect/turf_decal/tile/blue, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 + dir = 1 }, +/turf/open/floor/iron/white/corner{ + dir = 8 + }, +/area/station/hallway/secondary/dock) +"vEq" = ( +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 10 + }, +/obj/machinery/vending/wardrobe/coroner_wardrobe, /turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) +/area/station/medical/morgue) "vEz" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -65247,6 +65773,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"vEG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/steam_vent, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "vEL" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ dir = 4 @@ -65272,14 +65805,12 @@ "vEW" = ( /turf/closed/wall/r_wall, /area/station/security/prison/shower) -"vFh" = ( -/obj/effect/landmark/blobstart, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, +"vFb" = ( +/obj/structure/broken_flooring/corner/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/grimy, -/area/station/maintenance/starboard/central) +/turf/open/floor/plating, +/area/station/hallway/secondary/dock) "vFm" = ( /obj/effect/turf_decal/siding/blue, /obj/machinery/duct, @@ -65293,6 +65824,11 @@ /obj/structure/sign/poster/official/no_erp/directional/east, /turf/open/floor/iron/grimy, /area/station/maintenance/starboard/central) +"vFo" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload) "vFu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, @@ -65306,14 +65842,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"vFB" = ( -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "vFD" = ( /obj/structure/chair/sofa/bench{ dir = 4 @@ -65327,6 +65855,16 @@ dir = 1 }, /area/station/hallway/secondary/exit/departure_lounge) +"vFE" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "vFG" = ( /obj/machinery/computer/rdservercontrol{ dir = 8 @@ -65352,23 +65890,20 @@ /obj/item/storage/lockbox/loyalty, /turf/open/floor/iron, /area/station/security/tram) -"vGe" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/effect/landmark/start/clown, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "vGp" = ( /obj/structure/table/wood, /obj/machinery/light/small/red/dim/directional/south, /obj/item/flashlight/flare/candle, /turf/open/floor/iron/terracotta/diagonal, /area/station/service/chapel/office) +"vGv" = ( +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/engineering_all, +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "vGz" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -65400,18 +65935,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"vGX" = ( -/obj/structure/disposaloutlet{ - desc = "An outlet for the pneumatic disposal system. This one seems designed for rapid corpse disposal."; - name = "rapid corpse mover 9000"; - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/plating, -/area/station/medical/morgue) "vHu" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/closet/secure_closet/security/sec, @@ -65424,16 +65947,22 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"vHH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"vHC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 }, -/turf/open/floor/iron/dark/herringbone, -/area/station/security/courtroom) +/obj/effect/turf_decal/trimline/neutral/line, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=9.0-StarboardHall-ScienceFoyer"; + location = "8.0-Pharmacy-StarboardHall" + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "vHT" = ( /obj/effect/turf_decal/box/red/corners{ dir = 8 @@ -65462,15 +65991,9 @@ }, /turf/open/floor/wood, /area/station/engineering/atmos/office) -"vIa" = ( -/obj/effect/turf_decal/siding/dark_blue{ - dir = 5 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "vId" = ( -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/corner, /area/station/science/lower) "vIt" = ( @@ -65483,18 +66006,10 @@ /turf/open/floor/iron, /area/station/maintenance/starboard/aft) "vIz" = ( -/obj/structure/chair, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) -"vIC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "vIJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/firedoor, @@ -65506,6 +66021,13 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/central/fore) +"vIW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron, +/area/station/maintenance/department/medical/central) "vIX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -65586,23 +66108,6 @@ dir = 1 }, /area/station/hallway/secondary/entry) -"vJR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/medical{ - name = "Medbay" - }, -/obj/effect/turf_decal/delivery/red, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/iron/dark/small, -/area/station/medical/medbay/central) "vJV" = ( /obj/machinery/door/airlock/security/glass{ name = "Security Desk" @@ -65620,12 +66125,6 @@ "vKb" = ( /turf/open/floor/iron/dark, /area/station/medical/medbay/lobby) -"vKe" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/power/smes/full, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/construction) "vKi" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -65665,16 +66164,6 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/dark/small, /area/station/security/detectives_office) -"vKX" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/machinery/camera/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/science/lower) "vKY" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -65721,18 +66210,6 @@ /obj/item/gavelhammer, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"vLH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/research{ - name = "Augment Corridor" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/robotics/augments) "vLQ" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -65752,11 +66229,14 @@ /obj/effect/turf_decal/box/white, /turf/open/floor/engine, /area/station/engineering/atmospherics_engine) -"vMi" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) +"vMo" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Recreation" + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "vMr" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/alien/weeds, @@ -65788,25 +66268,24 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"vMH" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/storage/tech) "vMI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) -"vMJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/sorting/mail, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/primary/aft) "vMP" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -65828,6 +66307,15 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/security/tram) +"vNe" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 5 + }, +/area/station/science/research) "vNq" = ( /obj/machinery/washing_machine, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -65873,15 +66361,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"vOf" = ( -/obj/structure/chair{ - dir = 1; - pixel_y = -2 - }, -/obj/machinery/firealarm/directional/south, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/lower) "vOg" = ( /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, /turf/closed/wall/r_wall, @@ -65891,13 +66370,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/smooth, /area/station/commons/storage/tools) -"vOt" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, +"vOr" = ( /obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) "vOL" = ( /obj/structure/railing{ dir = 1 @@ -65913,6 +66390,16 @@ dir = 8 }, /area/station/engineering/main) +"vOZ" = ( +/obj/structure/table/glass, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/lawoffice) "vPa" = ( /obj/effect/turf_decal/siding{ dir = 5 @@ -65930,15 +66417,15 @@ /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/floor/grass, /area/station/science/genetics) -"vPs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/sign/departments/medbay/alt/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +"vPh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"vPu" = ( +/obj/machinery/airalarm/directional/south, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/commons/fitness/recreation) "vPw" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -65960,31 +66447,11 @@ "vPP" = ( /turf/closed/wall, /area/station/command/corporate_suite) -"vPS" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "vQk" = ( /obj/effect/spawner/random/structure/crate, /obj/machinery/computer/security/telescreen/entertainment/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"vQm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/sign/poster/official/report_crimes/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "vQp" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/structure/chair/sofa/bench/right{ @@ -66021,6 +66488,15 @@ /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/eighties/red, /area/station/hallway/primary/central/fore) +"vQK" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side, +/area/station/science/lower) "vRc" = ( /obj/effect/turf_decal/loading_area/white, /turf/open/floor/iron, @@ -66038,6 +66514,16 @@ /obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat_interior) +"vRh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/research) +"vRo" = ( +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "vRt" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66086,11 +66572,6 @@ /obj/effect/turf_decal/siding/wideplating, /turf/open/floor/wood, /area/station/engineering/atmos/pumproom) -"vSw" = ( -/obj/structure/cable, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "vSx" = ( /obj/structure/table/reinforced, /obj/item/kitchen/fork/plastic, @@ -66099,13 +66580,17 @@ }, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) -"vSI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"vSz" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/computer/records/medical/laptop{ + dir = 8; + pixel_y = 1 + }, +/obj/machinery/light/small/directional/east, /obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/small, -/area/station/service/bar) +/turf/open/floor/iron/dark, +/area/station/command/corporate_dock) "vSL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -66116,21 +66601,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"vSM" = ( -/obj/machinery/door/airlock/command{ - name = "Telecomms Server Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "comms-entrance-north" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) "vSW" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, @@ -66142,28 +66612,6 @@ }, /turf/open/floor/iron, /area/station/commons/storage/art) -"vTf" = ( -/obj/machinery/air_sensor/ordnance_freezer_chamber, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ - dir = 4 - }, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) -"vTg" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/airlock/command/glass{ - name = "Telecommunications Server Room" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "comms-entrance-north" - }, -/obj/structure/cable, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/tcommsat/server) "vTj" = ( /obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt/dust, @@ -66194,6 +66642,12 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"vTv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "vTx" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -66325,6 +66779,13 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) +"vVw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/herringbone, +/area/station/commons/dorms) "vVx" = ( /obj/machinery/hydroponics/soil, /obj/item/food/grown/mushroom/plumphelmet, @@ -66380,26 +66841,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) -"vVX" = ( -/obj/machinery/telecomms/processor/preset_one, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/tcommsat/server) -"vWa" = ( -/obj/effect/landmark/start/coroner, -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"vWe" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"vWp" = ( +/obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner, -/area/station/science/lobby) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/atmospheric_sanity/ignore_area, +/obj/machinery/camera/autoname/motion/directional/west, +/turf/open/floor/iron, +/area/station/engineering/hallway) "vWr" = ( /obj/machinery/door/airlock/security/glass{ id_tag = "permaouter"; @@ -66442,12 +66893,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"vWC" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "vWF" = ( /obj/docking_port/stationary/laborcamp_home/kilo{ dir = 4 @@ -66490,14 +66935,6 @@ /obj/item/clothing/gloves/boxing/blue, /turf/open/floor/iron, /area/station/security/prison/workout) -"vXc" = ( -/obj/effect/turf_decal/trimline/dark/line, -/obj/effect/turf_decal/trimline/dark/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/small, -/area/station/maintenance/department/science/xenobiology) "vXd" = ( /obj/item/flashlight/lantern/on, /obj/effect/turf_decal/siding/wood, @@ -66512,6 +66949,12 @@ /obj/item/reagent_containers/cup/bowl, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) +"vXm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "vXr" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -66542,11 +66985,6 @@ dir = 8 }, /area/station/science/lobby) -"vXH" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/lower) "vXL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -66558,13 +66996,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security) -"vYi" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/diagonal, -/area/station/ai_monitored/command/storage/eva) +"vYf" = ( +/obj/structure/table/reinforced, +/obj/machinery/light_switch/directional/west, +/obj/item/crowbar, +/obj/item/wrench, +/obj/item/pai_card, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "vYj" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -66583,6 +67022,14 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/security/courtroom) +"vYC" = ( +/obj/effect/turf_decal/weather/snow, +/obj/machinery/gibber, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "vYD" = ( /obj/effect/turf_decal/siding/red{ dir = 5 @@ -66612,28 +67059,12 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) -"vYL" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/firealarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 10 - }, -/area/station/science/research) "vYO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/checker, /area/station/security/breakroom) -"vYS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/grimy, -/area/station/maintenance/starboard/central) "vYT" = ( /obj/structure/table, /obj/item/pen{ @@ -66664,15 +67095,17 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"vZf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, -/turf/open/floor/plating, -/area/station/science/ordnance/testlab) "vZm" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/processing) +"vZt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "vZu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -66714,12 +67147,17 @@ }, /turf/open/floor/iron/cafeteria, /area/station/hallway/secondary/exit/departure_lounge) -"vZX" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/item/folder/red, -/turf/open/floor/iron, -/area/station/security/courtroom) +"wal" = ( +/obj/structure/flora/bush/flowers_br/style_random{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/grass/airless, +/area/station/hallway/primary/central/aft) "wap" = ( /obj/structure/railing{ dir = 1 @@ -66732,12 +67170,6 @@ dir = 8 }, /area/station/engineering/break_room) -"wat" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/courtroom) "waD" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -66776,14 +67208,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) -"waY" = ( -/obj/effect/turf_decal/weather/snow, -/obj/machinery/gibber, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "wbd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66813,6 +67237,17 @@ dir = 1 }, /area/station/science/lower) +"wbq" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "wbt" = ( /obj/structure/disposalpipe/segment, /obj/structure/closet/secure_closet/quartermaster, @@ -66822,33 +67257,31 @@ }, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/qm) +"wbu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/siding{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/lobby) "wbH" = ( /obj/machinery/holopad, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/service/chapel/office) -"wbO" = ( -/obj/effect/turf_decal/siding{ - dir = 6 - }, -/obj/machinery/firealarm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +"wco" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lab) +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/science/research) "wcp" = ( /turf/closed/wall/r_wall, /area/station/science/genetics) -"wcq" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, -/turf/open/floor/iron/white/small, -/area/station/science/server) "wcs" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/spawner/random/maintenance, @@ -66877,27 +67310,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/hallway/secondary/exit/departure_lounge) -"wcP" = ( -/obj/machinery/modular_computer/preset/cargochat/cargo, -/turf/open/floor/iron, -/area/station/cargo/sorting) -"wcR" = ( -/obj/structure/chair{ - pixel_y = -2 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) -"wcT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/cubicle) "wcV" = ( /obj/structure/closet/crate, /obj/item/food/breadslice/plain, @@ -66910,20 +67322,6 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) -"wcY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/button/door/directional/west{ - id = "engsm"; - name = "Radiation Shutters Control"; - req_access = list("engineering") - }, -/obj/structure/cable, -/obj/machinery/meter, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "wdk" = ( /turf/closed/mineral/random/stationside, /area/station/maintenance/starboard/greater) @@ -66942,13 +67340,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"wdS" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - dir = 4 - }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) "wdY" = ( /obj/effect/spawner/random/structure/table, /turf/open/floor/plating, @@ -66962,21 +67353,22 @@ }, /turf/open/floor/iron/smooth_large, /area/station/science/robotics/mechbay) -"wed" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/research{ - name = "Augment Corridor" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/robotics/augments) "wen" = ( /turf/closed/wall, /area/station/ai_monitored/turret_protected/aisat/maint) +"wer" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "weA" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 @@ -67016,20 +67408,32 @@ "wfn" = ( /turf/closed/wall, /area/station/engineering/break_room) -"wfp" = ( -/obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) "wfr" = ( /turf/closed/wall/r_wall, /area/station/medical/pharmacy) +"wft" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "wfG" = ( /obj/structure/disposalpipe/segment, /obj/machinery/firealarm/directional/west, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"wfP" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "wgj" = ( /obj/structure/table, /obj/item/stack/sheet/iron/fifty, @@ -67039,17 +67443,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/station/service/chapel/office) -"wgp" = ( -/obj/structure/cable, -/obj/machinery/holopad, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/smooth, -/area/station/hallway/secondary/command) +"wgr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/item/radio/intercom/command/directional/north, +/obj/effect/turf_decal/siding/dark/corner, +/turf/open/floor/iron/edge{ + dir = 8 + }, +/area/station/engineering/storage/tech) "wgs" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"wgt" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/grimy, +/area/station/commons/vacant_room/office) "wgv" = ( /obj/structure/railing{ dir = 1 @@ -67102,6 +67515,23 @@ /obj/effect/turf_decal/weather, /turf/open/floor/plating, /area/station/service/chapel/office) +"wgO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/east, +/obj/machinery/computer/atmos_control/ordnancemix{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"wgW" = ( +/obj/machinery/status_display/ai/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/research) "wha" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -67146,25 +67576,6 @@ }, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"whu" = ( -/obj/machinery/blackbox_recorder, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/tcommsat/server) -"whA" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Construction Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "whD" = ( /obj/machinery/research/anomaly_refinery, /turf/open/floor/iron/white/small, @@ -67205,22 +67616,12 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"whZ" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, +"wig" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"wie" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/effect/spawner/random/vending/colavend, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/cargo/lobby) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "win" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -67246,26 +67647,20 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"wiO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) "wiP" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/space/nearstation) -"wja" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_burn_chamber_input, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"wjq" = ( -/obj/structure/sign/painting/large/library{ +"wjk" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) +/obj/structure/cable, +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "wjr" = ( /obj/structure/tank_holder/extinguisher, /turf/open/floor/iron/white, @@ -67311,24 +67706,26 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) -"wkq" = ( -/obj/structure/cable, -/turf/closed/wall/r_wall, -/area/station/command/meeting_room) "wkF" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/hallway/secondary/recreation) -"wkG" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, +"wkX" = ( +/obj/item/kirbyplants/random, +/obj/machinery/light_switch/directional/west, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) +"wkY" = ( +/obj/structure/closet/secure_closet/engineering_chief, +/obj/item/storage/briefcase/secure, +/obj/item/lighter, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/wood, +/area/station/command/heads_quarters/ce) "wla" = ( /obj/effect/landmark/generic_maintenance_landmark, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67340,13 +67737,33 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"wlo" = ( +"wlr" = ( +/obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/bot{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/diagonal, -/area/station/ai_monitored/command/storage/eva) +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"wlB" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/door/airlock{ + id_tag = "AuxToilet2"; + name = "Unit 2" + }, +/turf/open/floor/iron/showroomfloor, +/area/station/maintenance/department/science/xenobiology) +"wmb" = ( +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/starboard) "wme" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -67356,16 +67773,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) -"wmu" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/fireaxecabinet/directional/east, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/command/meeting_room) "wmx" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -67390,13 +67797,6 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"wmD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "wmE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67438,6 +67838,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"wmZ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/engineering/main) "wnd" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -67486,19 +67893,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"wnI" = ( -/obj/machinery/door/airlock/glass, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) -"wnO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/research) "wnR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67517,9 +67911,21 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/dark/small, /area/station/medical/chemistry) +"woc" = ( +/obj/structure/fermenting_barrel, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) "woi" = ( /turf/closed/wall/r_wall, /area/station/maintenance/solars/starboard/fore) +"wow" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "woz" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/machinery/camera/autoname/directional/east, @@ -67538,10 +67944,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/dark/hidden{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /turf/open/floor/wood/tile, @@ -67578,13 +67981,6 @@ /obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark, /area/station/security/office) -"woT" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "woY" = ( /obj/structure/chair/stool/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67621,19 +68017,6 @@ "wpO" = ( /turf/closed/wall/r_wall, /area/station/security/processing) -"wqb" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/machinery/requests_console/directional/east{ - department = "Xenobiology"; - name = "Xenobiology Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/ore_update, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) "wqj" = ( /turf/closed/wall, /area/station/commons/toilet/restrooms) @@ -67675,11 +68058,20 @@ }, /turf/open/floor/wood, /area/station/engineering/main) -"wqY" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/prison/workout) +"wqZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/dock) "wrj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67715,6 +68107,15 @@ /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron/white/small, /area/station/commons/toilet/restrooms) +"wry" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/small, +/area/station/commons/fitness/locker_room) "wrD" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -67723,16 +68124,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"wrF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/neutral/end{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "wrO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/dark_red/opposingcorners, @@ -67751,41 +68142,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/carpet/lone, /area/station/service/abandoned_gambling_den) -"wrW" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/computer/security{ - dir = 8 +"wrT" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ + dir = 6 }, -/obj/machinery/camera/directional/east, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/light_switch/directional/south, /turf/open/floor/iron/dark, -/area/station/command/corporate_dock) -"wrZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"wsa" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 - }, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs/auxiliary) +/area/station/science/ordnance/testlab) "wsb" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67798,16 +68161,18 @@ /obj/effect/spawner/random/engineering/toolbox, /turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/medical/central) -"wsG" = ( +"wsD" = ( +/obj/effect/decal/cleanable/glass, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_red{ - dir = 1 +/turf/open/floor/eighties, +/area/station/service/abandoned_gambling_den/gaming) +"wsJ" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/chair/sofa/bench/left{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/security/prison) +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "wsL" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/spawner/random/maintenance, @@ -67815,24 +68180,6 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"wsR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) -"wtc" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "wtd" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/poddoor/shutters{ @@ -67877,20 +68224,6 @@ "wtt" = ( /turf/closed/wall, /area/station/ai_monitored/turret_protected/ai_upload) -"wtu" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/highsecurity{ - name = "AI Upload" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_half, -/area/station/ai_monitored/turret_protected/ai_upload) "wtv" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -67924,6 +68257,13 @@ /obj/effect/landmark/start/depsec/medical, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs/auxiliary) +"wtC" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "wtG" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/small/red/directional/east, @@ -67943,14 +68283,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"wtT" = ( -/obj/machinery/light/cold/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/lobby) "wtX" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/customs/auxiliary) @@ -67964,17 +68296,20 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/aft) -"wuj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "wum" = ( /turf/closed/wall/r_wall, /area/station/security/medical) +"wuo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/lobby) "wup" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 6 @@ -67984,16 +68319,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"wuq" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/obj/effect/mapping_helpers/dead_body_placer{ - bodycount = 2 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "wur" = ( /obj/structure/closet/l3closet/scientist, /obj/effect/turf_decal/stripes/line, @@ -68019,9 +68344,28 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/science/genetics) +"wuL" = ( +/obj/machinery/cryo_cell, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/small, +/area/station/medical/cryo) "wuM" = ( /turf/closed/wall, /area/station/command/heads_quarters/qm) +"wuN" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/diagonal, +/area/station/science/auxlab/firing_range) +"wuX" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/science/cytology) "wuY" = ( /obj/structure/chair/wood{ dir = 4 @@ -68029,6 +68373,16 @@ /obj/machinery/light/floor, /turf/open/floor/stone, /area/station/service/bar) +"wvj" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side, +/area/station/science/xenobiology) "wvk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, @@ -68042,6 +68396,24 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/central/fore) +"wvp" = ( +/obj/effect/turf_decal/trimline/dark/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/department/science/xenobiology) +"wvu" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/science/xenobiology) "wvv" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -68050,6 +68422,12 @@ /obj/item/clothing/mask/gas/cyborg, /turf/open/floor/iron/smooth, /area/station/service/greenroom) +"wvD" = ( +/obj/structure/bodycontainer/morgue/beeper_off{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "wvE" = ( /obj/structure/hedge, /turf/open/floor/iron/grimy, @@ -68061,12 +68439,21 @@ }, /turf/open/floor/iron, /area/station/cargo/office) -"wvM" = ( -/obj/machinery/light/floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/cubicle) +"wvX" = ( +/obj/structure/flora/bush/flowers_yw/style_3{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/structure/flora/bush/flowers_br/style_random{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/grass/airless, +/area/station/hallway/primary/central/aft) "wvZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -68100,75 +68487,40 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) -"wwz" = ( -/obj/machinery/computer/mech_bay_power_console{ - dir = 1 +"wwy" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 9 }, -/obj/effect/turf_decal/siding/thinplating_new/light{ - dir = 6 - }, -/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/turf/open/floor/iron/smooth_large, -/area/station/science/robotics/mechbay) -"wwI" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/lower) -"wwK" = ( +/turf/open/floor/iron/dark/small, +/area/station/medical/morgue) +"wwJ" = ( +/obj/machinery/light_switch/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/hallway/secondary/entry) +/area/station/command/heads_quarters/rd) "wwQ" = ( /obj/structure/chair/office{ dir = 4 }, /turf/open/floor/iron/white/small, /area/station/science/server) -"wwT" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "wwU" = ( /obj/structure/hedge, /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/grimy, /area/station/science/cubicle) -"wwV" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -7; - pixel_y = 6 - }, -/obj/item/pen{ - pixel_x = 8; - pixel_y = 8 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/primary/central/fore) "wwY" = ( /obj/effect/spawner/random/trash/mess, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"wxd" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/structure/cable, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/fore) +"wxu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard/central) "wxG" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/small/dim/directional/north, @@ -68215,15 +68567,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"wya" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/chem_dispenser, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/pharmacy) "wyb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68247,12 +68590,6 @@ /obj/effect/spawner/random/decoration/flower, /turf/open/floor/wood, /area/station/service/chapel/office) -"wyo" = ( -/obj/effect/turf_decal/tile/dark_red/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth, -/area/station/security/checkpoint/customs) "wyy" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/computer/scan_consolenew{ @@ -68306,6 +68643,18 @@ }, /turf/open/floor/engine/air, /area/station/engineering/atmos) +"wzg" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/cafeteria, +/area/station/science/breakroom) +"wzj" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/closed/wall, +/area/station/command/corporate_showroom) "wzv" = ( /turf/open/floor/plating, /area/station/maintenance/department/electrical) @@ -68337,6 +68686,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet/lone, /area/station/service/chapel/office) +"wzZ" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/instrument/harmonica, +/turf/open/floor/iron, +/area/station/security/prison/rec) "wAa" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -68351,15 +68706,6 @@ }, /turf/open/floor/iron/kitchen/small, /area/station/security/breakroom) -"wAf" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "wAh" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -68384,13 +68730,6 @@ }, /turf/open/floor/wood, /area/station/security/detectives_office) -"wAl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "wAS" = ( /obj/structure/table/wood, /obj/item/hand_labeler, @@ -68421,14 +68760,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"wBi" = ( -/obj/machinery/door/airlock/engineering{ - name = "Supplies Depot" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/construction) "wBm" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -68451,41 +68782,46 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"wBF" = ( +"wBG" = ( /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +/area/station/maintenance/central/lesser) "wBI" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/cytology) -"wBN" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/closed/wall/r_wall, -/area/station/science/ordnance/burnchamber) -"wCa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 5 - }, +"wBJ" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/medical/cryo) +/obj/structure/alien/weeds, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) +"wBX" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/airalarm/directional/north, +/obj/effect/mapping_helpers/airalarm/tlv_cold_room, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted, +/obj/effect/turf_decal/siding/white, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "wCc" = ( /obj/structure/lattice, /obj/effect/spawner/random/structure/grille, /turf/open/space/basic, /area/space/nearstation) -"wCt" = ( -/obj/machinery/flasher/directional/east{ - id = "hopflash" +"wCj" = ( +/obj/effect/turf_decal/siding{ + dir = 5 }, -/turf/open/floor/iron/half, -/area/station/hallway/primary/central/fore) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/small, +/area/station/science/lobby) "wCx" = ( /obj/effect/turf_decal/siding/green{ dir = 8 @@ -68550,6 +68886,18 @@ "wCR" = ( /turf/closed/wall, /area/station/cargo/boutique) +"wCS" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/closet/crate/large, +/obj/effect/spawner/random/entertainment/plushie, +/obj/effect/spawner/random/entertainment/plushie, +/obj/effect/spawner/random/entertainment/plushie, +/obj/effect/spawner/random/entertainment/plushie, +/obj/effect/spawner/random/entertainment/plushie, +/obj/structure/alien/weeds, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "wCX" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -68557,6 +68905,22 @@ "wCY" = ( /turf/closed/wall, /area/station/command/heads_quarters/cmo) +"wDc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/delivery/red, +/obj/machinery/door/airlock/medical/glass{ + id_tag = "MedbayFoyer"; + name = "Medbay Clinic" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "medlock"; + name = "Lockdown Shutters" + }, +/turf/open/floor/iron/white/small, +/area/station/medical/medbay/lobby) "wDn" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10 @@ -68571,10 +68935,25 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"wDy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/south, +/obj/structure/broken_flooring/singular/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "wDA" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"wDL" = ( +/obj/structure/bodycontainer/morgue/beeper_off{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "wDM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68591,6 +68970,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"wEl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "wEs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68610,11 +68995,15 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/textured_half, /area/station/service/hydroponics) -"wEw" = ( -/obj/structure/lattice/catwalk, +"wEC" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/space/basic, -/area/space/nearstation) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/science/lower) "wEF" = ( /obj/structure/table, /obj/machinery/light/small/directional/north, @@ -68635,15 +69024,6 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"wFa" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/structure/filingcabinet/chestdrawer, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) "wFd" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/smooth, @@ -68673,12 +69053,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"wFQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/steam_vent, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "wFV" = ( /obj/item/stack/sheet/iron, /obj/effect/landmark/generic_maintenance_landmark, @@ -68699,13 +69073,6 @@ /obj/structure/broken_flooring/corner/directional/south, /turf/open/floor/plating, /area/station/hallway/secondary/dock) -"wGq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/broken_flooring/singular/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/hallway/secondary/dock) "wGu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68756,27 +69123,10 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"wGU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark/small, -/area/station/tcommsat/server) "wHg" = ( /obj/structure/filingcabinet/filingcabinet, /turf/open/floor/iron/grimy, /area/station/science/cubicle) -"wHl" = ( -/obj/structure/transit_tube/crossing/horizontal, -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) -"wHJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/floor/iron/dark/small, -/area/station/tcommsat/server) "wHN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -68797,27 +69147,31 @@ /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"wHS" = ( -/obj/structure/disposalpipe/segment{ +"wHQ" = ( +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs) "wIc" = ( /obj/structure/window/spawner/directional/west, /obj/structure/flora/rock/pile/jungle/style_random, /turf/open/misc/sandy_dirt, /area/station/medical/medbay/lobby) -"wIm" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark/smooth_large, -/area/station/ai_monitored/command/storage/eva) +"wIo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/airlock/wood{ + name = "Bar Backroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/bar, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/service/bar) "wIp" = ( /obj/structure/window/reinforced/spawner/directional/north, /turf/open/space/basic, @@ -68832,6 +69186,11 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"wIY" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "wJd" = ( /turf/closed/wall, /area/station/hallway/secondary/construction) @@ -68934,14 +69293,6 @@ }, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai_upload) -"wKm" = ( -/obj/effect/turf_decal/siding/dark_blue/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "wKn" = ( /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, @@ -68956,6 +69307,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai_upload) +"wKE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/herringbone, +/area/station/commons/dorms) +"wKF" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/science/lab) "wKG" = ( /obj/structure/alien/resin/wall, /obj/structure/alien/weeds, @@ -69019,15 +69383,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"wLZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/east, -/obj/machinery/computer/atmos_control/ordnancemix{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "wMg" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -69049,17 +69404,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"wME" = ( -/obj/structure/table, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/spawner/round_default_module, -/obj/machinery/flasher/directional/east, -/obj/item/radio/intercom/directional/north{ - pixel_x = 27 - }, -/obj/structure/cable, -/turf/open/floor/circuit/red, -/area/station/ai_monitored/turret_protected/ai_upload) "wMG" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -69082,17 +69426,6 @@ "wMO" = ( /turf/closed/wall/r_wall, /area/station/science/server) -"wMP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light/cold/directional/north, -/obj/effect/landmark/start/hangover, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/lobby) "wMT" = ( /obj/structure/table, /turf/open/floor/iron/smooth, @@ -69105,22 +69438,20 @@ }, /turf/open/floor/plating, /area/station/medical/medbay/lobby) -"wNb" = ( -/obj/item/assembly/timer{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/machinery/newscaster/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/lobby) "wNd" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, /area/station/maintenance/fore/greater) +"wNl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/chair{ + pixel_y = -2 + }, +/obj/effect/turf_decal/siding/blue, +/turf/open/floor/iron/white/small, +/area/station/command/heads_quarters/cmo) "wNs" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -69167,12 +69498,6 @@ /obj/structure/thermoplastic, /turf/open/floor/tram, /area/station/security/tram) -"wNT" = ( -/obj/machinery/light_switch/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/command/heads_quarters/rd) "wNU" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/simple, @@ -69196,17 +69521,6 @@ /obj/machinery/light/small/dim/directional/north, /turf/open/floor/sepia, /area/station/maintenance/aft) -"wOc" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/science/xenobiology) "wOh" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/table/glass, @@ -69251,16 +69565,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/prison) -"wOn" = ( -/obj/structure/closet/crate/freezer/blood, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "wOp" = ( /turf/closed/wall, /area/station/service/abandoned_gambling_den) @@ -69384,20 +69688,6 @@ }, /turf/open/floor/iron, /area/station/medical/chemistry) -"wPX" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) "wQc" = ( /obj/structure/chair/stool/bar/directional/south, /obj/effect/turf_decal/siding/wood, @@ -69461,18 +69751,6 @@ }, /turf/open/floor/iron/grimy, /area/station/hallway/secondary/entry) -"wQP" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Network Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_half, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) "wQT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -69496,32 +69774,16 @@ }, /turf/open/floor/iron/cafeteria, /area/station/security/prison) -"wRd" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) "wRg" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"wRm" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) "wRo" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 5 +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ + dir = 10 }, +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_freezer_chamber_input, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/freezerchamber) "wRy" = ( @@ -69556,35 +69818,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"wRP" = ( -/obj/structure/cable, -/obj/machinery/camera/directional/south{ - c_tag = "Atmospherics - South" - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/table, -/obj/item/storage/box/mousetraps{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/restraints/legcuffs/beartrap{ - pixel_x = 8; - pixel_y = 13 - }, -/obj/item/flashlight{ - pixel_y = 4 - }, -/turf/open/floor/iron/white/small, -/area/station/service/janitor) -"wRU" = ( -/obj/effect/landmark/start/coroner, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "wSg" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -69612,14 +69845,10 @@ /obj/item/stack/medical/gauze, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"wSL" = ( -/obj/structure/bonfire, -/obj/item/storage/box/matches{ - pixel_x = -4; - pixel_y = -6 - }, -/turf/open/misc/dirt/station, -/area/station/medical/morgue) +"wSS" = ( +/obj/structure/broken_flooring/side/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "wSZ" = ( /turf/closed/wall/r_wall, /area/station/maintenance/hallway/abandoned_command) @@ -69646,6 +69875,12 @@ /obj/structure/tank_dispenser, /turf/open/floor/plating, /area/station/hallway/secondary/dock) +"wTA" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor, +/area/station/hallway/secondary/entry) "wTH" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -69706,30 +69941,6 @@ /obj/structure/curtain/cloth/fancy, /turf/open/floor/iron/grimy, /area/station/cargo/boutique) -"wTU" = ( -/obj/structure/table/glass, -/obj/machinery/fax{ - fax_name = "Chief Medical Officer's Office"; - name = "Chief Medical Officer's Fax Machine"; - pixel_y = 13 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/button/door/directional/south{ - id = "cmoprivacy"; - name = "CMO Privacy Shutters"; - pixel_x = -6; - req_access = list("cmo") - }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/button/door/directional/south{ - id = "medlock"; - name = "Medbay Lockdown Control"; - pixel_x = 6; - req_access = list("medical") - }, -/obj/machinery/keycard_auth/wall_mounted/directional/east, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) "wTX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69770,17 +69981,27 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white/small, /area/station/service/janitor) -"wVg" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) "wVr" = ( /obj/structure/filingcabinet/chestdrawer, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/iron/smooth, /area/station/cargo/lobby) +"wVx" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) +"wVC" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/camera/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood/tile, +/area/station/science/lower) "wVI" = ( /obj/machinery/biogenerator, /obj/machinery/light/small/dim/directional/north, @@ -69801,14 +70022,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) -"wWs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "wWz" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/side{ @@ -69825,31 +70038,9 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"wWN" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters{ - dir = 1; - id = "abandoned_lab"; - name = "Abandoned Lab Shutters" - }, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) -"wWR" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/orange, -/obj/item/restraints/handcuffs, -/obj/item/reagent_containers/spray/pepper, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "wWS" = ( /turf/open/floor/iron, /area/station/security/prison) -"wWU" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/storage/tech) "wWX" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 @@ -69923,6 +70114,25 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"wXM" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/vending/coffee, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/grimy, +/area/station/hallway/secondary/entry) +"wXX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/light/small/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/science/robotics/augments) "wYa" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -69951,6 +70161,11 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) +"wYY" = ( +/obj/machinery/vending/boozeomat, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/captain/private) "wZa" = ( /obj/docking_port/stationary{ dir = 8; @@ -70005,14 +70220,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark/herringbone, /area/station/hallway/primary/central/aft) -"wZA" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/central) "wZF" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -70034,13 +70241,13 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) -"xae" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +"xam" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side, +/area/station/science/research) "xap" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron, @@ -70052,6 +70259,11 @@ /obj/machinery/holopad, /turf/open/floor/iron, /area/station/commons/storage/art) +"xaF" = ( +/obj/structure/broken_flooring/singular/directional/east, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "xaH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/airalarm/directional/north, @@ -70060,17 +70272,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"xaI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/kirbyplants/random, -/obj/machinery/status_display/ai/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "xaN" = ( /turf/closed/wall, /area/station/maintenance/starboard/central) @@ -70082,10 +70283,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/white, /area/station/science/robotics/augments) -"xaW" = ( -/obj/structure/hedge, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/storage/tech) "xba" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -70101,13 +70298,8 @@ /area/station/cargo/miningoffice) "xbe" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/hallway/secondary/command) +/turf/open/floor/grass, +/area/station/science/xenobiology) "xbg" = ( /turf/closed/wall, /area/station/commons/fitness/recreation) @@ -70140,6 +70332,13 @@ /obj/structure/hedge, /turf/open/floor/iron/dark, /area/station/command/corporate_dock) +"xbT" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/iron/white, +/area/station/science/cytology) "xbV" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/floor, @@ -70153,6 +70352,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"xca" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/broken_flooring/corner/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "xck" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos/office) @@ -70215,6 +70419,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/closed/wall, /area/station/hallway/primary/central/aft) +"xcN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/light/floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/server) "xcW" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 @@ -70231,6 +70443,10 @@ }, /turf/open/floor/iron, /area/station/science/cytology) +"xdc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) "xdo" = ( /obj/machinery/firealarm/directional/north, /obj/item/kirbyplants/random/fullysynthetic, @@ -70239,22 +70455,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/lockers) -"xds" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/science/research) -"xdu" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "xdv" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -70278,14 +70478,18 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) -"xdV" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 +"xdU" = ( +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) +"xdY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/storage/tech) "xed" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70301,16 +70505,11 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/space/basic, /area/space/nearstation) -"xer" = ( +"xet" = ( +/obj/item/kirbyplants/organic/applebush, /obj/structure/disposalpipe/segment, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/research) +/turf/open/floor/iron/smooth, +/area/station/hallway/primary/central/fore) "xeC" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -70337,6 +70536,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"xeN" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/bed/medical/emergency, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/central) "xeO" = ( /turf/closed/wall, /area/station/service/library) @@ -70345,21 +70553,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/wood, /area/station/service/chapel/office) -"xeT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/directional/north{ - c_tag = "Xenobiology - Cell 1"; - name = "xenobiology camera"; - network = list("ss13","xeno","rd") - }, -/obj/effect/turf_decal/box/red/corners{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 10 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "xeV" = ( /obj/effect/turf_decal/siding/dark_red{ dir = 4 @@ -70415,6 +70608,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"xfi" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "xfm" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70431,6 +70632,13 @@ /obj/effect/mapping_helpers/mail_sorting/security/hos_office, /turf/open/floor/iron, /area/station/security) +"xfu" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ + dir = 6 + }, +/turf/open/floor/iron/white, +/area/station/science/cytology) "xfy" = ( /obj/structure/transport/linear/tram, /obj/structure/fluff/tram_rail/floor{ @@ -70487,16 +70695,36 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/central/fore) +"xgb" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/navigate_destination/eva, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/fore) "xgd" = ( /obj/structure/closet/firecloset, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/engineering/main) -"xgg" = ( -/obj/structure/chair{ - pixel_y = -2 +"xgk" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ + dir = 4 }, +/obj/machinery/door/airlock/command{ + name = "Chief Engineer's Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/ce, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/small, -/area/station/security/checkpoint/customs/auxiliary) +/area/station/engineering/main) "xgw" = ( /obj/structure/rack, /obj/item/storage/medkit/regular, @@ -70555,12 +70783,15 @@ dir = 1 }, /area/station/cargo/sorting) -"xhf" = ( -/obj/effect/turf_decal/siding/blue{ +"xgP" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ dir = 1 }, -/turf/open/floor/iron/white/small, -/area/station/medical/storage) +/area/station/science/research) "xhk" = ( /obj/machinery/door/airlock/public/glass{ name = "Public Shrine" @@ -70571,6 +70802,13 @@ dir = 8 }, /area/station/hallway/primary/central/fore) +"xhr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/diagonal, +/area/station/ai_monitored/command/storage/eva) "xhC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -70588,15 +70826,23 @@ }, /turf/open/floor/iron/dark/small, /area/station/commons/fitness/locker_room) -"xhG" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +"xhF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/landmark/navigate_destination/lawyer, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) +"xhJ" = ( +/obj/machinery/computer/crew{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light_switch/directional/south, +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "xhM" = ( /obj/structure/table, /obj/item/book/manual/wiki/tcomms, @@ -70617,10 +70863,13 @@ "xia" = ( /turf/closed/wall, /area/station/science/cubicle) -"xid" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/maintenance/department/science/xenobiology) +"xif" = ( +/obj/machinery/light_switch/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/science/robotics/augments) "xik" = ( /turf/closed/wall, /area/station/security/prison/rec) @@ -70646,6 +70895,24 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"xiI" = ( +/obj/structure/table/glass, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 11; + pixel_y = 6 + }, +/obj/item/folder/blue{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/carpet/executive, +/area/station/command/meeting_room) "xiS" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -70658,16 +70925,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) -"xiT" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) "xjb" = ( /turf/open/floor/iron/white/side{ dir = 5 @@ -70690,31 +70947,9 @@ "xjg" = ( /turf/open/floor/iron/dark, /area/station/security/interrogation) -"xjo" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/warning/pods/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 8 - }, -/area/station/science/lower) "xjz" = ( /turf/closed/wall/r_wall, /area/station/security/prison/garden) -"xjC" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/dorms) "xjE" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -70739,6 +70974,12 @@ }, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"xjV" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/command/meeting_room) "xjX" = ( /obj/effect/turf_decal/siding/wideplating/dark/corner{ dir = 4 @@ -70776,22 +71017,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"xko" = ( -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "xkt" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/security/armory) +"xkI" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured, +/area/station/command/meeting_room) "xkO" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/white, @@ -70831,6 +71069,18 @@ "xli" = ( /turf/closed/wall, /area/station/hallway/primary/central/aft) +"xlk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/warning/pods/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 8 + }, +/area/station/science/lower) "xlx" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -70849,9 +71099,6 @@ /obj/structure/cable/multilayer, /turf/open/floor/plating, /area/station/science/xenobiology) -"xlP" = ( -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) "xlU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -70861,6 +71108,16 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"xlY" = ( +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/landmark/start/depsec/science, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/security/checkpoint/science) "xlZ" = ( /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) @@ -70896,6 +71153,10 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"xmB" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "xmL" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/effect/landmark/start/security_officer, @@ -70913,10 +71174,6 @@ /obj/effect/mapping_helpers/requests_console/supplies, /turf/open/floor/iron/white/small, /area/station/service/hydroponics) -"xnn" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/department/science/xenobiology) "xno" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -70950,38 +71207,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/electrical) -"xnR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, -/obj/effect/mapping_helpers/airalarm/link{ - chamber_id = "ordnanceburn" - }, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"xnY" = ( -/obj/effect/turf_decal/tile/blue, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white/corner{ - dir = 8 - }, -/area/station/hallway/secondary/dock) -"xoa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "xoh" = ( /obj/structure/cable, /obj/machinery/power/smes/full, @@ -71000,48 +71225,20 @@ /obj/structure/tank_holder/extinguisher, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) -"xoS" = ( -/obj/structure/cable, -/obj/structure/table/bronze, -/obj/effect/turf_decal/siding/thinplating_new/terracotta{ - dir = 4 +"xoL" = ( +/obj/structure/chair{ + pixel_y = -2 }, -/obj/item/reagent_containers/cup/glass/bottle/beer{ - pixel_x = 7; - pixel_y = 11 +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) +"xoM" = ( +/obj/effect/spawner/random/trash/bin, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 9 }, -/obj/item/reagent_containers/cup/glass/bottle/beer{ - pixel_x = -1; - pixel_y = 11 - }, -/obj/item/reagent_containers/cup/glass/bottle/beer{ - pixel_x = 3; - pixel_y = 7 - }, -/obj/item/reagent_containers/cup/glass/bottle/beer{ - pixel_x = -7; - pixel_y = 7 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) -"xoT" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/closet/cabinet, -/obj/effect/spawner/random/food_or_drink/cups, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/science/xenobiology) -"xoW" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) +/turf/open/floor/iron/white/small, +/area/station/science/ordnance/storage) "xpb" = ( /obj/structure/transit_tube/station/dispenser{ dir = 1 @@ -71093,25 +71290,22 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall, /area/station/maintenance/hallway/abandoned_command) -"xpR" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ +"xpU" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "xpV" = ( /obj/structure/transport/linear/tram, /obj/structure/thermoplastic, /turf/open/floor/tram, /area/station/security/tram) -"xpY" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "xqd" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/broken/directional/east, @@ -71123,6 +71317,11 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"xqn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/science/cubicle) "xqp" = ( /obj/structure/railing{ dir = 4 @@ -71144,21 +71343,26 @@ /obj/structure/chair/stool/directional/south, /turf/open/floor/eighties/red, /area/station/service/abandoned_gambling_den/gaming) -"xqv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/command/bridge) +"xqz" = ( +/obj/structure/table/reinforced, +/obj/item/binoculars, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "xqC" = ( /turf/closed/wall, /area/station/maintenance/hallway/abandoned_command) +"xqJ" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 6 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/iron/smooth_large, +/area/station/science/robotics/mechbay) "xqL" = ( /obj/structure/cable, /obj/machinery/power/emitter/welded, @@ -71170,6 +71374,14 @@ "xqS" = ( /turf/open/floor/eighties, /area/station/service/abandoned_gambling_den/gaming) +"xqU" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/command/bridge) "xqW" = ( /turf/closed/wall/r_wall, /area/station/hallway/primary/starboard) @@ -71179,36 +71391,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) -"xrc" = ( +"xrh" = ( /obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"xre" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/light/small/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/science/robotics/augments) -"xrt" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/primary/central/fore) +/obj/item/kirbyplants/random/fullysynthetic, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/firealarm/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/security/prison/garden) "xru" = ( /obj/item/kirbyplants/random/fullysynthetic, /obj/machinery/airalarm/directional/east, @@ -71263,15 +71453,6 @@ dir = 4 }, /area/station/command/heads_quarters/ce) -"xrX" = ( -/obj/machinery/door/window/right/directional/south{ - name = "Upload Console Window"; - req_access = list("ai_upload") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) "xrZ" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -71281,29 +71462,17 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/commons/storage/tools) -"xsb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"xse" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "xsf" = ( /turf/closed/wall/r_wall, /area/station/security/breakroom) -"xsh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/command/bridge) "xsj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71317,6 +71486,12 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/dorms) +"xsp" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/checkpoint/customs/auxiliary) "xsC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/extinguisher_cabinet/directional/west, @@ -71352,28 +71527,6 @@ }, /turf/open/floor/iron/white/small, /area/station/science/lobby) -"xsK" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/starboard) -"xsM" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/lobby) "xsP" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ @@ -71388,35 +71541,9 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/sorting) -"xsT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "xsV" = ( /turf/closed/wall/r_wall, /area/station/maintenance/solars/starboard/aft) -"xsW" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/dock) "xsX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71448,15 +71575,6 @@ /obj/item/stack/sheet/glass/fifty, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"xtD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/bar) "xtI" = ( /turf/closed/wall/r_wall, /area/station/science/breakroom) @@ -71466,13 +71584,6 @@ }, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) -"xtP" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating_new/terracotta/corner, -/turf/open/floor/wood/tile, -/area/station/command/meeting_room) "xtU" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, /obj/effect/landmark/navigate_destination/med, @@ -71491,22 +71602,14 @@ "xul" = ( /turf/open/floor/iron, /area/station/maintenance/port/aft) +"xun" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/space/basic, +/area/station/solars/starboard/fore) "xur" = ( /turf/closed/wall, /area/station/security/processing) -"xuu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=10.0-ScienceFoyer-StarboardHall"; - location = "9.0-StarboardHall-ScienceFoyer" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "xuv" = ( /obj/structure/railing{ dir = 8 @@ -71515,19 +71618,15 @@ /mob/living/basic/parrot/poly, /turf/open/floor/mineral/titanium, /area/station/command/heads_quarters/ce) -"xuD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"xuz" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Chemistry Lab" +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/dark/side{ + dir = 4 }, -/obj/effect/turf_decal/delivery/red, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/turf/open/floor/iron/dark/small, -/area/station/medical/chemistry) +/area/station/hallway/primary/fore) "xuF" = ( /obj/structure/window/reinforced/spawner/directional/west, /turf/open/space/basic, @@ -71545,6 +71644,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"xuP" = ( +/obj/effect/turf_decal/trimline/dark/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/department/science/xenobiology) "xuQ" = ( /obj/machinery/washing_machine, /obj/effect/turf_decal/tile/blue{ @@ -71553,22 +71658,21 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/cafeteria, /area/station/commons/dorms) -"xuW" = ( -/obj/structure/sign/poster/official/random/directional/north, +"xuR" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, +/obj/machinery/door/airlock/command/glass{ + name = "Telecommunications Server Room" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "comms-entrance-north" + }, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/research) -"xva" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/science/research) +/obj/machinery/atmospherics/pipe/heat_exchanging/junction, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/tcommsat/server) "xvf" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71585,36 +71689,22 @@ /turf/open/floor/iron, /area/station/hallway/primary/starboard) "xvv" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/side{ dir = 1 }, /area/station/science/research) -"xvx" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/obj/effect/landmark/start/depsec/science, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/checkpoint/science) "xvF" = ( /turf/open/floor/catwalk_floor/iron_dark, /area/station/science/xenobiology) -"xvK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"xvM" = ( +/obj/effect/turf_decal/tile/neutral, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "xvR" = ( /obj/machinery/firealarm/directional/east, /obj/effect/turf_decal/stripes, @@ -71635,21 +71725,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/project) -"xvV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) -"xvY" = ( -/obj/structure/cable, -/turf/open/floor/grass, -/area/station/science/xenobiology) "xwd" = ( /obj/structure/rack, /obj/item/storage/toolbox/emergency, @@ -71677,35 +71752,18 @@ /obj/machinery/recharge_station, /turf/open/floor/iron/smooth_large, /area/station/science/robotics/mechbay) -"xws" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/science/research) -"xwu" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/cubicle) "xwz" = ( /turf/closed/wall, /area/station/cargo/miningfoundry) +"xwC" = ( +/obj/effect/spawner/random/entertainment/arcade, +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/red/opposingcorners{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) "xwH" = ( /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, @@ -71732,15 +71790,19 @@ /obj/structure/bed/maint, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"xwU" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 9 +"xxa" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_burn_chamber_input, +/turf/open/floor/engine/vacuum, +/area/station/science/ordnance/burnchamber) +"xxh" = ( +/obj/machinery/door/airlock{ + name = "Abandoned Brewery" }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/ordnance/storage) +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/maintenance/department/science/xenobiology) "xxj" = ( /obj/effect/turf_decal/weather/dirt{ dir = 1 @@ -71762,6 +71824,14 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"xxw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/tcommsat/server) "xxA" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -71771,10 +71841,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) -"xxD" = ( -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "xxL" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron/checker{ @@ -71797,22 +71863,6 @@ }, /turf/open/floor/plating, /area/station/cargo/sorting) -"xyh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/delivery/red, -/obj/machinery/door/airlock/medical/glass{ - id_tag = "MedbayFoyer"; - name = "Medbay Clinic" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "medlock"; - name = "Lockdown Shutters" - }, -/turf/open/floor/iron/white/small, -/area/station/medical/medbay/lobby) "xyk" = ( /obj/structure/table, /obj/effect/turf_decal/tile/blue/full, @@ -71878,14 +71928,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/catwalk_floor, /area/station/hallway/secondary/entry) -"xyZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/broken_flooring/pile/directional/east, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "xzd" = ( /obj/structure/lattice, /obj/structure/railing/corner, @@ -71948,23 +71990,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"xAv" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/spawner/random/trash, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"xAA" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/structure/chair{ - pixel_y = -2 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) "xAG" = ( /turf/closed/wall, /area/station/maintenance/department/prison) @@ -71974,6 +71999,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/prison) +"xAM" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload) "xAO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -72003,32 +72032,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"xBi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "xBj" = ( /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/ai_upload) -"xBp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) -"xBx" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/entry) "xBD" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden, /obj/effect/turf_decal/tile/yellow, @@ -72056,11 +72071,6 @@ }, /turf/open/floor/mineral/titanium, /area/station/command/heads_quarters/ce) -"xCl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/stairs, -/area/station/hallway/primary/central/fore) "xCH" = ( /obj/structure/railing{ dir = 9 @@ -72083,7 +72093,7 @@ /area/station/security/execution/transfer) "xCT" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 + dir = 8 }, /turf/open/floor/iron/dark/smooth_edge{ dir = 8 @@ -72138,45 +72148,23 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/starboard) -"xDS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ +"xDz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) -"xEd" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/cubicle) +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "xEe" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"xEn" = ( -/obj/machinery/airlock_sensor/incinerator_ordmix{ - pixel_x = 24 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) -"xEo" = ( -/obj/effect/turf_decal/siding/thinplating_new/light{ - dir = 4 - }, +"xEq" = ( /obj/structure/cable, -/turf/open/floor/iron/smooth_large, -/area/station/science/robotics/mechbay) +/turf/open/floor/plating, +/area/station/maintenance/starboard/central) "xEv" = ( /obj/structure/sign/departments/holy/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -72198,40 +72186,6 @@ /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/misc/sandy_dirt, /area/station/commons/fitness/locker_room) -"xEQ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/science/ordnance/freezerchamber) -"xEW" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = 3; - pixel_y = -2 - }, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = 6; - pixel_y = 10 - }, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = 9; - pixel_y = 3 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -6; - pixel_y = 13 - }, -/obj/item/wrench/medical{ - pixel_x = -5 - }, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/small, -/area/station/medical/cryo) "xFe" = ( /turf/closed/wall, /area/station/security/lockers) @@ -72263,14 +72217,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/iron, /area/station/commons/dorms) -"xFI" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Freezer" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/freezerchamber) "xFL" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -72292,19 +72238,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"xFT" = ( -/obj/structure/table/wood, -/obj/item/pen/fountain{ - pixel_x = -4 - }, -/obj/item/coin/gold{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/grimy, -/area/station/commons/vacant_room/office) "xFZ" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -72327,6 +72260,30 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/security/checkpoint/escape) +"xGn" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/machinery/door/airlock/command{ + name = "Council Chambers" + }, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/command/heads_quarters/hop) +"xGq" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/chair/wood{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/service/barber) "xGw" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -72415,22 +72372,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron, /area/station/security/tram) -"xHS" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) -"xIf" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/herringbone, -/area/station/commons/dorms) "xIj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -72454,6 +72395,17 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"xIy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "aibridge" + }, +/obj/effect/spawner/random/structure/grille, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "xIA" = ( /obj/effect/turf_decal/arrows{ dir = 8 @@ -72478,6 +72430,12 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/plating, /area/station/engineering/gravity_generator) +"xIK" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron, +/area/station/science/lobby) "xIP" = ( /turf/closed/wall/r_wall, /area/station/hallway/secondary/construction) @@ -72492,11 +72450,15 @@ dir = 8 }, /area/station/hallway/secondary/dock) -"xJm" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) +"xJu" = ( +/obj/machinery/firealarm/directional/west, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/research) "xJw" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/neutral/line{ @@ -72529,19 +72491,14 @@ }, /turf/open/floor/wood, /area/station/engineering/atmos/storage) -"xJW" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, +"xJY" = ( /obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 + dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/diagonal, -/area/station/ai_monitored/command/storage/eva) +/turf/open/floor/iron, +/area/station/hallway/secondary/recreation) "xJZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72612,12 +72569,15 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/processing) -"xKA" = ( -/obj/machinery/atmospherics/components/trinary/filter{ +"xKy" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "xKG" = ( /turf/open/floor/iron, /area/station/hallway/primary/port) @@ -72627,6 +72587,14 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"xKL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/sign/departments/court/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "xKQ" = ( /obj/effect/turf_decal/tile/dark_red/fourcorners, /obj/machinery/firealarm/directional/north, @@ -72650,14 +72618,6 @@ }, /turf/open/floor/plating, /area/station/medical/medbay/lobby) -"xLk" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Xenobiology - Killroom Chamber"; - name = "xenobiology camera"; - network = list("ss13","xeno","rd") - }, -/turf/open/floor/circuit/telecomms/mainframe, -/area/station/science/xenobiology) "xLl" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -72692,21 +72652,15 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"xLz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/ai_monitored/turret_protected/ai_upload) "xLE" = ( /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"xLF" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 1; - name = "Engine Coolant Bypass" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "xLS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible, /obj/machinery/meter/monitored/distro_loop, @@ -72736,6 +72690,15 @@ /obj/machinery/light/floor, /turf/open/floor/noslip, /area/station/medical/treatment_center) +"xMb" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/side, +/area/station/science/xenobiology) "xMc" = ( /obj/machinery/holopad, /obj/machinery/light/cold/directional/west, @@ -72751,13 +72714,6 @@ /obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"xMk" = ( -/obj/machinery/light/floor, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/bridge) "xMo" = ( /obj/item/stack/cable_coil/five, /obj/effect/decal/cleanable/glass, @@ -72780,16 +72736,29 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) -"xMK" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 4 +"xMx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_x = -9; + pixel_y = 8 + }, +/obj/item/stock_parts/matter_bin{ + pixel_x = 6; + pixel_y = 7 + }, +/obj/item/stock_parts/matter_bin{ + pixel_x = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/science/ordnance) +/area/station/science/lab) +"xMA" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/turf/open/floor/iron, +/area/station/maintenance/department/science/xenobiology) "xMM" = ( /obj/item/stack/sheet/mineral/titanium, /turf/open/floor/tram, @@ -72824,14 +72793,12 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/plating, /area/station/hallway/primary/central/fore) -"xNL" = ( -/obj/machinery/door/airlock{ - name = "Auxiliary Bathrooms" - }, +"xNV" = ( +/obj/structure/broken_flooring/singular/directional/south, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "xNX" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 @@ -72874,13 +72841,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/port) -"xOT" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/storage/dice, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/station/security/prison/rec) "xPd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -72926,38 +72886,17 @@ }, /turf/open/floor/grass, /area/station/service/chapel) -"xPv" = ( -/obj/effect/landmark/start/cyborg, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"xPx" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/recreation) "xPH" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) -"xPJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/cable, +"xPM" = ( /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/area/station/science/lab) "xPN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72970,14 +72909,6 @@ /obj/item/kirbyplants/random/fullysynthetic, /turf/open/floor/wood/parquet, /area/station/medical/psychology) -"xPY" = ( -/obj/machinery/light/cold/directional/south, -/obj/effect/turf_decal/stripes/line, -/obj/structure/sign/departments/aiupload/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "xQa" = ( /turf/closed/wall, /area/station/medical/treatment_center) @@ -72994,15 +72925,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/dark/small, /area/station/science/xenobiology) -"xQj" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) "xQv" = ( /obj/structure/cable, /obj/structure/closet/secure_closet/hop, @@ -73019,12 +72941,6 @@ }, /turf/open/floor/plating, /area/station/command/heads_quarters/hop) -"xQy" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "xQD" = ( /obj/structure/chair/wood/wings, /obj/effect/turf_decal/siding/wood{ @@ -73039,6 +72955,11 @@ "xQJ" = ( /turf/closed/wall, /area/station/service/abandoned_gambling_den/gaming) +"xQW" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) "xQX" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/iron/diagonal, @@ -73072,6 +72993,17 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/freezer, /area/station/command/heads_quarters/captain/private) +"xRn" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "xRq" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, @@ -73090,11 +73022,6 @@ dir = 4 }, /area/station/hallway/primary/central/fore) -"xRB" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "xRC" = ( /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/supply/general, @@ -73106,15 +73033,6 @@ "xRH" = ( /turf/closed/wall, /area/station/maintenance/fore/lesser) -"xRI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "xRU" = ( /obj/machinery/door/airlock/maintenance/external{ name = "Command Storeroom" @@ -73136,15 +73054,6 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/station/service/abandoned_gambling_den/gaming) -"xSd" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/blue, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/primary/fore) "xSe" = ( /obj/structure/table/glass, /obj/structure/microscope, @@ -73166,6 +73075,17 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"xSD" = ( +/obj/structure/closet/crate/freezer/blood, +/obj/machinery/camera/autoname/directional/east, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "xSF" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -73204,6 +73124,13 @@ /obj/structure/sign/departments/med/directional/north, /turf/open/floor/iron/dark/side, /area/station/cargo/sorting) +"xSZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) "xTf" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -73212,12 +73139,6 @@ /obj/structure/broken_flooring/pile/directional/east, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"xTo" = ( -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/north, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "xTr" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -73225,6 +73146,32 @@ /obj/structure/closet/firecloset, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"xTt" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/storage/box/matches{ + pixel_x = -1; + pixel_y = -4 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/wood/large, +/area/station/maintenance/department/science/xenobiology) +"xTv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 8 + }, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ + dir = 8 + }, +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs/auxiliary) "xTB" = ( /obj/structure/chair/sofa/left{ dir = 4 @@ -73278,43 +73225,26 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) -"xUn" = ( -/obj/machinery/computer/records/medical{ +"xUm" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/radio/intercom/directional/east, -/obj/machinery/button/door/directional/north{ - id = "medlock"; - name = "Medbay Lockdown Control"; - req_access = list("medical") - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/obj/structure/cable, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "xUr" = ( /obj/structure/rack, /obj/machinery/flasher/directional/west, /obj/item/storage/toolbox/electrical, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai_upload) -"xUt" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) "xUy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"xUB" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/sign/plaques/kiddie{ - pixel_y = -4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) "xUK" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -73348,14 +73278,6 @@ }, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai_upload) -"xUT" = ( -/obj/effect/turf_decal/siding/thinplating/terracotta/corner{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/dorms) "xUV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -73379,60 +73301,50 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"xVd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, +"xVv" = ( /obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) -"xVj" = ( +/turf/open/floor/iron/white/small, +/area/station/science/cubicle) +"xVD" = ( +/obj/structure/rack, +/obj/item/poster/random_official{ + pixel_y = 7 + }, +/obj/item/poster/random_official{ + pixel_y = 3 + }, +/obj/item/poster/random_official, +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/science/xenobiology) +"xVG" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/airalarm/directional/north, -/obj/item/clothing/head/cone{ - pixel_x = 6; - pixel_y = 1 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/dock) -"xVn" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/landmark/start/roboticist, -/obj/machinery/conveyor_switch/oneway{ - id = "fab1"; - pixel_x = 10; - pixel_y = 11 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/robotics/lab) +/turf/open/floor/iron/white/side, +/area/station/science/research) "xVV" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/service/janitor) -"xVY" = ( -/obj/item/restraints/handcuffs, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/recharger{ - pixel_x = -5; - pixel_y = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/checkpoint/science) "xWd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"xWg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "xWk" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/stripes/line{ @@ -73463,19 +73375,6 @@ "xWs" = ( /turf/open/floor/catwalk_floor/iron_smooth, /area/station/science/robotics/mechbay) -"xWw" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/landmark/start/depsec/science, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/checkpoint/science) "xWz" = ( /obj/structure/cable, /obj/machinery/power/solar_control{ @@ -73498,6 +73397,15 @@ }, /turf/open/floor/iron/white, /area/station/science/research) +"xWF" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/plating/rust, +/area/station/medical/morgue) "xWK" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -73510,12 +73418,6 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) -"xWL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/light/colour_cycle/dancefloor_b, -/area/station/maintenance/starboard/central) "xWW" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue, @@ -73543,28 +73445,6 @@ }, /turf/open/floor/iron/small, /area/station/engineering/break_room) -"xXr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/primary/aft) -"xXy" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "xXD" = ( /obj/effect/turf_decal/siding/thinplating_new/light, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -73645,22 +73525,9 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/security/processing) -"xYz" = ( -/obj/structure/alien/weeds, -/obj/effect/gibspawner/human, -/turf/open/misc/asteroid, -/area/station/maintenance/starboard/greater) "xYD" = ( /turf/open/floor/grass, /area/station/service/chapel) -"xYE" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 9 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark/small, -/area/station/medical/morgue) "xYG" = ( /turf/closed/wall, /area/station/engineering/supermatter/room) @@ -73679,6 +73546,47 @@ "xYO" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/bridge) +"xYQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/iron/white/side, +/area/station/science/research) +"xYV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) +"xYY" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 9 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/clothing/head/utility/welding, +/turf/open/floor/iron, +/area/station/medical/chemistry) +"xZb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "xZe" = ( /obj/effect/landmark/start/chaplain, /obj/effect/turf_decal/siding/wood/end{ @@ -73692,14 +73600,6 @@ /obj/effect/landmark/navigate_destination/det, /turf/open/floor/iron, /area/station/hallway/primary/port) -"xZs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/effect/turf_decal/siding/white, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "xZx" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/jade, @@ -73708,14 +73608,12 @@ "xZy" = ( /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"xZE" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 4 +"xZJ" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix{ + dir = 8 }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) +/turf/open/floor/engine, +/area/station/science/ordnance/burnchamber) "xZN" = ( /obj/effect/turf_decal/tile/dark_red/anticorner/contrasted{ dir = 8 @@ -73728,14 +73626,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/hallway/primary/central/fore) -"xZX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "xZY" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -73743,6 +73633,15 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"yac" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/smooth, +/area/station/hallway/secondary/command) "yag" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, @@ -73754,6 +73653,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"yao" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/stairs/left{ + dir = 1 + }, +/area/station/maintenance/hallway/abandoned_command) "yap" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 4 @@ -73767,6 +73675,15 @@ /obj/machinery/power/tracker, /turf/open/space/basic, /area/station/solars/port) +"yaD" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/white/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/science/xenobiology) "yaE" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/dark_red{ @@ -73800,6 +73717,12 @@ }, /turf/open/floor/iron/dark/small, /area/station/service/chapel/storage) +"yba" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "ybh" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -73815,6 +73738,15 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/textured_half, /area/station/security/interrogation) +"ybo" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 8 + }, +/obj/effect/landmark/event_spawn, +/obj/machinery/light/floor, +/obj/structure/cable, +/turf/open/floor/iron/grimy, +/area/station/science/cubicle) "ybp" = ( /obj/machinery/air_sensor/oxygen_tank, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, @@ -73827,18 +73759,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"ybD" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Arrivals" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/hallway/secondary/entry) "ybJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -73861,6 +73781,28 @@ "ybO" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos) +"ybS" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger{ + pixel_y = 3; + pixel_x = 1 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = 2; + pixel_x = 4 + }, +/obj/machinery/camera/autoname/motion/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"ybW" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/surgery_tray/full/morgue, +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "ycb" = ( /obj/effect/turf_decal/weather/dirt{ dir = 6 @@ -73893,12 +73835,6 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/maintenance/port/aft) -"ycj" = ( -/obj/structure/broken_flooring/singular/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/hallway/secondary/dock) "ycq" = ( /obj/machinery/modular_computer/preset/cargochat/science{ dir = 1 @@ -73935,6 +73871,10 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"ydb" = ( +/mob/living/basic/mining/lobstrosity, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) "ydf" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -73959,6 +73899,20 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/wood/tile, /area/station/command/bridge) +"ydq" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Xenobiology - Cell 2"; + name = "xenobiology camera"; + network = list("ss13","xeno","rd") + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) "ydL" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt/dust, @@ -73970,6 +73924,18 @@ "yeh" = ( /turf/closed/wall, /area/station/hallway/primary/starboard) +"yel" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) +"yen" = ( +/obj/structure/table/glass, +/obj/item/radio/intercom/command, +/obj/item/paper/fluff/jobs/engineering/frequencies, +/turf/open/floor/carpet/executive, +/area/station/command/meeting_room) "yep" = ( /obj/structure/rack, /obj/item/storage/box/bodybags{ @@ -74025,13 +73991,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/hallway/primary/port) -"yeI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8 - }, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) "yeO" = ( /obj/structure/cable, /obj/structure/window/reinforced/spawner/directional/south, @@ -74040,15 +73999,6 @@ "yeP" = ( /turf/closed/wall/r_wall, /area/station/engineering/storage/tech) -"yeQ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/science/xenobiology) "yeS" = ( /obj/effect/spawner/structure/window, /obj/structure/curtain/cloth/fancy/mechanical{ @@ -74057,6 +74007,10 @@ }, /turf/open/floor/plating, /area/station/security/detectives_office) +"yeT" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/science/xenobiology) "yeY" = ( /obj/structure/window/spawner/directional/east, /obj/item/screwdriver, @@ -74074,6 +74028,14 @@ "yfa" = ( /turf/open/floor/plating, /area/station/maintenance/department/engine) +"yfd" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/herringbone, +/area/station/commons/dorms) "yfg" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/smooth_corner{ @@ -74086,13 +74048,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/white/side, /area/station/science/xenobiology) -"yfA" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/hop) "yfC" = ( /turf/closed/wall, /area/station/service/hydroponics) @@ -74135,16 +74090,28 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security) -"ygf" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Xenobiology Lab - Test Chamber"; - network = list("ss13","rd","xeno") - }, -/turf/open/floor/engine/bz, -/area/station/science/xenobiology) "ygu" = ( /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) +"ygB" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) +"ygC" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/solars/starboard/fore) "ygK" = ( /obj/structure/table, /obj/structure/window/reinforced/spawner/directional/west, @@ -74172,21 +74139,15 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/white, /area/station/security/medical) -"yha" = ( -/obj/structure/table, -/obj/machinery/door/window/right/directional/north{ - name = "Core Modules"; - req_access = list("captain") +"yhe" = ( +/obj/machinery/door/airlock/public{ + name = "Abandoned Dock" }, -/obj/effect/spawner/random/aimodule/harmless, -/obj/structure/cable, -/turf/open/floor/circuit/red, -/area/station/ai_monitored/turret_protected/ai_upload) -"yhn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/tcommsat/server) +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/secondary/dock) "yhq" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ @@ -74196,13 +74157,6 @@ dir = 10 }, /area/station/hallway/primary/starboard) -"yhB" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) "yhF" = ( /obj/machinery/door/firedoor, /turf/open/floor/iron, @@ -74225,13 +74179,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/port/aft) -"yhT" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) "yhW" = ( /obj/structure/cable, /turf/open/floor/iron/smooth, @@ -74244,6 +74191,18 @@ }, /turf/open/floor/wood, /area/station/service/chapel) +"yhY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/small, +/area/station/commons/fitness/locker_room) +"yib" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/south, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/captain/private) "yig" = ( /obj/structure/table, /obj/structure/window/reinforced/spawner/directional/east, @@ -74326,6 +74285,12 @@ }, /turf/open/floor/iron/white/side, /area/station/hallway/primary/starboard) +"yiU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "yiY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -74346,21 +74311,27 @@ /obj/machinery/light/no_nightlight/directional/south, /turf/open/floor/iron, /area/station/engineering/atmos) -"yja" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/broken_flooring/corner/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "yjd" = ( /turf/open/floor/iron/dark, /area/station/security/lockers) -"yjt" = ( -/obj/machinery/newscaster/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/cubicle) +"yju" = ( +/obj/effect/turf_decal/siding/white{ + dir = 9 + }, +/obj/structure/railing{ + dir = 9 + }, +/obj/structure/table/glass, +/obj/item/storage/box/monkeycubes{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/storage/box/monkeycubes{ + pixel_x = 6; + pixel_y = 2 + }, +/turf/open/floor/iron/dark/small, +/area/station/science/xenobiology) "yjy" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -74447,6 +74418,20 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/project) +"ykl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/sign/departments/medbay/alt/directional/west, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/primary/aft) "ykz" = ( /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, @@ -74458,18 +74443,19 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"ykV" = ( +/obj/machinery/firealarm/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 4 + }, +/area/station/science/lobby) "ykZ" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/small, /area/station/security/brig) -"ylo" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) "ylp" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -74477,14 +74463,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) -"ylq" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/effect/turf_decal/siding, -/obj/structure/cable, -/turf/open/floor/iron/white/small, -/area/station/science/lobby) "yly" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -74502,6 +74480,11 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/bitrunning/den) +"ylK" = ( +/obj/effect/turf_decal/tile/dark_red/anticorner/contrasted, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/security/checkpoint/customs) "ylR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -74519,6 +74502,22 @@ /obj/structure/alien/weeds, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"ymf" = ( +/obj/structure/cable, +/obj/machinery/keycard_auth/wall_mounted/directional/south, +/obj/machinery/pdapainter{ + pixel_y = 2 + }, +/turf/open/floor/iron/dark/textured_corner{ + dir = 4 + }, +/area/station/command/heads_quarters/hop) +"ymh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) (1,1,1) = {" dDB @@ -81502,7 +81501,7 @@ tYT aJq aJq pCn -bDQ +lXB lmJ lmJ lmJ @@ -83329,7 +83328,7 @@ nrn wGT wmL civ -tKD +pal ybO tYT tYT @@ -83586,7 +83585,7 @@ ybO xNX fAD civ -ruh +lqB ybO tYT tYT @@ -84407,7 +84406,7 @@ dDB dDB qyT qyT -ely +sFm qjk rCv uRe @@ -84663,7 +84662,7 @@ slw slw slw qyT -sYo +xwC wcG lct qAs @@ -84936,7 +84935,7 @@ yal yal yal tms -smh +tXp tms lxZ poE @@ -85191,7 +85190,7 @@ wRN yaI xyM yaI -xQy +klC qRN erg yaI @@ -85678,7 +85677,7 @@ pJm oRZ nJU ppk -eAf +nha ovQ oRr phj @@ -85695,7 +85694,7 @@ mhk tzq mhk mhk -aRa +eHF onw onw onw @@ -85705,7 +85704,7 @@ tDb ttX iNC qyT -nvK +ucj xBe xBe xBe @@ -85962,7 +85961,7 @@ tDE tWQ ggc qyT -sbx +ekc lgj kzv hky @@ -86192,8 +86191,8 @@ jTA qYG pZK xKI -kQM -kQj +qap +rxW pZK xKI mjQ @@ -86702,7 +86701,7 @@ rWP kMY jWA uzJ -jtB +fqZ jJw fxO rPM @@ -86959,7 +86958,7 @@ nyf ejq oEL uzJ -vzD +pEC amq mRD kEH @@ -87240,7 +87239,7 @@ xZe eWk hAB iSD -cib +dsa vTn wBm wXk @@ -87470,7 +87469,7 @@ jjq jjq jjq rST -iUN +dzL pIg rLp moz @@ -87982,7 +87981,7 @@ jjq dcu jNc qSH -mKR +nmN rST iVI fma @@ -87996,7 +87995,7 @@ lsH nmE dFn wCI -eJi +cws mhk nFY mhk @@ -88101,7 +88100,7 @@ tDn tDn enE xAG -uRR +nTH vZb hJC aHJ @@ -88201,7 +88200,7 @@ lYH fGU bYl ksM -cKy +vWp tAm iQr kfv @@ -88216,7 +88215,7 @@ hFd wdo tkN gBh -vob +gGD ybs knv knv @@ -88358,7 +88357,7 @@ tDn wVI npp nNB -iPy +jrF iWe aWt sis @@ -88473,7 +88472,7 @@ fTf tnF dAI whM -loq +rIh sXm fBO knv @@ -88492,7 +88491,7 @@ slY lFb qTS wtd -eQI +cnb vrW uUz uSM @@ -88615,7 +88614,7 @@ tDn eua izh xAG -jWd +xrh rEV cZA hyX @@ -89002,7 +89001,7 @@ dDB dDB blb slY -bUq +cPc xwz xwz cyQ @@ -89292,7 +89291,7 @@ bTo iSD nDj vUV -hmH +tSS tBk miF miF @@ -89528,8 +89527,8 @@ pNa wzz dXu ahI -lkL -hGA +vhV +aUg tsk nzy btG @@ -89785,8 +89784,8 @@ xgK upM jQG abv -wcP -kRb +ipI +aqx rJL nzy gOS @@ -89904,7 +89903,7 @@ eUb pcb oQF oQF -xOT +tNU oHa ume tyh @@ -90007,7 +90006,7 @@ tdb tdb tdb tdb -qyr +dOK mLZ naK lER @@ -90103,7 +90102,7 @@ utP bVO ezV wuc -iiX +dzp sos trp edK @@ -90161,8 +90160,8 @@ ora oTJ hTZ wjZ -jUp -lku +wzZ +fiR ume tyh pDu @@ -90305,7 +90304,7 @@ ePr eCV bjf wuM -mta +mRE xDl kjb wuM @@ -90318,7 +90317,7 @@ jQv mhk oOC xYD -dhu +cgi kZI miF yhX @@ -90574,7 +90573,7 @@ xYJ jQv mhk rqF -aFb +chk qzP sQy miF @@ -90665,8 +90664,8 @@ xAG lQA xAG dSu -nPH -wWR +sgk +ajk pzy dSu oQF @@ -90832,7 +90831,7 @@ ete mhk dlB wJT -sGk +eTE kZI miF yhX @@ -91068,9 +91067,9 @@ slY qgX kAn slY -fWj -hgp -hgp +uNO +bwU +bwU lKf cCC aBQ @@ -91289,7 +91288,7 @@ uaT nGP nPF wQi -rKR +wmZ rHe ecf bNq @@ -91325,7 +91324,7 @@ slY brO wZF dTj -umL +gKz uJV uJV gnO @@ -91394,7 +91393,7 @@ wuc mqH tiW geb -bRr +opq ufg wuc iai @@ -91545,7 +91544,7 @@ wfn gKL lwW kBZ -elv +xgk lwW rQi hgv @@ -91582,7 +91581,7 @@ slY apP jHC slY -hjA +fWA mnU nzO jln @@ -91646,12 +91645,12 @@ jWs lnz wuc xul -auf +iIc wuc ufg tiW qjE -bRr +opq ufg wuc jHa @@ -92049,7 +92048,7 @@ kMe knw fGf ayK -izf +rDn aWA ugA tIN @@ -92306,7 +92305,7 @@ kMe qkq wRy ayK -goS +puh aWA thb oxc @@ -92322,8 +92321,8 @@ fvs hpj rYL gpI -jlL -qQR +wkY +mft bNq neg wZr @@ -92340,7 +92339,7 @@ dDB dDB dDB qiz -lKV +cYe mGY hXf xGf @@ -92417,7 +92416,7 @@ dLv xzE wuc psX -mag +mLx wuc qjT ufg @@ -92563,7 +92562,7 @@ gAV qkq wRy urz -dkD +bqM iEc uuA oba @@ -92574,7 +92573,7 @@ gKL mZb pmg kxb -rsr +csp rFC qEm waX @@ -92597,7 +92596,7 @@ dDB dDB dDB qiz -lKV +cYe mGZ qOm fuV @@ -92831,7 +92830,7 @@ gKL nmX cyy paX -rdH +ntQ gpI ceP mcj @@ -92857,7 +92856,7 @@ sRg hBq mIA sRg -kuQ +ezC hgZ hgZ kaz @@ -92873,8 +92872,8 @@ sKj gXB rhF xLw -oim -wie +idb +fYE mhk jab rSM @@ -92976,10 +92975,10 @@ lkR hrO wtr skn -wsG +eSi wtr skn -eoa +jrc wtr leC lfC @@ -93103,7 +93102,7 @@ knv cvJ mid knv -esy +vmg blb blb blb @@ -93237,7 +93236,7 @@ tHK fUT wbf wbf -eTr +eNh wtr mtP hXY @@ -93329,7 +93328,7 @@ dyI oer oer oTf -eFi +bxS ayK ayK ayK @@ -93373,7 +93372,7 @@ hCX vwZ gEM iCw -bnn +tNL lBz mJe iDO @@ -93576,12 +93575,12 @@ dDB hdT tpW vNO -whZ -qUR -qUR -wcY -xLF -iiE +cEh +rbB +rbB +fBC +rkN +kzC mib mib mib @@ -93832,7 +93831,7 @@ ayK ayK ayK tpW -udO +vPh aNd aNd aNd @@ -93883,12 +93882,12 @@ gwV hNY gBk hNY -sJO +faK gxR inh jvB inh -iZK +ioe hBt hBt jQW @@ -93928,7 +93927,7 @@ rPA iUh sXs atS -aLs +kTo udA mJB vDe @@ -94089,7 +94088,7 @@ ayK lsF ayK rzb -qme +ciw aNd aNd aNd @@ -94125,13 +94124,13 @@ fQL gnS eiN eVY -llr +sSt eVY dAz eVY ccG oyU -qCx +gXY eVY eVY eVY @@ -94139,15 +94138,15 @@ eVY msg msg hsc -toU -dZJ -toU +hyM +gJO +hyM inR -cBu -cjY -jax -eFQ -jtY +fMj +eZQ +rNx +xuz +bNG nTa tlt eIM @@ -94185,7 +94184,7 @@ qGe gNP hzp atS -aLs +kTo fnP gvV itL @@ -94272,7 +94271,7 @@ wbf qen pqK brb -wqY +ajj muS vWY sVN @@ -94347,11 +94346,11 @@ mWB sCC ryr vgf -aeG +wlr dzh -cvc +kmr buI -kjs +hTB xUK vni nHH @@ -94381,11 +94380,11 @@ cow poL rjv hem -hFp -bgE -jRo -hKX -cFY +sTf +xKy +cUh +akn +qFz yeP yeP yeP @@ -94396,13 +94395,13 @@ qtG qtG qtG lYj -hJP -noz -niw -xSd -ubT +jVl +xgb +eEl +atl +jyz sUy -niT +avO qju qju tsF @@ -94635,40 +94634,40 @@ yeY dQi aeX cow -nFa -nFa -nFa -nFa -pLe -bnd -bnd -bnd +fHA +fHA +fHA +fHA +arS +aZq +aZq +aZq yeP -ihJ -xaW -wWU +usj +kOW +uya blb blb blb blb hCr hCr -cfq -cBA +uvC +utq hCr sUy -utF +uxi sUy -xoS -hwo +tjf +iCe noF tsF ijN mDL lfs -wCt -lEa -lWk +avz +doV +uxe xRV owR wLo @@ -94892,39 +94891,39 @@ lBm iIW kSc jAz -nFa -dhC -bqu -vkD -dsp -pem -fCs -euR +fHA +aLK +vYf +ybS +iHf +aqc +hOb +pAS yeP -fAf -iGu -wWU +bbR +nQY +uya xep xep xep xep hCr -mYp -wlo -olO -uxd +tph +xhr +nlX +dvw sUy -mnN -vbR -iDk -cmd -alb +pWs +kAI +sbS +lLm +dbV uVT uVT ueH xQw uVT -jsN +sdE jLI xZS vrn @@ -95149,37 +95148,37 @@ yjE wyH vxt vxt -nFa -kEx -odh -odh -ijV -odh -hcz -fNi -stj -bey -lSw -rkI -kgk -tPF -kgk -kgk -krB -nbv -xJW -fuv -iaH +fHA +aAm +pao +pao +vMH +pao +pcu +oac +rMq +nXK +gbq +mQg +nVk +qLJ +nVk +nVk +pmj +pwj +kdk +cWm +eAU sUy -pof -vIz -rto +lEZ +ePT +xiI gTi -qlP +xjV uVT sQI iri -bah +ymf uVT uVT gBw @@ -95406,38 +95405,38 @@ yjE pek uUA vTj -nFa -ncQ -qoA -xVd -qug -mmv -eYx -kpO +fHA +nTl +gog +jgx +mCq +xdY +uPN +aYw yeP -aYN -bMU -wWU +wgr +uqa +uya xuF xuF xuF xuF hCr -jEp -qGk -bxB -wIm +hsD +qHe +pEF +rQD sUy -uUe -vIz -jaK -hwx -iaV +rXD +ePT +oku +yen +jrx uVT -rEY +bjz irQ iIA -qCJ +pqA xQw jLI jYU @@ -95663,36 +95662,36 @@ yjE tZI nSd nSd -drO -clH -tIB -mmv -fXs -ifi -sYt -oVF +jSo +llZ +fnx +xdY +lxq +oVb +uCX +otz yeP -ait -xaW -wWU +iJD +kOW +uya blb blb blb blb hCr hCr -qek -igS +bpk +crQ sUy sUy -pUy -vIz -pfC +iEt +ePT +kuR hur -xtP +poy uVT -vdj -yfA +ldk +sLi iJg eHk xQw @@ -95920,14 +95919,14 @@ yjE vxt fBf dhK -nFa -rLt -cgt -uRP -nFa -nFa -nFa -nFa +fHA +tVg +vvI +mqm +fHA +fHA +fHA +fHA yeP yeP yeP @@ -95938,18 +95937,18 @@ dDB dDB dDB hCr -hkH -nmZ -wkq -fnz -aZS -gMe -mcn -reE -qly -qWL -idJ -itw +dgN +cUA +idY +gJc +rSe +fYy +kBf +fXp +nWn +xGn +toS +cCz iKe iWW uVT @@ -95970,7 +95969,7 @@ bLS xeO rbj xeO -sXD +tAd qSa feR aZh @@ -96177,11 +96176,11 @@ vxt iOx iOx mCL -nFa -pDK -cgt -kmC -nFa +fHA +vGv +vvI +hga +fHA aJq aJq aJq @@ -96195,15 +96194,15 @@ dDB dDB dDB hCr -mPx -vYi -wkq -gTH -ipf -wmu -gYK -jnh -hEm +srp +gII +idY +gXy +tXs +fxS +dSf +xkI +uul uVT idN pWB @@ -96434,13 +96433,13 @@ dhK dhK vxt ffp -nFa -dWS -aDC -qhl -nFa +fHA +hQb +dTO +suy +fHA aJq -vjX +ydb aJq aJq aJq @@ -96453,13 +96452,13 @@ blb ycC ycC pIS -lzT -hOD -gUm -mpJ +iuu +dtd +pMN +oMk xGJ xGJ -pLr +itG xGJ uVT qXb @@ -96691,11 +96690,11 @@ vxt ddy vxt ddy -nFa -bnd -bnd -bnd -nFa +fHA +aZq +aZq +aZq +fHA aJq aJq aJq @@ -96710,14 +96709,14 @@ dDB pIS uAK anb -xsh -owZ -xsh +xqU +dRN +xqU ahE -plz -pHI -jrU -qCj +jcw +tjC +orf +ndB uVT uVT eku @@ -96940,9 +96939,9 @@ aJq aJq aJq dDB -kDB -lZD -mdV +xIy +sxo +flJ dDB dDB dDB @@ -96967,11 +96966,11 @@ dDB ycC bQm wkh -jdJ -xMk -jYQ +eHz +tnT +vsg hcc -cuw +wzj bBN jwi qtd @@ -97197,9 +97196,9 @@ tYT dDB dDB dDB -cea -yhB -crE +jAF +jwk +mgK dDB dDB dDB @@ -97222,13 +97221,13 @@ dDB dDB dDB pIS -gBx +lPP mvh -nNe -tuW -tpl +mvQ +nCB +lmh hcd -plz +jcw pkh jwi aeC @@ -97243,7 +97242,7 @@ mvT vET kyO wQB -otC +khR jVM dqF sKh @@ -97260,7 +97259,7 @@ lZf qCK dvd dvd -gNX +xmB dvd tRJ wBc @@ -97454,9 +97453,9 @@ dDB dDB dDB dDB -cea -uAX -crE +jAF +cbL +mgK dDB dDB dDB @@ -97481,17 +97480,17 @@ dDB pIS gBz qqC -tMh -sUe -xqv -cEX +sjs +dGo +pjD +uny xGJ pie jwi jDa fyt uVT -njA +sIq lqt cpT xQv @@ -97500,7 +97499,7 @@ mvT vET ncL wQB -sgJ +wVx jVM bgl sjn @@ -97711,9 +97710,9 @@ dDB dDB dDB dDB -cea -yhB -crE +jAF +jwk +mgK dDB dDB dDB @@ -97738,11 +97737,11 @@ dDB pIS gBT mxa -nNe -biB -tpl +mvQ +oXz +lmh hcE -plz +jcw pkh jwi tBo @@ -97968,9 +97967,9 @@ blb dDB dDB dDB -iYr -cTP -nmq +cAu +dVi +swQ dDB dDB dDB @@ -97995,11 +97994,11 @@ dDB ycC ydk gFv -hoN -cKV -dHL +rPZ +iDb +chZ giU -cuw +wzj mID jwi jwi @@ -98047,7 +98046,7 @@ dDB tYX iNF diP -fVM +gfF tYX blb blb @@ -98226,7 +98225,7 @@ blb wen wen wen -cpA +avb wen wen rPf @@ -98254,9 +98253,9 @@ gCg mxe uFm rfo -xsh +xqU gjS -plz +jcw sDq jwi qtd @@ -98482,7 +98481,7 @@ dDB dDB bSs wBf -jpF +apz cpP csl dDG @@ -98511,7 +98510,7 @@ ycC iEk gJo qMK -ips +buK iEk xGJ xGJ @@ -98555,8 +98554,8 @@ fzT kUL tYX blb -aef -fBN +wvX +vtc dDB tYX tKl @@ -98765,11 +98764,11 @@ dDB dDB dDB ycC -gHe +brk noq hMK ueC -hdd +uHr hhk xGJ hxj @@ -98812,8 +98811,8 @@ qXP kTF iuR dDB -eVX -qGf +lMg +hrg blb iuR oqT @@ -99069,8 +99068,8 @@ qFc cEo tYX dDB -kii -nun +cXG +wal blb tYX rNN @@ -99282,7 +99281,7 @@ ycC gFg mQz noq -iqp +iax ueC bNd xGJ @@ -99299,7 +99298,7 @@ xMY dCu eXR wQB -wwV +qbU dMC ucO jVM @@ -99307,9 +99306,9 @@ jTn xXe jVM ulE -bvP -amK -kjx +sOa +dqi +hnQ xmt mog cCM @@ -99539,8 +99538,8 @@ ycC lfv kHi gLM -iqF -hdg +fgd +qVQ aEc xGJ hxj @@ -99556,7 +99555,7 @@ psc dCu rJZ wQB -xrt +mQI txW nCX jVM @@ -99565,8 +99564,8 @@ qkm qkm ruS jVM -bxl -bMn +glQ +iFc xmt uYM aTg @@ -99797,7 +99796,7 @@ ycC ycC ycC noq -byq +jvv tJF qoD jnZ @@ -99813,7 +99812,7 @@ voN sta rJZ wQB -vpT +dru txW eDi jVM @@ -99822,9 +99821,9 @@ mnH jVM tpQ jVM -ljg -ddF -pEU +rRZ +gQh +cEr duj vCu rxZ @@ -100053,13 +100052,13 @@ hsO gHP qjy ycC -nRd -hdH -nRd +tnK +tQC +tnK qoD -lIk +khy jVe -hUq +djD qSZ rpY iNg @@ -100079,8 +100078,8 @@ jVM jVM uvx jVM -iRQ -hWL +efv +fxw xmt vfI aTg @@ -100311,7 +100310,7 @@ gHV pRz pbE oUd -rXv +yac oUd fbl pPK @@ -100336,8 +100335,8 @@ jVM jGy aYj sON -ssY -waY +uEX +vYC xmt cME aTg @@ -100391,7 +100390,7 @@ rTy miA cON mBo -fsk +owE raE uCe wER @@ -100540,7 +100539,7 @@ jBA xTV dua gnA -dMX +tXI dZn cEK wct @@ -100568,20 +100567,20 @@ mks soO gCA gVc -xbe -kTH -pTh -mXk -wgp +mPg +goe +aUH +bgm +sBw kVe -pTh -kTH -kTH -pTh -nAn -ivl -tUc -cCl +aUH +goe +goe +aUH +vcw +xet +qPp +cZW ePk tgx jVM @@ -100828,17 +100827,17 @@ pPK jVe oUd pPK -hxA +aVu soO pPK pPK oUd jVe pPK -jxC -ufb -xCl -cYY +esG +bRG +qFT +mWb wNs wiF jVM @@ -101089,9 +101088,9 @@ jPa gIb nsc vzt -srl +aJJ soO -lIk +khy jye jOs mAv @@ -101129,7 +101128,7 @@ trB trB kHX kHX -dTg +ftt tYX dDB dDB @@ -101174,8 +101173,8 @@ ijY wgL lLH sSQ -sqV -dWz +uQH +vsq sSQ goB jbt @@ -101352,7 +101351,7 @@ ybh quU quU tsF -ubK +fcN lRM vuD qIb @@ -101372,7 +101371,7 @@ qhR pPU xkV gyy -phG +ekk gyy xkV cvV @@ -101420,7 +101419,7 @@ tLt sSQ aTp lpX -aXT +rwQ vFm fNR vDV @@ -101637,7 +101636,7 @@ spH nUd dPp aww -nsz +oqN iuR dDB dDB @@ -101676,8 +101675,8 @@ dYI mDl sSQ mXt -xhf -qEB +cPZ +hjr mGN grx vDV @@ -101688,7 +101687,7 @@ xXG wgL ngq sSQ -liH +iWB uOw eBQ ndp @@ -101933,7 +101932,7 @@ vYj sSQ rlr rlr -aip +juB egG rlr vDV @@ -102132,7 +102131,7 @@ pbd cig hxp wtv -oRv +pQc jVM kXC mae @@ -102149,7 +102148,7 @@ xkV cvV spH nUd -nJG +sxl aww bje tYX @@ -102161,9 +102160,9 @@ dDB dDB dDB qIf -uMl -aQr -wCa +wuL +gyF +mVV ulb vsx oED @@ -102182,7 +102181,7 @@ xQa dDB dDB xSO -wuj +gnG xrC icY sSQ @@ -102190,19 +102189,19 @@ vYj sSQ fAY cHO -xhf +cPZ lNf heF nFD -ljP -pKS -bkY +bqi +fFv +gPx lgQ mbq wgL hgF pVK -oZY +vIW aTc cku ndp @@ -102386,27 +102385,27 @@ wQB tgl lvA nyy -diK -djc -jgb +mgA +jII +dmE hRc jVM kXC jVM dxV -jDT +gjc fOq wJv pPU xkV -cQN -bXR +iBd +jsD gyy xkV swW vkh kPh -cSy +uiP bpY sMt tYX @@ -102418,9 +102417,9 @@ dDB dDB dDB qIf -xEW -dml -lXT +jmf +bhs +tci gnQ kIv wDo @@ -102429,7 +102428,7 @@ xuF xuF xQa pqN -tcz +dkp xIu jHi tAH @@ -102446,13 +102445,13 @@ sSQ vYj sSQ jxU -sGH -pPt +eNn +lEt fFD cbO vDV ahu -clt +irv jbr xRd kel @@ -102644,20 +102643,20 @@ tgl wHO pbG wvv -xvK -vGe +lIc +cJr xno jVM kXC jVM vkh -kWF +hJX wtw dJv lTy wAa uUB -fIl +tkj aYU pPO jFm @@ -102675,12 +102674,12 @@ dDB dDB dDB qIf -tgJ -aQr -bDj +lLd +gyF +uBU onP vsx -ogr +sZw tFQ blb blb @@ -102703,13 +102702,13 @@ sSQ miA sSQ lgo -fqn +cpa ogv lNf cGI vDV -oez -ppp +vif +wNl elC mdm cAd @@ -102901,19 +102900,19 @@ tgl tgl xHD tgl -uIP +psw dsK pHY jVM kXC wKH vkh -hcQ -jcB -gGx -xtD -gIv -cAl +ibf +wIo +mpw +nlh +jBy +aTh npI npI wOt @@ -102943,11 +102942,11 @@ xep xep xQa ayf -qTk +xDz rFy vbO -llC -rbO +vZt +vCL llP xQa xep @@ -102969,11 +102968,11 @@ dBt don cSr krY -wTU +ceY wgL swJ sSQ -lQZ +nJm sSQ sSQ lTU @@ -103148,8 +103147,8 @@ uBQ ptt iOE jcU -jGB -kyp +ivN +bZY tsF vrn ePk @@ -103158,11 +103157,11 @@ aCO iLA pcK tgl -qDd +nUk xHD xHD jVM -jBu +lXm jVM vkh vkh @@ -103170,14 +103169,14 @@ vkh vkh jYM vkh -vSI +aaR spH spH vkh jYM vkh iXu -mVc +qSO lab axd xli @@ -103203,14 +103202,14 @@ mmE czg ddK vcB -bDr -bsv -kNf -pWC -eAz -hGE -hXl -dcH +gPf +bXn +mEg +gfz +naU +jNf +kFX +nxw xrC tFQ sSQ @@ -103230,7 +103229,7 @@ vDV wgL tLt qAn -jmW +szo ibE sSQ ulO @@ -103401,25 +103400,25 @@ xRH ryi xRH gcz -fIi +caS ogi jvl jcZ lGK -nsi +wYY tsF -fhV +tXV nCt wNW coC pVj pVj cRL -ose +uCS vpI aBB nMW -tEL +nUZ rQN vpI rZq @@ -103427,7 +103426,7 @@ ycX pBu khY lmZ -aGq +lYz khY khY khY @@ -103460,9 +103459,9 @@ pzb kCb taB taB -tCZ -gUk -rgK +sTg +afW +llb geu xuF xuF @@ -103477,18 +103476,18 @@ tCz tCz sSq tCz -eWY +lQF kFy -iFb -nuO +rzq +lGP sSq dYX nzU wnE oeI -qVa +ryn mhV -oiA +vqM sSQ ulO ulO @@ -103662,37 +103661,37 @@ ikH kCC qrg esF -npM +yib uoB tsF -vQm +ehW iZO awC -gwm -xPJ +uly +caO mut mut -icN -mZd -sDZ -pca -uVo -oBA +aMt +oZe +fgP +clm +fsA +bHg mut -pjA +krN mut -otJ +nOf mut mut -rfW -mlD -xPJ +obi +eyI +caO mut aRJ -jSp -klf -oHp -huj +lmG +hiO +tTk +fNN fIj uhM qZy @@ -103704,7 +103703,7 @@ wMZ vnN aEo pOm -lwk +eaT gUn xSO vsx @@ -103718,7 +103717,7 @@ frf tAx ooO nKc -evb +pHy geu geu blb @@ -103745,7 +103744,7 @@ sSQ sSQ sSQ sSQ -dgn +qVC sSQ sSQ sSQ @@ -103922,46 +103921,46 @@ gcz jyM uoB eSA -baJ -rji -vAw +eiA +qLw +rVf ceS nvE nvE nvE nvE qio -vCZ +xWg uQi nvE oCx crx rFn nvE -tPM -kfM -cRc -aPK -aPK -aPK -aPK -mcS -sKm -dRT -dRT -nNz -inU -hmn -bcv -kov -viy -efB -lJg -xyh -xRI -lJg -hVh -elM +qTc +ayI +xKL +lEr +lEr +lEr +lEr +rJU +cWj +jDL +jDL +ujP +her +ojS +jUR +cRe +gif +pCj +nes +wDc +bhZ +nes +tHm +cuK pYr xJZ vsx @@ -104002,7 +104001,7 @@ mHc nqd knV sSQ -jkE +xRn xfH tAq sSQ @@ -104188,14 +104187,14 @@ lNp xRA eeJ aIO -qZw +foG pNZ ylX qUt qUt qUt qUt -fNZ +tQP qUt qUt xJB @@ -104212,7 +104211,7 @@ ygu mHb ona nkW -riS +ulI ihd gMM gBg @@ -104257,10 +104256,10 @@ gFH ghs eRX eRX -nIJ +hDF sSQ -ehZ -fDd +rVM +gJT idj qXl kVb @@ -104444,7 +104443,7 @@ htp htp htp eeJ -ehf +dcg tzZ mSa hWk @@ -104452,13 +104451,13 @@ qUt uZK ptl ptl -wrZ -mvd +ygB +wBG qUt -rnc -ugH +iLq +dLb mJX -vHH +izK vYH isi xJB @@ -104498,10 +104497,10 @@ xSO xUL vmh wYA -elw +gee emd rZc -vba +lHA anJ vdY oKb @@ -104517,7 +104516,7 @@ eRX gpM sSQ hrF -swk +blW uOw sSQ hhb @@ -104692,7 +104691,7 @@ xRH gcz lHW jOU -jjJ +awG wSZ lFg xqC @@ -104710,8 +104709,8 @@ qUt aIb qUt qUt -uLD -vmr +hPa +teP qLt vrY vrY @@ -104720,7 +104719,7 @@ vrY sXq wGu lNU -xoa +hqq uCp yeh qir @@ -104766,7 +104765,7 @@ wCx ogR wYA tlh -sTR +nQZ doj xiE xiE @@ -104774,7 +104773,7 @@ fFY xiE xiE wgL -wsR +gKj uOw sSQ hhb @@ -104953,11 +104952,11 @@ tvP wSZ lFg xqC -lsh -cYD -jGK -rYx -hUO +pTY +agx +xGq +gfD +dRI xqX tzZ bCo @@ -104967,23 +104966,23 @@ iZu frC jEz qUt -aGH +lGz qUt azN vcN vrY -mIi +rzI vcN xpp xJB -bUD -uPJ +fGC +hcm lek yhq qir vQp -woT -pqT +wsJ +oAg wJM epn wJM @@ -104994,7 +104993,7 @@ pRQ xSO vsx rAv -rBY +gJz jLV eyZ fRJ @@ -105022,16 +105021,16 @@ jrG aCi gIF wYA -gCe -wWs -wOn +qBB +xfi +uTi xiE mVm nyp exW lVy wgL -swk +blW ulO wgL wgL @@ -105211,12 +105210,12 @@ wSZ lFg xqC eBd -gKQ -cnn +blN +bdb niW ylX -jwf -bmz +btA +fPm mSa tPW qUt @@ -105224,7 +105223,7 @@ bxk rex axz qUt -aGH +lGz qUt qLA vIZ @@ -105243,8 +105242,8 @@ syC wIc xma qir -xUn -uku +fyY +xhJ qir wfa eMo @@ -105255,7 +105254,7 @@ xrC bUr pEL pEL -qUf +cEs qfX oED oED @@ -105267,28 +105266,28 @@ owP mhn vdH nyT -iMS +mnf wYA xfV pUc pks -buV -nei +geQ +fVm moy moy xWl gIF wYA -eOZ -mLH -pUx +wBX +eHL +xSD xiE hbS fzt -fLk +sQo guC wgL -wsR +gKj bAr wgL nah @@ -105472,16 +105471,16 @@ pBO pBO jyd ylX -eMS +xoL tzZ thx -caK +pJn qUt rex rex lnW qUt -xDS +sgd wua jWy jWy @@ -105524,7 +105523,7 @@ wfr vLQ uSj baP -haq +qaO wYA dCe ppA @@ -105545,10 +105544,10 @@ hPi bRg mig wgL -wsR +gKj sQg wgL -vsQ +nIl rHy vpk jIy @@ -105731,14 +105730,14 @@ vpF eeJ wKn tzZ -eMQ -xxD +nrK +vxl qUt oIE vex qUt qUt -xDS +sgd wua gcg vvK @@ -105761,7 +105760,7 @@ uWo uQf cvy tNA -nCU +bOb xlh aIu dYM @@ -105770,7 +105769,7 @@ qDK vEz mGh wfr -wya +qER lHJ vKY lSK @@ -105780,8 +105779,8 @@ tUz wfr wfr wfr -gtJ -qxi +xeN +fvf wYA cCW qFv @@ -105794,15 +105793,15 @@ xWl gIF wYA tab -bMW +nKP sOO bqE -rGI +osW hPi -tQA +kSL esI wgL -eFO +wft wnE tii lAU @@ -105994,14 +105993,14 @@ qUt qUt qUt qUt -qUL -vIC +bzi +oTU wua qLD uYD rRW -sny -vZX +bQs +dCW sZJ wJx xbW @@ -106017,29 +106016,29 @@ xyQ uWo rfq vKb -uWQ -fwF -iOm -gFs -fSG -ugJ +uzA +iuX +dHI +gPE +brQ +nrb mpy vEz kMm wfr -oiP +mPU mJK iWQ mms mms jmY -dim +ofy rAt nzc rQF -lIh -lcw -xuD +ewO +osh +rWd ckV tAS tAS @@ -106054,15 +106053,15 @@ bpS hOp nYk vVP -xAA +qSE hgf agb uGj wgL -oiA +vqM ulO wgL -vum +nem lqC lqC jIy @@ -106241,45 +106240,45 @@ wfG pwq oyn fSU -fRV +kok ciV ciV -rrp +pqW wqj aTb wqj fHK qUt roD -xDS +sgd wua wua -qMp +qXT uZc rRW -snK -wat +qHP +gcZ tae wLm xvh -xsb +gUE xPN yiL vuT jNq -kOT +kCV vYU -asm +jcs ide mMp ist ist -sIj +pmH jjk xlh dfb iDH -bZz +pSk xPW sKq aRC @@ -106287,15 +106286,15 @@ wfr reG mJK mJK -fcs +iZN vLT -qMb +tuh acS iWQ lHl wfr -vbq -uid +uTV +pvu wYA rMl qmZ @@ -106305,18 +106304,18 @@ onG qmZ lpV lpV -qQp +hmg wYA nGI jGc tuR gLb -bXH +deP vTY nqV ruC wgL -oiA +vqM ulO wgL guz @@ -106487,8 +106486,8 @@ oWg lSh bgy bgy -mUX -lXw +yao +aKl pIn kTG wEs @@ -106508,18 +106507,18 @@ wqj knB qUt qvr -xDS +sgd wua vLF -sUg -rmX +dgw +mpd xpw elR xRh cLD wJx mNQ -iLp +dza xMr yiQ uWo @@ -106548,21 +106547,21 @@ ddl toC bGY wCK -tDd -nTz +pWb +fWG wfr sCp -vJR +nXR wYA wYA wYA wYA wYA wYA -fRq +sXd nih -hNJ -fst +xYY +osU wYA hOp slq @@ -106573,7 +106572,7 @@ gkE cIU nGk wgL -cmw +jRY uWZ wgL xsV @@ -106762,10 +106761,10 @@ jgF wqj rEa qgJ -mQD +mAn qUt qUt -xDS +sgd wua wua upV @@ -106776,7 +106775,7 @@ tao raL wJx plr -xsK +rkO bqm fAs uWo @@ -106809,7 +106808,7 @@ uxJ wfr wfr mGg -jTU +tOm jFw fJZ kgn @@ -106826,11 +106825,11 @@ myM rsz xiE qcr -nXP +pru hpl rAA wgL -wsR +gKj uOw sSQ dDB @@ -107018,12 +107017,12 @@ wEF jgF wqj rEa -nMn -knO -adh -hbz -vIC -hdZ +lWL +rNt +eGz +oZo +oTU +mrj wua wua wua @@ -107033,7 +107032,7 @@ wua wua wua wQT -udK +ivJ xMr xDs vva @@ -107045,28 +107044,28 @@ xzQ mfR vVF vVF -uzZ -abh -bNQ -ggi -vPs -cAr -pnf -lXR -cAr -trz -bNQ -gUe -lgx -ufE -xXr -ufE -vMJ -ufE -bka -mKe -eHe -adL +bLh +sTz +hsW +czH +upc +orU +tZr +kja +orU +hnq +hsW +vAk +iUB +jke +qiJ +jke +nAY +jke +qnT +ykl +dpz +qYb vVF vVF vVF @@ -107087,7 +107086,7 @@ wgL wgL wgL wgL -swk +blW ulO sSQ dDB @@ -107280,7 +107279,7 @@ wqj qUt qUt qUt -hdZ +mrj qUt dWW tnb @@ -107291,13 +107290,13 @@ tnb qyY xvh nkH -izA -swB -vve -vSw -wrF +ugx +wmb +ine +aWV +iNW xJw -lvv +wer xJw xJw xJw @@ -107323,7 +107322,7 @@ hhL wmx xJw fwc -cTC +qmh xJw xJw xJw @@ -107344,7 +107343,7 @@ aTc jmo gAJ syN -oiA +vqM uOw sSQ dDB @@ -107527,10 +107526,10 @@ onR xVV mEA htN -tje -tje -fWi -qWg +xYV +xYV +tsw +obh oLD gmf qva @@ -107547,7 +107546,7 @@ iDt wua wua xvh -hPl +vHC xPN vEA vwh @@ -107576,11 +107575,11 @@ pDU qZn jWl pDU -sKB -erA -esP -mxP -alF +mCl +ity +pfb +dCt +vsp rBe oOp owJ @@ -107595,13 +107594,13 @@ xpJ mOq jhZ wnE -iTy -wmD -bgB -clq -bgB -clq -uqO +ibg +aDx +aly +aZy +aly +aZy +vFE ulO sSQ sSQ @@ -107780,11 +107779,11 @@ ghW boX kCP iQT -wRP +oSN sRL mSa thx -hbY +lwA mSa cNk wqj @@ -107793,18 +107792,18 @@ cPp wqj wrx qUt -hdZ +mrj qUt qUt qUt gfJ wua -spi +vBS dqO taD pzL xvh -uPJ +hcm xMr sBL nla @@ -107815,26 +107814,26 @@ ldq ldq ldq ldq -rxB -rxB -rxB +lIm +lIm +lIm ldq -dsW +xxh ldq ldq ldq ldq ldq -fmH -fmH -fmH -fmH -fmH -fmH -fmH -fmH -cWM -avc +ahn +ahn +ahn +ahn +ahn +ahn +ahn +ahn +tFA +uNq vSg vSg vSg @@ -108039,9 +108038,9 @@ hTW jYF qpe sRL -rfB +igj mSa -jVJ +lmt oyq eeJ eeJ @@ -108050,13 +108049,13 @@ eeJ eeJ eeJ qUt -hdZ +mrj tnb tnb tnb tnb wua -xgg +xsp dqO taD pzL @@ -108069,40 +108068,40 @@ vSY qzv ldq xQI -lGp -lSf -fnx -dvb -vaR -jCE -nWp -oAi -aYJ -vlr -viO -owF +klI +pVY +rbf +uzu +mJx +qga +llI +lmQ +tGa +woc +nZH +tTJ ldq -tRn -uOH -lCS -fmH -lxa -lxa -oJz -odP -wAf -vGX +gmu +mNm +lXc +ahn +rJz +rJz +gVE +uSx +aiz +oNw xaP -mfT +rva dvJ -rBq +qDr cLY xaP tuT vMs bEw jEG -ybD +qln tuT sSQ gUC @@ -108297,9 +108296,9 @@ czq xVV sRL eeJ -oYj -jvQ -eul +sED +mts +oYG eeJ egJ egA @@ -108307,7 +108306,7 @@ gMq duT gtk qUt -hdZ +mrj tnb qUt tkq @@ -108315,7 +108314,7 @@ qUt wua sLE pFQ -wsa +xTv pzL xvh nkH @@ -108325,41 +108324,41 @@ eNp vxM hCB ldq -fvm +lBw ldq ldq ldq -mpU -rQr -dNN -jrg -dkw -pmZ -omO -aVF -mij +xTt +aLV +eyo +dKX +pUm +vmo +rdm +sQO +tRx ldq -cZW -uOH -ciR -oib -nqG -wuq -rBz -liP -hjz -tqs +pPn +mNm +xWF +tRy +qkZ +sZy +hAS +lTE +fIE +mvM xaP tGJ mYj -uax -wyo -hhg -stV -mus -mRK -mus -aeA +pxe +jCa +gXX +cGl +rAJ +lfw +rAJ +fsP oXM sSQ muz @@ -108548,19 +108547,19 @@ iGt vtL sBP sRL -uFZ +soG jfB afZ jfB fPZ eeJ -wjq +eYu dtv dtv -diF -fBs -dhH -rsZ +eWZ +wry +yhY +qMC jQB kAJ qUt @@ -108569,54 +108568,54 @@ tNs tNs tNs tNs -rbW -spP +bKW +pnp bRt wsb pRN qQB -ufF +iQo xMr slJ aXU xaC -ubl +rvU ldq -qyO -xid -eEi -tum -dKo -jSX -nfv -sTp -vXc -cYR -sDE +bVE +qAB +gLW +dsj +cgT +fhW +xuP +wvp +inn +oqY +lui ldq ldq ldq -ukB -eBT -pAg -fmH -xYE -wwT -gHT -tAP -nxD -ihC +isT +rfu +iBP +ahn +wwy +hnw +dyJ +kBp +iEf +dsE xaP rXY -mpK -kMW +jlZ +pcf pXz xaP nwN ufn -fFC +jIj ufn -pHq +tbK ykT sSQ muz @@ -108805,7 +108804,7 @@ nFW tDB unK sRL -sBq +aFP xsI gnK piJ @@ -108816,8 +108815,8 @@ dtv uQG vCc jOb -iQV -lYV +aLI +lAa iXy uYY qUt @@ -108836,44 +108835,44 @@ nkH xMr slJ aXU -vxs +fQp vxM -tGI -jzj -jzj -pOq +vgz +tMr +tMr +gKu ldq ldq -dUY -pIM -kHY -oAS -ufd -hMa -iLO +gnj +txS +lkj +sWE +uLA +sLq +pUl xQI ldq -lDJ -jOO -wSL -fmH -kHo -qoj -qoj -qoj -rSt -wRU +dVL +gXV +tbv +ahn +ehP +blF +blF +blF +lNR +lDz xaP -bxY +guu mYj fVG eJe cwt nwN ufn -dMM -nIT -rUV +hox +nAn +lKy xqe whX knC @@ -109069,16 +109068,16 @@ sRL sRL eeJ lxp -syA +qoo eeJ eeJ eeJ -rqD -opN +uVE +pBa eeJ eeJ qUt -xrc +tCL qUt odD mtc @@ -109089,16 +109088,16 @@ sJi wty two xvh -uiY +lJL uDF uSO eBy vxM bMc ldq -jqJ +may xQI -jSX +fhW xGw ldq ldq @@ -109108,29 +109107,29 @@ ldq ldq ldq ldq -cTE +gsu ldq ldq -tmV +bpW ldq ldq ldq -aBv -aBv -aBv -kqO -uhk +lLl +lLl +lLl +crN +jdQ kFY xaP -hrC -gHl -elT +hug +wHQ +ylK frP -vOt -bwT -bwT -bwT -pHq +okJ +uub +uub +uub +tbK oDB sSQ tAq @@ -109326,15 +109325,15 @@ rze uHH qWC rze -uSo +kCG vNq rqw ohr -rqD -opN +uVE +pBa xEM qUt -eqG +feU mHh nNA rHY @@ -109349,35 +109348,35 @@ xbC nkH xMr nla -dLq +ggj vTx pHw ldq -qod -eVF -lxY +eqJ +ehM +jXL xQI -fvm -jzj -jzj -sys +lBw +tMr +tMr +iVG xQI -jSX -xid -jzj +fhW +qAB +tMr xQI xQI xQI -kuY -lzf -yja +wSS +inp +xca ldq -fjv -ntW -mmR -bgA -pOX -adl +ctg +jHc +ybW +rrE +oDC +wvD xaP aQm qEz @@ -109387,14 +109386,14 @@ aZG wQG uro itP -pHq +tbK kBA sSQ sSQ sSQ rzJ teG -xBx +itd tuT tuT vtC @@ -109583,18 +109582,18 @@ xzl xzl xzl xzl -rDD +pFv akq rqw fvj uDz -jXB +bNb nYs qUt ffi mHh uqq -qOG +gYu pXk cCv wua @@ -109625,16 +109624,16 @@ yfQ ldq yfQ ldq -xnn -xnn -jzj +ohW +ohW +tMr ldq -tmr -vWa -hkt -wKm -pOX -mJC +beJ +col +pkN +sHT +oDC +wDL xaP nUQ ohM @@ -109644,16 +109643,16 @@ ltP bho blh qvL -pHq +tbK oDB ufn iAJ cqa ufn ufn -eKP +vjc jcu -jiY +rVN ufn yhF ull @@ -109662,9 +109661,9 @@ ufn ufn jcu iAJ -ljj +kqN ufn -gOh +qRh jFh cjm tuT @@ -109832,7 +109831,7 @@ wJX fYH fYH nuL -djY +nsV rBO gdF kkS @@ -109840,28 +109839,28 @@ oZO kkS kkS kkS -xjC +kZs xuQ rqw fcU rem -gGQ +xvM uDE qUt lhi brw mnl uOx -llY -rdA +tDg +jqV qUt sqY ata taZ shD -oGQ -dMe -uEQ +wfP +xpU +dDy tBv xbR jDM @@ -109882,15 +109881,15 @@ dDB blb dDB ldq -lxC -lxC -jzj -tmV -otQ -nRS -vIa -bGk -dst +dbE +dbE +tMr +bpW +vRo +cJM +ifO +cnJ +nOl ldq ssz ssz @@ -109901,27 +109900,27 @@ ldq hKw ydf tfh -pHq -pCT -ivY -dwX -ivY -ivY -ivY -ivY -ivY -qcv -ivY -kKN -ivY -ivY -ivY -kms -uwI -ivY -ivY -wwK -wwK +tbK +lRj +vbR +oLw +vbR +vbR +vbR +vbR +vbR +igB +vbR +tcF +vbR +vbR +vbR +siC +mcX +vbR +vbR +fnz +fnz ufn yhH tuT @@ -110086,8 +110085,8 @@ rqw qAj jsU xFM -qak -bnX +wKE +vVw jUA pzd pzd @@ -110109,17 +110108,17 @@ qnb qnb oJx qUt -izo +fXA qUt qUt srA lrH aaH rtZ -mPu -buk -uEQ -lOS +kNd +xZb +dDy +uUe vyF vTJ wrQ @@ -110139,26 +110138,26 @@ blb blb blb yfQ -ctu -ogl +mJQ +cXj xGw ldq -kdn -tSH -jYP +bOf +lQQ +vEq ldq ldq ldq -rff +cpQ xQI xGw -hGj -dHy -jIc -bAT -mvC -fwZ -pHq +sgo +bIM +xMA +nRn +qMD +lhS +tbK oDB ufn ufn @@ -110343,39 +110342,39 @@ fjp xcF gpA fYH -qak +wKE ctH -xIf -lKs +yfd +rHF fex fex -byR +nUv qIe dBj luG evA vVV -vaw -jWz +gLe +uWz bAb -dWG -iMG +gcG +bQQ bji -pjT -pCv -tOk -pCv -unc -sWQ -raZ -sVG -gdx -gdx -gdx -iOq -nhZ -xsT -uEQ +xJY +xBi +vkg +xBi +bWD +vXm +iCZ +hle +qUa +qUa +qUa +tvq +oKT +pua +dDy vzX vyR vyR @@ -110396,26 +110395,26 @@ dDB blb dDB ldq -oFg +wEl xQI -jzj +tMr ldq ldq ldq ldq ldq -jSX -jzj -jzj -jKb -kuY -dnc -wfp +fhW +tMr +tMr +jIS +wSS +lbv +lEi ldq -clZ +dle reH ico -pHq +tbK wBh lcC rUb @@ -110600,13 +110599,13 @@ rqw lXX rLx fYH -vrB +gsr ctH -gby +urL ntZ jpp jpp -dxw +pEj qOQ jpp jpp @@ -110624,16 +110623,16 @@ wrw qfo jRs jRs -xhG +eun mHf -fyh -sZh -qSh -tmI -vfH -pFI -dJj -uWz +kFA +gdx +mDt +vMo +cCR +pFx +jsr +uwF vze vUe vUe @@ -110653,26 +110652,26 @@ blb blb blb yfQ -sXo -rzO -sXo -dvI -aXi -sXo -rzO -aXi -sXo -ixG +jze +lmC +jze +aqj +rvJ +jze +lmC +rvJ +jze +kaT ldq ldq ldq ldq ldq ldq -dNU -off +bSL +wXM okl -mDs +umX idp tuT tuT @@ -110858,7 +110857,7 @@ rsv rLx ctH pDX -mIR +uSI urK pzd tpG @@ -110881,19 +110880,19 @@ sCi sCi vuu vuu -vcW +oCa sCi vDX -tNn +wbq vDX vDX -oPM -mAs -kwB -mnj -oYS -pUL -wrW +rgz +aIF +aig +dNR +pvS +vSz +qRF ssz dDB dDB @@ -110910,26 +110909,26 @@ dDB blb dDB ldq -wBF +buZ ldq ldq ldq ldq ldq -eLf -lGp -fRe -vWC +ggE +klI +kHH +nWf ldq sgB fhT fhT -pJz +scc uLj oig oig tuT -aNX +bEA idp vtC blb @@ -111111,7 +111110,7 @@ nFW qAJ xHi rqw -aRv +eoN pbk cll sOy @@ -111137,16 +111136,16 @@ tOO aYY sCi rqt -uTb +ktk rrU vwc vDX -mWE +avn sso vDX -dWh -dNL -aBV +nMo +ijR +hIr xqW ssz ssz @@ -111167,26 +111166,26 @@ yfQ ldq yfQ ldq -sXo +jze ldq -esW -ipM -piI +sxK +rAe +fQG ldq -ezy -lGp -xpY -sXo -xko -hPQ -uNe -uNe -iNS +aQd +klI +roz +jze +dhW +mgU +nBq +nBq +pMf uLj blb blb oig -oqg +cuz pkR vtC blb @@ -111368,7 +111367,7 @@ nFW nFW nFW nFW -jGT +bnd pbk qKz pfW @@ -111393,57 +111392,57 @@ sCc tDz pTs sCi -cHC +eGE qUm rrU -rZw +vOZ vDX -mWE +avn ruD vDX -nyZ -ujX -ilC -uUj -jfj -hDz -pKU -pKU -pKU -pKU -wFQ -pKU -xpY -aGR -qAl -qAl -pKU -pKU -pKU -pKU -gOR +nog +bKk +xse +wow +cth +pAr +hua +hua +hua +hua +aoY +hua +roz +nBm +qRO +qRO +hua +hua +hua +hua +wig krz -xpY -aXi -wWN -lVo -jzj -caG +roz +rvJ +ruT +hWs +tMr +suu ldq ldq ldq -fnx +rbf ldq ldq uLj uLj -aid -cdg +vOr +vhM uLj foL blb oig -oqg +cuz idp vtC blb @@ -111649,18 +111648,18 @@ ibv sCc pTz pTz -qfA +igJ mlK npV -rsg -rSz +uIv +rKo vDX -mWE +avn vDX vDX -bFU +eAP upz -uFA +ciI uWe ssz ssz @@ -111672,35 +111671,35 @@ ssz ssz ssz ssz -jzj +tMr xQI -aGR -kDR -fSC -pvU -owc -vje -ilB -rzO -sXc -vtU -hhK -dHp +nBm +qUD +sqC +fIr +qwB +hTE +sCn +lmC +djy +fSb +cWT +chT ldq -fOw -iis -knY -qgi +oRe +jxV +yeT +xVD ldq -qdR +iAI naN -aid -jtD +vOr +fbV uLj blb blb tuT -tHL +wTA xyR tuT blb @@ -111904,7 +111903,7 @@ oss gFm shD sCi -mhZ +dLA pSN sCi kFq @@ -111912,12 +111911,12 @@ vDX vDX vDX vDX -mWE +avn vDX eDr -uME +xdc xtL -osy +xQW uWG yeh blb @@ -111930,34 +111929,34 @@ blb blb ssz ssz -pnB -tHy -ixH -qTv -rUR -rUR +hDz +lDx +efd +gNv +fcm +fcm aSy aSy -lOi +oCm aSy aSy aSy -evv +bWM aSy aSy -xoT -knY -dwT +ody +yeT +pQv ldq uLj uLj -opg -nBq +aid +puo uLj foL blb oig -oqg +cuz idp vtC blb @@ -112140,7 +112139,7 @@ exM nFW kNX blP -xUT +vys arH nUY nUY @@ -112158,63 +112157,63 @@ bqy bqy pzd djO -nvB +qnZ wkF -gxl -pDD +hnp +ifh dvY vDX vDX vDX -mWE -mWE -mWE -hUH +avn +avn +avn +veq vDX twZ -uME +xdc ugj -osy +xQW uYo urv dDB blb tjj tjj -tqD +xLz tjj tjj blb blb ssz -jzj -aGR +tMr +nBm ssz aSy aSy aSy aSy -gjg -dWs -rrb -cJL +aRA +lGS lXg -mJy +cJL +wvu +oem ktB aSy aSy aSy aSy ssz -fWT -sRN -aid -dSz +kwx +wlB +vOr +mEF uLj blb blb oig -uBo +jWU idp vtC blb @@ -112396,9 +112395,9 @@ nFW exM nFW uKD -bFt +iGG xcF -sDs +eGg aFu bbT mql @@ -112418,20 +112417,20 @@ oss yio wkF pkS -pDQ -clf -qgx -mWE -uHR -hUH +moI +bOo +bJp +avn +fOe +veq wPd wPd wPd wPd txl -uME +xdc fTM -osy +xQW uto yeh blb @@ -112444,34 +112443,34 @@ tjj tjj blb ssz -jzj -pKU +tMr +hua ssz heB nZQ srb -yeQ -oom -dhb -ncH -ncH -aJX -kej -wOc -yeQ +qCN +jly +cjQ +thL +thL +qKt +pcR +apb +qCN pus nZQ srb ssz ldq ldq -aid -hwn +vOr +gFI uLj oig oig tuT -nBF +eoU idp vtC blb @@ -112675,10 +112674,10 @@ oEk yio wkF plJ -ncr +esf bgp vDX -qxP +naE vDX wPd wPd @@ -112686,49 +112685,49 @@ pNF vmn pqm pqm -tLc -qvF -xPY +xhF +ugC +kXV ykL ykL ykL tjj wKc xol -aau -aau +xAM +xAM rMH tjj blb ssz xGw -pKU +hua ssz iWZ rfJ rcl -nhC -ktl -nLM +kza +rNK +rRm hAJ gPY vsW -wtc -tQM -uXV +jBh +pPw +sTD euO rfJ mOI ssz -eMH -nXf -aid -hYW +rvE +poX +vOr +akB uLj vyU sVA okl -oqg +cuz idp tuT tuT @@ -112932,63 +112931,63 @@ oss yio wkF gCI -jpW +sGz tpk vDX -mWE +avn lVN wPd bjL vMt -vEm +vCl vMt pqm -tPm +sCh fTM -ive +otN ykL lJB -oah +bTG wtt fDQ -sBc +gjQ oPc -xUt +vFo ygK tjj dDB ssz vxp -xpY +roz ssz -dmT +ydq wlk -dDO -yeQ -jAp -nLM +mLE +qCN +bfl +rRm tEj bqD rcl -wtc -uDg -yeQ +jBh +msA +qCN cNZ wlk hwz xnE tuT tuT -xNL +gFU tuT tuT xCI ufn -rln -ivY +rFi +vbR oDB -rwo -eVM +rKh +tZY tuT vtC vtC @@ -113192,57 +113191,57 @@ vDX vDX vDX vDX -mWE +avn qUF wPd rVj vMt -sJw -jZa -jXA -uWn -xuu -enb -wQP -xPv -uSi -wtu +fjI +ntJ +nLD +oZr +pkY +qfq +jJk +eWf +fKI +qNI wKz -xrX +dFR xBj -xUB -yha -tqD +bWn +gUp +xLz dDB ssz ppL -xpY +roz ssz aSy aSy aSy aSy -lgw -iTB +wvj +aNy vHT wlk rce -mFT -cOC +xMb +oNV aSy aSy aSy aSy xnE bOR -tUa -gOq +gXE +gWN vlj -nRj +fim ufn -gOh +qRh ufn -ivY +vbR oDB ufn ufn @@ -113444,82 +113443,82 @@ ppV fLR qOJ yio -iOv -hUH -mWE -hUH -aop -mWE -mWE +lEL +veq +avn +veq +qKl +avn +avn wPd cmn vMt -xHS +mWN vMt pqm -eDz +uDi fTM -xRB +jsC ykL -ipj +jMI jyw wtt -kSd -xoW +mdJ +nKf ldF -xUt +vFo yig tjj dDB ssz ldq -reg +qPV ssz -qIk -cWm -yeQ -fJl -lve -iTB +cQt +jLF +qCN +dYg +caa +aNy aSy kkd aSy -mFT -rpc +xMb +rer kau -yeQ -acM +qCN +mWm eAY -pQE +dMw yim fEd -gOq -pHq -mEn -pHq -pHq -kho -ivY -pCT -ivY -dwX -ivY -ivY -nTU -ivY -ivY -ivY -ivY -kKN -ivY -ivY -ivY -mUQ -ivY -ivY -ivY -ivY -ivY +gWN +tbK +dgj +tbK +tbK +jKD +vbR +lRj +vbR +oLw +vbR +vbR +dfi +vbR +vbR +vbR +vbR +tcF +vbR +vbR +vbR +bbL +vbR +vbR +vbR +vbR +vbR ufn yhH tuT @@ -113707,76 +113706,76 @@ vDX vDX vDX vDX -mWE +avn wPd wPd mzo -rsl +aHj pqm pqm -tOZ -biZ -tsb +gZg +alb +oPs ykL ykL ykL tjj -wME -aau -aau -aau +kzq +xAM +xAM +xAM rMH tjj blb ssz jiB -pKU +hua ssz -xLk -swn -vuB -orW -bzm -geM +nAr +qIk +beC +abo +eis +lsU xvF xvF mIg -oIx -iFm +dTm +miv sWc -yeQ -rJw -xvY -pQE -nSl -yhT -qhd -fFC -nRj -tXG +qCN +nsP +xbe +dMw +osu +bZp +hia +jIj +fim +olX vcd -pHq -jUc -ixM -cwS +tbK +rvh +dYA +pel ufn hMA -fFC +jIj ufn vJB uKN lNk ufn yhF -viT +nhQ hMA ufn ufn uKN qlr -mwu +iNA ufn -vgY +yel jFh cjm tuT @@ -113957,14 +113956,14 @@ baO pzd gMz rem -iMG +bQQ shD xbg rOK ebe sKt vDX -mWE +avn ruD wPd vMC @@ -113987,24 +113986,24 @@ tjj blb ssz aZg -pKU +hua ssz -qIk -dBO +cQt +nye aSy -jGL -iOL -geM +aDg +kuN +lsU pMA xvF xvF -oIx -opW +dTm +vpa bWs -yeQ +qCN mYW ahD -pQE +dMw jSw fEd ufn @@ -114012,10 +114011,10 @@ ufn tuT kTw kOV -aJZ +gyZ kTw kTw -hLU +izx kWR svs tGU @@ -114214,49 +114213,49 @@ baO pzd ycQ rem -klF +dow jqq xbg pGU aRo -qhF -svh -mWE -hUH +hmS +iGc +avn +veq vDX gaU wxU vMC kxp -tSu +awP uhj -wAl +xSZ uZA urv dDB blb tjj tjj -tqD +xLz tjj tjj blb blb ssz xtv -hDz +pAr ssz aSy aSy aSy aSy -oUB -iTB +kUI +aNy aSy vWI aSy -mFT -uDg +xMb +msA aSy aSy aSy @@ -114264,15 +114263,15 @@ aSy xnE awT wJF -hRd -jKS +xqz +mWt tuT -jOF -jLt -trl -okk +wkX +xdU +rlH +cUP kTw -tqX +wqZ kfy svs vtC @@ -114464,30 +114463,30 @@ pzd pzd tlJ cYp -jTC +oId eOX pzd xQJ xQJ xQJ ryt -klF -lmb -pnq -dQm -vbJ -tPH +dow +uIy +uZX +pHI +vsi +vPu wPd wPd -fpB +iWO wPd gsv wMN tbB ygu -uME +xdc ugj -wAl +xSZ vaf yeh blb @@ -114501,20 +114500,20 @@ blb ssz ssz xQI -xpY +roz ssz pus cYG srb -yeQ -jAp -bLT +qCN +bfl +tYv tNw nZQ -qem -aAL -uDg -yeQ +syK +mfi +msA +qCN heB cYG srb @@ -114525,11 +114524,11 @@ tuT tuT tuT wOC -nrD -trl +ucx +rlH oZL kTw -qXh +doq kfy svs dDB @@ -114714,7 +114713,7 @@ fqT mpl wOp oLr -tLj +aMC wOp fsq iRl @@ -114728,23 +114727,23 @@ xqs xMO xQJ wMG -xPx +glC ibv oIR pHM tpK -dnO +kaZ vMC krd -kUR +sDM cKa -rsX -gWa +stP +hrG tbD ygu -uME -qvF -wAl +xdc +ugC +xSZ qld ssz ssz @@ -114758,20 +114757,20 @@ ssz ssz xQI xQI -xpY +roz ssz iWZ oMI okB -nhC -ktl -nLM +kza +rNK +rRm tEj rfJ rcl -wtc -tQM -uXV +jBh +pPw +sTD tEj bqD mOI @@ -114783,11 +114782,11 @@ dxO wOC wOC nyQ -giW +hiU ktD kTw -sok -qmy +eOG +rhH grm blb blb @@ -114971,7 +114970,7 @@ hOY rCS fsl usP -tAr +nHo mlp fLg tHi @@ -114984,24 +114983,24 @@ vJx pmq xMo xQJ -wcR -iMG -suU -hgt -vsi +kED +bQQ +shG +uMC +sUe tpO -cZx +vBa vMC -apF +opZ vfk -rWr +gKM tLn -gWa +hrG tbD tyA tTx hYf -wAl +xSZ vbA vAK xQI @@ -115015,23 +115014,23 @@ rgA xGw xGw ssz -vFB +tnL ssz -xeT +fKK cCb jlS -yeQ -buA -idd +qCN +cto +xUm oEB sGh uEC -vCs -nVx -yeQ +wjk +ryP +qCN eDF wlk -pAs +gdp rIY irs oND @@ -115039,11 +115038,11 @@ ozs dMm wOC aHu -noJ -nCo +rXv +onL uHv rIY -qXh +doq jWO svs dDB @@ -115242,23 +115241,23 @@ mrc xMT xQJ rTC -iMG +bQQ boi xbg sUE tqh qic vMC -hkQ +jes vfk itO sul -nuC +leY veK yeh -dRv +sfZ hnV -uGA +pSC yeh ldq ldq @@ -115272,19 +115271,19 @@ ldq ldq ldq ssz -vId +dgo scj aSy aSy aSy aSy -jKq -lRm +qmO +jJb eWO eWO eWO jKg -swF +vmZ eWI eWI eWI @@ -115300,8 +115299,8 @@ kOV kOV rIY rIY -fPV -kjw +iBw +eOj svs grm grm @@ -115499,49 +115498,49 @@ dWm xQJ xQJ sgY -oNX +jLk shD xbg rOK vvW fot vMC -tiQ -iIw -tff +aeN +ijS +xMx tLn -sJN +rNM veK tzz -tUo -uiB -uGN -vdf -uJc -vWe -xsM -wNb -wtT -gye -rWm -rUI +fdQ +rrg +hbi +bRe +rDF +mAC +jiW +kdB +rHU +ubn +jTK +pUB xDg xDg -pWl -fwU +ykV +lCH phZ wbp wMH hLc hLc aSy -hOl +roC kTC xQh dUF kKT woI -bcO +hOl eWI eXK mJr @@ -115557,7 +115556,7 @@ iUK iUK cbU rIY -byx +lvw kfy obP iSd @@ -115748,15 +115747,15 @@ vZK dTd ghX kgw -xvV +tzU xQJ xQJ bfE rIo xQJ jIn -udd -iZl +oUC +oPM sDj uqw uqw @@ -115764,41 +115763,41 @@ uqw uqw vMC eJm -noe -hYK -pNO -iyt +xPM +wKF +pWq +isf vMC -wMP -uUf -biM -ylo -ylq -cRn -gsh -hok -eMm -eMm -eMm -eMm -eMm -hok -cov -oOh +ruu +kJE +hxP +fCO +sJA +vff +pqn +uDj +iqL +iqL +iqL +iqL +iqL +uDj +xIK +ecW aXI -qHY +qSx wML wMH wMH aSy aSy -aFY -pWZ +lnH +yju qZe xvF eqz -cLS -bcO +jzC +hOl eWI eWI wNZ @@ -115814,7 +115813,7 @@ ycE ycE cOW aLr -tqX +wqZ kfy svs svs @@ -116003,9 +116002,9 @@ iHz dTd vCq ppT -pyk +sSm wOp -mIW +uqt xRW tSv fik @@ -116013,7 +116012,7 @@ nou xQJ ifg xlL -iZl +oPM wBI pnQ pIp @@ -116024,39 +116023,39 @@ veK dDF veK vPa -wbO +uNT vMC pAo -lOO +wCj xsJ -uGT -veg +wbu +qGw vAX vXy -ezb -hqc +wuo +slA afA qEe qEe qEe sRj -oxl +jkz ifU eGc -cAb +vQK xjb pYZ nyB gOQ cvH -xiT +uvX blk fxi xvF fxi ibI -bON -dcx +tqA +cYz eWI maL usF @@ -116071,7 +116070,7 @@ ycE ycE cOW aLr -tqX +wqZ kfy grm blb @@ -116262,15 +116261,15 @@ wOp wOp wOp wOp -mTc +twf xRW xqS fik xqS xQJ tOa -iZl -iZl +oPM +oPM wBI xTO xPj @@ -116281,17 +116280,17 @@ vso fHT veK dDF -obb +jQM vMC xFA -sMh +qAk xFA -xws +nwc xFA mdt mdt iAD -cAt +sfp mdt mdt jEi @@ -116300,19 +116299,19 @@ lUo lUo hHf aXI -awE -kdO -niF -mIm -gMR -pAl -deh -hcU -uTR +bPY +nnc +aHF +esV +gEY +fal +kYp +aVa +yaD rFF -sea -wqb -dlG +owS +aLg +mwA ois eWI umz @@ -116328,7 +116327,7 @@ ycE ycE cOW aLr -tqX +wqZ kfy grm blb @@ -116519,15 +116518,15 @@ wtx xXT kNu lfa -mTc +twf xQJ mjf mFh noB xQJ avN -iZl -rWS +oPM +oRd wBI sEr dQQ @@ -116538,17 +116537,17 @@ vir vir vir vir -oNN -xds -mfl -uZf -aQl -uGU +txv +kfb +xJu +dys +dQk +mWV vfT uMU iPJ ilD -otk +bBe mYm mdt fdM @@ -116557,19 +116556,19 @@ reh tgp reh reh -vnf +agd wML oOw keP qrb aSy -svz +exy aSy kRt mjN eFt aSy -tJw +rLu aSy eWI brZ @@ -116585,7 +116584,7 @@ ycE ycE cOW aLr -tqX +wqZ sNb svs blb @@ -116774,28 +116773,28 @@ aJq xXT bsu opA -goA -xdu -uFt -plB -caI +kcd +lli +uEk +mSb +wsD mFP -qrm +nHX qNn wBI -fEM +qdI wBI sDj sES wJL wJL vbK -uKH +lDt qWF -kUF -kUF -kUF -kUF +wco +wco +wco +wco jtI jtI jtI @@ -116805,7 +116804,7 @@ xWD uMU pQr xWs -hio +tCG vfD uMU lDI @@ -116814,13 +116813,13 @@ xKq mMN ljZ uHd -vnf -exu +agd +mcn rOX rOX sYa omW -nYl +mFC aSy aSy aSy @@ -116842,7 +116841,7 @@ ycE ycE cOW aLr -hJO +ugv kfy grm blb @@ -117031,7 +117030,7 @@ aJq xXT nkm xXT -mTc +twf lfd vwd xQJ @@ -117039,15 +117038,15 @@ mjF mGp vUz qNn -pgy -aHV +sGI +owm sXi bfe sXi ioR mEL vbK -sfq +rJk uMH vbK wOs @@ -117056,22 +117055,22 @@ wOs wOs wOs vbK -xuW -myp -kwX -kOh +jsy +xam +vhJ +hfH wec -gGK -aPX -smk -elc -aZL -aZL -nAF +seb +sxj +byk +mzT +wIY +wIY +oye srK srK -tEC -vnf +eZu +agd wML rOX aUB @@ -117099,7 +117098,7 @@ ycE ycE cOW aLr -hJO +ugv kfy grm blb @@ -117288,7 +117287,7 @@ dDB xXT xXT xXT -wHS +gje xXT xXT xQJ @@ -117297,14 +117296,14 @@ xQJ qNn qNn vpM -owD +oJr xda rKC pnU xlL xlL mok -xvv +vRh uMH vbK hVY @@ -117313,36 +117312,36 @@ oTT wuI aeD vbK -xva +vyD xUV rpk uMU vYx xWs -hio +tCG xwr uMU -xVn -aej +bvX +yiU tNu -ltE +pEy udw uHd -lhm -rKE -wed -vsJ +tHO +wEC +kFg +pkF sYa -cqn +ccv xTR -foI -gJS -lIL -gJS -bYo +pFZ +cQQ +iRs +cQQ +qco mOm uLT -oWr +oQM tJX tJX eWI @@ -117356,7 +117355,7 @@ ycE ycE cOW aLr -hJO +ugv kfy svs svs @@ -117545,39 +117544,39 @@ dDB dDB blb xXT -mTc +twf xXT oOb xRq pCa -xdu -mFt -saA +lli +tgm +sPr nXS -kYY +iGL oQj pdz pps -lHZ +sXz xkO sQb -xvv +vRh uMH xfc rYm phm -vmp +aLi phm wPK xfc -xvv +vRh xUV rpk uMU eAn bZN -xEo -wwz +uWJ +xqJ uMU rwB iio @@ -117585,19 +117584,19 @@ ifI viX uhe sZK -vnf +agd cVQ rOX -xre +wXX sYa rtI -dXU +vwa aSy deQ -tst +eCW deQ aSy -iMI +lJU tTT eWI wuf @@ -117613,7 +117612,7 @@ xXP xXP oOl rIY -pAY +oGM kfy obP urB @@ -117802,24 +117801,24 @@ dDB dDB blb ukI -wkG -ebc -xdu -cmD -pEq -lYf +vsS +aqR +lli +qAv +odG +uTo rsL -iJb -udd -mLO -oQJ -pdU -qka -voh -ueT -vzN -xvv -cFo +ciB +oUC +prI +nxn +fTN +aMH +wuX +eWD +nyz +vRh +pwA rvX ixT svy @@ -117842,19 +117841,19 @@ sip wDA mNu uHd -vnf +agd dav rOX ufe sYa xlM -qrB -yeQ -yeQ -riq -yeQ -yeQ -qrB +oUW +qCN +qCN +het +qCN +qCN +oUW bjc eWI dNy @@ -117870,7 +117869,7 @@ eWI eWI eWI vlV -sok +eOG kfy svs grm @@ -118064,18 +118063,18 @@ xXT wsL vwd fzq -mTc +twf rsL -qhh -ghC -vmJ -hbk -qIM -kNZ -lpt -snJ +edl +oyA +iFQ +agJ +bvd +xfu +xbT +mIV vbK -upr +nWq uMH xfc yka @@ -118084,8 +118083,8 @@ rXW tdw uaV xfc -xvv -kqb +vRh +xYQ vbK xia xia @@ -118099,18 +118098,18 @@ wDA wDA ohA sZK -vnf +agd lsO rOX -vLH +rOL sYa sYa sYa -xlP -xlP -fGE -xlP -xlP +rwY +rwY +odu +rwY +rwY eWI eWI eWI @@ -118127,7 +118126,7 @@ fLI cQo cMY vlV -fPV +iBw jWO svs dDB @@ -118309,9 +118308,9 @@ vPe vPe vPe vPe -qUZ -qUZ -qUZ +xun +xun +xun vCm blb rsL @@ -118321,7 +118320,7 @@ rsL rsL rsL rsL -mTc +twf rsL xSe miz @@ -118329,10 +118328,10 @@ hpM ati wJL ppQ -tTp +ohJ cCc vbK -xva +vyD uMH vbK fyL @@ -118341,8 +118340,8 @@ sKz uWv uaV vbK -upy -kWN +isX +uGW sQb mbZ fIf @@ -118356,25 +118355,25 @@ lZB ivz jYr uHd -mDW +shE wML rrt uWl nbF cVz sYa -rQw -xlP -pPp -xlP -tGp +dxz +rwY +iTT +rwY +pxk eWI asc usJ lCN jsX vlV -dqj +sIt vlV lEN fsW @@ -118384,8 +118383,8 @@ kjO fla keO vlV -qXh -qmy +doq +rhH grm blb blb @@ -118568,38 +118567,38 @@ uPX uPX opL sTq -qUZ +xun wgv dDB blb uRF -kNJ +nJE orC oPQ kbm rsL -mTc +twf rsL xSt xWq iRk aQZ wJL -prf -dSb -hiV +voa +tIy +sbr vbK -tjm -tis -flx -oBX -mzl -aOz -mzl +xgP +qWJ +hej +qGV +nXJ +eQc +nXJ skV -eHP -pcy -fdv +ngy +gto +fqG sQb kZh wJY @@ -118613,25 +118612,25 @@ uHd uHd uHd uHd -meG +lpg wML rrt -lXV saY +qbo hnP sYa -xlP -xlP -yeI -xlP -xlP +rwY +rwY +cWd +rwY +rwY eWI eKf tNT vlV tJX tJX -vid +gky vlV vlV vlV @@ -118639,9 +118638,9 @@ vlV vlV uhT uhT -fpq -pCU -tqX +niZ +qfI +wqZ kfy svs dDB @@ -118811,21 +118810,21 @@ dDB vdg wdB sxv -qnt +nHV dDB -qnt +nHV lBy vPe sOk -qnt +nHV blb -qnt -qnt -qnt +nHV +nHV +nHV blb -qnt +nHV lBy -qUZ +xun vCm blb uRF @@ -118833,9 +118832,9 @@ uRF uRF orC vWM -tGB +sgW rsL -mIh +hgx rsL xTO cHI @@ -118843,63 +118842,63 @@ ily xPj wJL sHX -sXG +kqo tqV vbK -upP +vNe rwg vbK -dtC +aCS vym phm phm dss vbK -sfq -kFV -cpU -wcT -wcT -wvM -wcT -xwu -xEd -bBr -yjt -eTT -dUS -jxk -vKX -vnf +rJk +uGX +dHJ +xqn +xqn +vrg +xqn +tnv +tfG +jps +lKD +bkc +jht +nJx +wVC +agd wML rOX -bXG +xif jlN duc sYa -axN -xlP -gWf -xlP -xlP +uvi +rwY +dnN +rwY +rwY eWI fxN clb vlV fSB eWI -vid -vid -lrh -vid -vid -mNv -fpq -fpq -fpq +gky +gky +bQh +gky +gky +jSu +niZ +niZ +niZ vlV -tqX -xnY +wqZ +vEn svs grm grm @@ -119066,33 +119065,33 @@ wCc wCc blb lBy -qUZ -qUZ -qnt +xun +xun +nHV blb -qnt -qUZ +nHV +xun vPe -qUZ -qnt +xun +nHV dDB dDB blb dDB dDB -qnt -qUZ -qUZ -qUZ -qUZ -kmd +nHV +xun +xun +xun +xun +ygC nJd -kOG -osj +dKH +gMl vWt tFH -vkr -mIW +ihK +uqt rsL afv rdM @@ -119100,10 +119099,10 @@ rdM ekL wJL prh -sYb +trC ttD vbK -pcE +sRB xfc vbK bWi @@ -119112,33 +119111,33 @@ wyy pjn tzH vbK -the -fdv +jez +fqG uUS ocb -mbk +mau ocb bYk -jPy -mpE +ayu +xVv ocb ocb -mbk +mau nTP dNz erE -vnf +agd uZG rOX -pXQ -kwA +hEY +iRr xaR sYa -xdV -xlP -gpy -xlP -orz +ltB +rwY +umY +rwY +eHZ eWI eWI eWI @@ -119155,7 +119154,7 @@ vlV vlV vlV vlV -vgy +mAk kfy svs oOg @@ -119323,23 +119322,23 @@ dDB dDB dDB qyN -qUZ +xun wgv -qnt +nHV dDB -qnt +nHV lBy vPe sOk -qnt +nHV blb -qnt -qnt -qnt +nHV +nHV +nHV blb -qnt +nHV lBy -qUZ +xun vCm blb uRF @@ -119347,7 +119346,7 @@ uRF uRF vWM vWM -ewt +qdK rsL mJq rsL @@ -119360,7 +119359,7 @@ rsL xNw xNw xNw -uqH +nMc uNd wMO wcp @@ -119369,33 +119368,33 @@ wcp wcp wcp xFA -ryk -iYo +wgW +xVG sQb rxT vYF wwk sbX rxT -bkg +ybo xYH gTc rxT kse sst eQn -vnf +agd wML rrt bqR ryy boW sYa -mwJ -xlP -ygf -xlP -fvH +uvS +rwY +bIz +rwY +lZD eWI blb blb @@ -119410,13 +119409,13 @@ tJX tJX vlV nsW -geS -aWz -xsW -tfH -qRo -wGq -oWf +uCA +etW +frp +sTs +yhe +iza +qMO jzp ogF grm @@ -119580,7 +119579,7 @@ dDB vdg wdB qis -qUZ +xun twg lvk wdB @@ -119591,12 +119590,12 @@ twg hrL wdB wdB -qUZ +xun sxv dDB blb qyN -qUZ +xun wgv dDB blb @@ -119604,10 +119603,10 @@ uRF kPv fMg auO -cbH +lmf rsL wBs -noN +kZJ vjb vjb uoH @@ -119615,33 +119614,33 @@ ikc vwd rsL vBG -bpI +pen qiM urd -lTg -viA +qWL +pnO vqU mUO mUO -uNK +bYj owv -rOW -xvv -fdv +mDO +vRh +fqG sQb mbZ wHg wwU wHg mbZ -fUG +tpl xYK jSl mbZ kse aBu xLZ -vnf +agd wML rrt yep @@ -119657,9 +119656,9 @@ eWI dDB blb eXo -vgz -vgz -vgz +pij +pij +pij eXo blb eWI @@ -119667,14 +119666,14 @@ pPZ uzo vlV bNu -xQj +rVX msJ nwj kfy mVD jzp -oWf -lXs +qMO +aLA cpE grm dDB @@ -119835,14 +119834,14 @@ wCc blb blb lBy -hgY -qUZ -qUZ -qUZ -qUZ -qUZ -qUZ -qUZ +gro +xun +xun +xun +xun +xun +xun +xun vPe vPe vPe @@ -119853,7 +119852,7 @@ sOk blb blb vav -qUZ +xun vCm blb woi @@ -119868,37 +119867,37 @@ xXT qNF rej wBs -jSR -jSR -wxd -qYv -qYv -tWG -eXW -uNR -viA +ijk +ijk +mMP +tDo +tDo +wzg +oAU +mZX +pnO sbN iXM oKn -uNK +bYj owv -rOW -wnO -uHf +mDO +xvv +cwZ vbK xia xia xia xia -cxO -egL -cxO +fna +euM +fna xia xia xia uXC uXC -vnf +agd lHn rOX rOX @@ -119916,22 +119915,22 @@ eXo eXo pGJ oyW -ief +cPu eXo blb eWI eWI eWI eWI -pTi -xQj +cDf +rVX svs uzY qbn svs kNK -qIZ -vtd +oPO +cfH svs svs dDB @@ -120095,12 +120094,12 @@ rMm uPX uPX sTq -qUZ +xun xCH vqH uPX uPX -qUZ +xun uPX uPX vqH @@ -120110,7 +120109,7 @@ wgv blb dDB rMm -qUZ +xun pSs dDB blb @@ -120137,28 +120136,28 @@ xok xok xok sMD -sJg +aaV sMD wMO -ukQ +kDY qTe -sxF -qTb -vYL -gIR -wNT +jUT +mkd +maj +lAQ +wwJ xnC xnC xnC -rfO -aGv -nLk -nxp -icT -bxI -wwI -ghK -vXH +irf +gFP +pIe +vId +qob +qqX +iuB +erp +uqn blb blb blb @@ -120169,25 +120168,25 @@ eWI eWI eWI blb -vgz +pij nFs -hwj -wGU -yhn +bgQ +hvX +lRw eXo blb blb blb blb -eXt -kML -imI +bMH +tYN +cYm svs ewF xJi svs pSq -ycj +ePA qZG svs dDB @@ -120350,27 +120349,27 @@ dDB dDB dDB dDB -qnt +nHV qyN -qUZ +xun wgv -qnt +nHV blb -qnt -qnt -qnt +nHV +nHV +nHV blb -qnt +nHV qyN vPe wgv -qnt +nHV blb -qnt -qnt -qnt +nHV +nHV +nHV blb -qnt +nHV xzd hrL ljl @@ -120382,7 +120381,7 @@ rsL ndY pms gaL -oJL +rgb yhK prW pms @@ -120393,26 +120392,26 @@ qXL xok uGK xok -wcq +iQw pED -kea -iCJ -ede -hoG -vkt +doh +mSr +kUM +ixA +dwd vCe -oJn -xer -sZx -wPX -wFa -emn -unT -hsC -jbd +pNo +lCW +udg +gsw +bJQ +aEh +kEz +mQt +mUT jiT cDy -efK +eIU wML fKP sxm @@ -120426,25 +120425,25 @@ dDB dDB blb blb -vgz -jMa -wHJ -oCg -oJP +pij +iZr +mWE +gzL +iKA eXo blb eXo eXo eXo eXo -tJC -xBp +qCc +bPO svs grm grm svs fnw -exR +nRJ bIg svs dDB @@ -120607,29 +120606,29 @@ dDB dDB dDB dDB -qnt -qUZ -qUZ -qUZ -qnt +nHV +xun +xun +xun +nHV dDB dDB blb dDB dDB -qnt -qUZ +nHV +xun vPe -qUZ -qnt +xun +nHV dDB dDB blb dDB dDB -qnt -qUZ -qUZ +nHV +xun +xun vPe rqR woE @@ -120639,16 +120638,16 @@ rsL lRh pfT kaD -hWE -hWE -sJr +jpE +jpE +ooV kaD tCD vtA -phM urk -viK -dSq +rza +rzk +luS xok mzf wwQ @@ -120658,50 +120657,50 @@ gAA jtI tRw xFA -rFH +neH xFA fbO ixU -ipx -lHb -skT +txz +fPx +kuU sCR eQt fjL lXE -vnf +agd wML pwn eXo -auG -wdS +iUp +dqH eXo -vgz -vgz -vgz +pij +pij +pij eXo -vgz -vgz -vgz +pij +pij +pij eXo -srH -vqX -liL -naa +jfK +pJe +dzI +bQX eXo eXo eXo -cmA -auG -nVF +jat +iUp +dUY msJ -xQj +rVX svs dDB dDB svs mrt -oWf +qMO gRX svs dDB @@ -120864,29 +120863,29 @@ wCc wCc wCc dDB -qnt +nHV qyN -qUZ +xun wgv -qnt +nHV blb -qnt -qnt -qnt +nHV +nHV +nHV blb -qnt +nHV qyN vPe wgv -qnt +nHV blb -qnt -qnt -qnt +nHV +nHV +nHV blb -qnt +nHV lBy -qUZ +xun vCm xXT xXT @@ -120896,69 +120895,69 @@ rsL cgy seM seM -cPh +rVy seM -oGL +rhX gfQ tCD mkh ntK lSu xok -tNz +lCY xok bgg tfE vFG wMO -kzs -uTO -uTO +feN +vmx +vmx xok -dXb +bGp xok wOh rUc -qbN -xZE +lBS +tZe ugo roZ eQt wYa dBh -vnf -lSa +agd +fdG uXC eXo -hQd -olG -vgz +ptz +jHx +pij sXw -vVX +cfZ sTK hGr vbQ -iVE +hWg ksg -vgz -mLM -iIN -nIx -lPI -iOF +pij +tZh +dSn +dTJ +inw +rfY ePX -vgz -nxy -lkv -nVF +pij +jrU +qlz +dUY msJ -cYk +mJt svs blb blb svs gFX -oWf +qMO lxN svs svs @@ -121123,12 +121122,12 @@ blb dDB dDB qyN -qUZ +xun wgv dDB dDB vdg -wEw +eDe wdB wdB hrL @@ -121138,12 +121137,12 @@ twg lvk wdB wdB -qUZ +xun wdB wdB lvk qis -qUZ +xun wgv dDB dDB @@ -121155,24 +121154,24 @@ rsL rsL skP skP -psn +udl oyQ oyQ oyQ -uuY +fQK tCD xok -iPF +mCk xok xok xok xok xok -xvx -xVY +uQa +fYj cyx xok -upe +aPp xok avr nuo @@ -121183,39 +121182,39 @@ eQt xok xok xok -qID -fqv -uSB -vSM -blm -nKj -juf -fJK -daH -fJK -gxq -daH -daH -daH -pJu -tsA -vyi -qDi -aEJ -bZt -gnp -srE -lom -hIF -lDc -pGK -pGp +jON +iHM +uwM +dve +pFN +lRF +xuR +mny +gEy +mny +jlx +gEy +gEy +gEy +eFW +iMT +bLK +llf +kcD +mFc +pBp +hmq +rQX +ixm +lVB +dns +pQh svs dDB dDB svs dlJ -eem +omu lwY pJj grm @@ -121385,22 +121384,22 @@ pSs dDB dDB qyN -qUZ -qUZ -qUZ -qUZ -hJR -qUZ -qUZ -qUZ -qUZ -qUZ -qUZ -qUZ -qUZ -qUZ -qUZ -qUZ +xun +xun +xun +xun +rGu +xun +xun +xun +xun +xun +xun +xun +xun +xun +xun +xun wgv dDB dDB @@ -121414,22 +121413,22 @@ nsd pdY psP oyQ -pVa +mBY qjh qzL kbI xok -iPF +mCk sHV wcs xaN fds xok -fni -xWw -cip -ujT -mYd +xlY +qbH +bla +cEB +pyM xok xok xok @@ -121440,39 +121439,39 @@ xOw xok itF xok -qFb +hul wML gDB -hAe -fHk +mBl +gMe nRr -vTg +glF rqm -lPJ +odz rYp aKx rYp -bYC +xxw rqm -mrs -mhW -hfI -ikS +uLx +nFp +exj woD +qCY toh tAT -vhu +aQJ ldx -fHk -hAe +gMe +mBl msJ -xQj +rVX svs svs svs svs oXs -ljw +gKh gyi svq grm @@ -121669,68 +121668,68 @@ yfJ rsL quq xQX -ptj -tNy +wuN +hIG jGW vkU -ogT +nSD wgC xok vzg -vPS -jKC -twi -iBZ +pbQ +eay +uUG +qrK xok ukV uHo -vkJ +dxc xok -mYd -txV -txV -txV +pyM +xEq +xEq +xEq xok cnG cZl gMQ xok -kSv -rNd -vnf -ukk +jOm +vcr +agd +uzK dde -nVF -qsg +dUY +jZN kcW -vgz +pij udv -tSq +ogl mvo hGr bFw -ulK +tIM cdn -vgz -vwE -ujZ -mkZ -lZa +pij +mSh +iJo +xcN +jmA fZp xHc -vgz +pij oGk eFV -nVF +dUY msJ -xQj +rVX grm blb blb grm oqK -qhv -vtd +vFb +cfH aqW grm dDB @@ -121929,7 +121928,7 @@ utm utm utm jXR -dZp +kIU urm ciT xok @@ -121937,56 +121936,56 @@ dex bxT qNO xaN -iPF +mCk xok xok xok xok xok -mYd +pyM xaN uGK -txV +xEq xok xok xok xok xok -kSv +jOm xaN -xjo +xlk qQK kuO -nVF +dUY aAD sCk eXo -vgz -vgz -vgz +pij +pij +pij eXo -vgz -vgz -vgz +pij +pij +pij eXo -oYx -leW -liL -oYx +nGo +lyX +dzI +nGo eXo eXo eXo xhM oJv -nVF +dUY msJ -xQj +rVX grm blb blb grm wHP -bkX +iia msJ tuP grm @@ -122194,25 +122193,25 @@ xCV swb xCV xaN -tAQ -tUH -wZA -wZA -tUH -vDC -esz +dgJ +rwb +oNR +oNR +rwb +bKp +oBg xaN wQx -txV -tec -txV -txV -uqc -txV -kSv +xEq +vEG +xEq +xEq +lWa +xEq +jOm xaN -eSd -vXH +vwj +uqn uXC eXo eXo @@ -122225,19 +122224,19 @@ dDB dDB blb blb -vgz -tMs -wHJ -oCg -bmr +pij +kHz +mWE +gzL +gCf eXo blb eXo eXo eXo eXo -qCc -xaI +ptv +gRN svs svs svs @@ -122455,7 +122454,7 @@ mSH xaN xaN xaN -taL +pzG xaN xaN xaN @@ -122468,10 +122467,10 @@ uGK vbp fWJ xaN -bCQ +jCx llT -kfI -vXH +qEB +uqn blb blb blb @@ -122482,19 +122481,19 @@ ifa ifa ifa blb -vgz +pij aoa -asG -gDQ -lSc +llH +cKL +mTM eXo blb blb blb blb -eXt -kML -apl +bMH +tYN +dkP svs dDB dDB @@ -122711,9 +122710,9 @@ xaN xCV xaN tZi -xWL -vkV -nBG +oAz +iuO +lqN liS xaN eUN @@ -122725,9 +122724,9 @@ xok xok fWJ bNl -bCQ -qac -vOf +jCx +qgq +iQP uXC scj ifa @@ -122743,15 +122742,15 @@ eXo eXo mFG epa -whu +ofG eXo blb kQt kQt kQt kQt -xJm -sOt +dGm +dfg svs dDB dDB @@ -122969,46 +122968,46 @@ dDB xaN xwk gnY -mOM -vFh -vYS -dfO +kCA +uJP +kPs +wxu xok xok xok xok dTi -evq +tbI xok qNO xaN -lGL -jML -jML -awQ -dXe -jTu -gTK -bDD -dhy -otB -lee +muK +ukN +ukN +vlp +iSo +kBT +epi +aIf +aBN +bCB +dJh lCh ifa dDB blb eXo -vgz -vgz -vgz +pij +pij +pij eXo blb kQt kVx bEd hyE -hZP -uaF +fJY +nQW svs blb blb @@ -123230,26 +123229,26 @@ vlq vFn qNO sbq -wRd -wRo -xEQ -elh -fpw -pOL +jYV +qsV +cFl +lDF +yba +lDr xok geg xok bEB -vjV +mWc eYH -ruB -vXH +jTH +uqn jnk gqh bcK -kXQ -jId -spK +eSb +iTI +gqV qKe ifa blb @@ -123262,10 +123261,10 @@ blb blb kQt lxo -aWB +uFc pil -cxy -cyf +oXO +nlb svs dDB dDB @@ -123487,26 +123486,26 @@ lOG xaN xCV sbq -cNT -vTf -xFI -gfu -pQW -pQW -nOD -pzg +wRo +nEo +aXy +iRv +ckt +ckt +cdx +lwu lkV whF -okW +eKB kQt -fUo +myW hyE xKl vkW -djE -kCI +uWr +fkL gqh -spK +gqV jJT kQt kQt @@ -123518,11 +123517,11 @@ kQt kQt kQt kQt -bFW +dHL leP hyE -iVT -uYO +pgF +wDy svs dDB dDB @@ -123747,24 +123746,24 @@ sbq sbq sbq sbq -muB +aFj lkV -iJL -dNo -uDI -juU -vMi -agI +tZD +aZU +vTv +uOe +boY +abS kQt -xZX +sHl hyE gTS nUo bGe iqD -cHy -nQo -pcL +fVy +iOC +nGC kQt bRk oix @@ -123778,8 +123777,8 @@ hyE qww hyE hyE -xVj -oHy +uPx +kIi grm dDB dDB @@ -124002,18 +124001,18 @@ dDB blb rLr xtW -lUt -wBN -fId -wBN -cCK -rci +jiR +reN +hRA +reN +uOn +nIf kpX lnu enG -xMK +hIV kQt -xZX +sHl hyE hyE hyE @@ -124021,7 +124020,7 @@ iut hyE tbu tbu -tbk +nLC kQt hyE oix @@ -124035,8 +124034,8 @@ leP xXi hyE kXS -jhY -maE +pJa +blA grm dDB dDB @@ -124261,25 +124260,25 @@ rLr naz rlM oZz -hRA +xZJ aVT enG -pJr -pJr -pJr -hUD -xpR +kUa +kUa +kUa +vIz +dXx kQt -nhl -rBc -dzE +kjT +feF +qoR oTj eLB hyE hKs pYx -tdS -uch +oIz +iIk hyE oix hyE @@ -124289,11 +124288,11 @@ osY hyE hyE lSb -tUZ +mch hyE wmB -qGB -pXS +luC +ebx svs dDB dDB @@ -124516,20 +124515,20 @@ dDB blb rLr xtW -wja +xxa nWh -xEn +mgQ nWh -xnR -aLC -wLZ -eKV -jPM -vwJ +lXI +qdn +wgO +ncA +cns +aEV kQt kQt kQt -fAP +eHj vWU kRE hyE @@ -124549,8 +124548,8 @@ qgu hyE hyE svs -bpo -sTi +qlS +nYn svs dDB dDB @@ -124775,18 +124774,18 @@ yeZ yeZ yeZ yeZ -sBA +fnd yeZ yeZ qei qei qei -jZL -dDc +nZm +heQ hGb -iSh +iUc kQt -xZX +sHl eBe bEd hyE @@ -124798,16 +124797,16 @@ hyE oix hyE iZH -shm +mXk lKG scv hyE -bFW +dHL hyE blb grm lZH -ppm +qZM grm dDB dDB @@ -125029,33 +125028,33 @@ dDB dDB blb yeZ -rma -oqi +wrT +oCB xFL -pPD +dtk kZF pSB qei qZU jeG -wRm -dyJ +oxg +fZG hQD cqx kQt -xZX +sHl iix gFu hyE -rLk -umr +cJF +uOc cAm ggN hyE mME hyE mJS -tSI +bJw eoC cRS hyE @@ -125064,7 +125063,7 @@ hyE blb grm eUC -oIa +hoN grm dDB dDB @@ -125286,21 +125285,21 @@ dDB dDB blb rle -xKA +oqi xFL -rbH +rCa lwn -vZf +aMy nNZ qei rss hcb -owH -rzd +peH +sQX idt tKG kQt -nyd +aSX hyE hyE hyE @@ -125321,7 +125320,7 @@ hyE hyE svs svs -whA +bpO svs dDB dDB @@ -125543,21 +125542,21 @@ dDB dDB blb yeZ -iyr -rCa -wVg +sKQ +dEL +qLB nzL nzL nzL qei vCQ qSC -rez -xwU +kcQ +gpT bVD -agy +pME kQt -tdE +qrL rWA mfp uyA @@ -125573,12 +125572,12 @@ uqL bGL pjb jLP -bFW +dHL bRk hyE blb wJd -khG +tfQ huy dDB dDB @@ -125802,21 +125801,21 @@ blb rle wTJ lDw -pAC +ejx bry heT teE qei xwQ wCH -fkK -qPJ -sGE -hon +sXL +rzd +dUb +hcF kQt -lHc -njh -xyZ +sAc +xaF +mmP pxZ xTf nZq @@ -125827,15 +125826,15 @@ xap ieY kks dof -sdm -gJj +uVO +lEg rWO wrD bHs hyE blb wJd -jSU +oTq huy dDB dDB @@ -126059,21 +126058,21 @@ nzL yeZ iHv lDw -fKd +opp lDw bHy rxP qei whD -qRa -cTp -qPJ -uQb -ijB +hwh +gzS +rzd +gbE +qoM kQt hyE hyE -xXy +cqW hyE hyE pYu @@ -126092,7 +126091,7 @@ hyE hyE wJd wJd -kci +owI wJd wJd wJd @@ -126316,21 +126315,21 @@ nFI yeZ wXg rud -aGb -rFp +hWG +rEN yly -kHJ -rGp -qLE -qnJ -oiT -obs -ilE -nwk +rBg +bTH +blJ +kwU +bVH +csU +aQL +xoM kQt -bHF -mdG -jie +mHY +teF +sHv vHx hyE lKG @@ -126349,7 +126348,7 @@ xjZ xjZ gTb utD -ucY +rkr qVK iEG vGK @@ -126585,7 +126584,7 @@ kQt kQt kQt kQt -fSx +mGU hyE hyE hyE @@ -126606,14 +126605,14 @@ vWQ fBX fBX vvz -jvP +cnK vvz fbM mCF xIP -rGO -mqO -vKe +nlM +gkJ +rJc gXS njL xIP @@ -126832,17 +126831,17 @@ yeZ yeZ yeZ yeZ -oXa -dYW -dxZ -mdG -mdG -mdG -mdG -irc +oVV +kpD +piP +teF +teF +teF +teF +mxA hyE -bHF -xAv +mHY +olz hyE dDB dDB @@ -126853,22 +126852,22 @@ dDB dDB dDB hyE -dAr -afF -afF lVg +afF +afF +pMs hyE wWz nQz sSS fLC -hgP -uyF -bmA -xZs -jif -wBi -fUN +uJm +wtC +kuZ +eQd +qcf +dPS +swH kGB bzZ flo @@ -127096,9 +127095,9 @@ hyE hyE hyE hyE -kit -mdG -rta +nvU +teF +vai hyE hyE dDB @@ -127110,11 +127109,11 @@ dDB dDB dDB hyE +iWI +hyE +hyE ecL hyE -hyE -oOR -hyE pNC luo jAq @@ -127125,7 +127124,7 @@ lhP ksa hyA xIP -sib +lNq uVD bzZ bGn @@ -127354,7 +127353,7 @@ dDB dDB hyE hyE -aKJ +jKv hyE hyE dDB @@ -127367,10 +127366,10 @@ dDB dDB dDB dDB -ury -blb -blb fKx +blb +blb +seV wJd nle lnA @@ -127611,7 +127610,7 @@ dDB dDB dDB loo -jIm +ept loo dDB dDB @@ -127624,10 +127623,10 @@ dDB dDB dDB dDB -wHl +iaJ blb blb -fKx +seV wJd wJd wJd @@ -127868,7 +127867,7 @@ dDB dDB dDB xeo -xTo +mZu cMv dDB dDB @@ -127881,7 +127880,7 @@ dDB dDB dDB dDB -wHl +iaJ blb blb vVT @@ -128125,7 +128124,7 @@ dDB dDB dDB xeo -xTo +mZu cMv dDB dDB @@ -128138,10 +128137,10 @@ dDB dDB dDB dDB -ury -blb -blb fKx +blb +blb +seV dDB blb dDB @@ -128382,7 +128381,7 @@ dDB dDB dDB xeo -xTo +mZu cMv dDB dDB @@ -128395,7 +128394,7 @@ ylD dDB dDB ylD -sgt +cpJ ylD ylD mTU @@ -128639,13 +128638,13 @@ dDB dDB dDB loo -jIm +ept loo dDB dDB dDB cSC -aRT +lnU cNR jNn ylD @@ -128896,22 +128895,22 @@ ylD ylD ylD ylD -mud +kQP ylD ylD ylD ylD cSC rir -swh -xFT +nKp +lXH ylD wNK pnt ylD ksN -ubk -eRO +sVk +jQj xpb ylD lVz @@ -128924,9 +128923,9 @@ dDB ylD urn pHk -aMp -wla vlX +wla +aRw egN oFf cbg @@ -129148,26 +129147,26 @@ ylD sge lVz idq -oRB -vfK -vfK -pST -pST -vfK -vfK -bnr -bnr +hTI +pyr +pyr +cCl +cCl +pyr +pyr +gwI +gwI qkp -jKT +okO sEB -kNk -wiO +odk +pof eLn xlx sEn csI -xae -sgm +bVR +jLl xlx sOF cFq @@ -129181,12 +129180,12 @@ dDB ylD ylD ylD +sPa +ylD +ylD oRV ylD ylD -hGk -ylD -ylD ylD dDB dDB @@ -129412,19 +129411,19 @@ ylD ylD ylD ylD -mUn +nOg ylD ylD -rhL +bKq sEB -rMb -jTp +wgt +eAo sWA -mmy +kwu ouL -cfy -mmy -mmy +aqV +kwu +kwu vLs qeT ylD @@ -129437,11 +129436,11 @@ ylD ylD ylD mEq -xCT +ozV bsI ylD wBa -tob +xCT kRN ylD wdk @@ -129667,33 +129666,33 @@ jmd bRm wKG lAO -ncb +mfI ylD -mLA +wBJ pFk ylD sIZ rir -bAI -bGi +kRU +aVL ylD vPJ -dTB +bER ylD pdt xBF sVp oyR ylD -iWf -nTE +ymh +meJ xkn xEv -nTE -nTE -nTE -oRV -hMk +meJ +meJ +meJ +sPa +eQQ gYq aUA ylD @@ -129926,13 +129925,13 @@ rEb oiU oiU mZA -uqU -qwc +add +xNV ylD fbj -tTA +jPU fbj -mMr +jNX ylD nuY ovB @@ -129942,7 +129941,7 @@ ylD ylD ylD ylD -iWf +ymh ylD ylD ylD @@ -130184,7 +130183,7 @@ lQu ylD ylD oWk -mVy +qHt ylD ylD ylD @@ -130193,13 +130192,13 @@ ylD ylD dOb ovB -kUW -nTE -nTE -nTE -nTE +lko +meJ +meJ +meJ +meJ xkn -iWf +ymh ylD xqq xLY @@ -130440,13 +130439,13 @@ mwx wgF ylD rZG -krv -bNP +cFj +ruG fii fNv jwh -mAP -goz +fvz +aYR vNt kIY vqb @@ -130698,8 +130697,8 @@ ylD ylD xcH xmg -aiX -mlm +cXN +tGY vlb xgz iKo @@ -130956,7 +130955,7 @@ ylD ylD ylD vnv -wnI +elr vnv ylD ylD @@ -131213,7 +131212,7 @@ ylD wFz baE fcq -nAI +urc fkT fcq sQv @@ -131470,12 +131469,12 @@ ylD olm fcq fkT -jcm -nAI -nAI -nAI -nAI -vjp +wCS +urc +urc +urc +urc +tKm wdk wdk wdk @@ -131727,8 +131726,8 @@ cgM fcq fcq mcl -xYz -nAI +vjO +urc fcq fkT fcq @@ -131984,8 +131983,8 @@ lgf fkT mcl mcl -xYz -gSk +vjO +efO fcq oBh fcq diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 3f99621867d..da86edde001 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -164,23 +164,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/construction/mining/aux_base) -"acn" = ( -/obj/machinery/door/airlock/medical{ - name = "Medbay Cold Room" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron, -/area/station/medical/coldroom) "acp" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ @@ -375,21 +358,6 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"aeD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/camera/directional/east{ - c_tag = "Cargo Bay - Delivery Office"; - name = "cargo camera" - }, -/obj/effect/turf_decal/tile/brown, -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light_switch/directional/east{ - pixel_y = -6 - }, -/turf/open/floor/iron, -/area/station/cargo/sorting) "aeF" = ( /turf/open/floor/plating, /area/station/construction/mining/aux_base) @@ -852,6 +820,11 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/plating, /area/station/maintenance/disposal) +"akV" = ( +/obj/machinery/announcement_system, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) "akW" = ( /obj/machinery/camera/directional/east{ c_tag = "Security - Visitation" @@ -1051,13 +1024,6 @@ /obj/effect/decal/cleanable/insectguts, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"amU" = ( -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/pen, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/computer) "amW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -1295,6 +1261,18 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/science) +"apM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "apT" = ( /obj/machinery/camera/directional/north{ c_tag = "AI - Upload"; @@ -1787,6 +1765,20 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit) +"auH" = ( +/obj/machinery/autolathe, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron, +/area/station/cargo/office) "auI" = ( /obj/structure/table, /obj/item/stack/package_wrap, @@ -2000,13 +1992,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"awL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/maintenance/department/crew_quarters/bar) "awT" = ( /obj/structure/chair/stool/directional/east, /turf/open/floor/iron/cafeteria, @@ -2068,15 +2053,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/maintenance/department/science/xenobiology) -"axz" = ( -/obj/structure/disposalpipe/trunk, -/obj/structure/disposaloutlet, -/obj/machinery/light/small/directional/north, -/obj/machinery/status_display/supply{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/station/cargo/sorting) "axQ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -2198,6 +2174,11 @@ }, /turf/open/floor/iron, /area/station/security/processing) +"aAa" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/tcommsat/server) "aAh" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2824,15 +2805,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/hallway/primary/central/fore) -"aIm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/obj/machinery/computer/security/telescreen/entertainment/directional/west, -/turf/open/floor/iron, -/area/station/cargo/office) "aIp" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow{ @@ -2885,6 +2857,11 @@ /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /turf/open/floor/iron, /area/station/engineering/main) +"aIX" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "aIY" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible{ dir = 8 @@ -4051,6 +4028,19 @@ }, /turf/open/floor/iron/grimy, /area/station/service/library/lounge) +"aYk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/item/radio/intercom/directional/south, +/obj/machinery/light_switch/directional/south{ + pixel_x = 16 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/kitchen_coldroom/dark, +/area/station/medical/coldroom) "aYs" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 9 @@ -4275,6 +4265,12 @@ /obj/machinery/air_sensor/nitrous_tank, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) +"bbc" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/tcommsat/server) "bbj" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 4 @@ -4863,9 +4859,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/prison) -"bij" = ( -/turf/open/floor/plating, -/area/station/cargo/drone_bay) "bil" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/grimy, @@ -6048,18 +6041,6 @@ }, /turf/open/floor/wood, /area/station/engineering/break_room) -"byP" = ( -/obj/machinery/camera{ - c_tag = "Cargo Bay - Drone Bay"; - dir = 4; - name = "cargo camera" - }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "byX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6699,18 +6680,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"bFs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/folder/yellow, -/obj/item/reagent_containers/pill/patch/aiuri, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner, -/area/station/maintenance/disposal/incinerator) "bFA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -8109,6 +8078,17 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/dark/smooth_large, /area/station/science/circuits) +"bVb" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/brown/half{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/half{ + dir = 1 + }, +/area/station/cargo/miningoffice) "bVo" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, @@ -8240,6 +8220,11 @@ /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"bXq" = ( +/obj/machinery/netpod, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/cargo/bitrunning/den) "bXw" = ( /obj/effect/turf_decal/trimline/blue/end{ dir = 4 @@ -8522,6 +8507,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"caC" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "caH" = ( /obj/effect/decal/remains/human, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9099,11 +9094,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron, /area/station/security/checkpoint/supply) -"cjl" = ( -/obj/machinery/announcement_system, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/tcommsat/computer) "cjs" = ( /obj/structure/chair/office, /obj/effect/decal/cleanable/dirt, @@ -10647,19 +10637,6 @@ /obj/structure/plasticflaps, /turf/open/floor/iron, /area/station/medical/storage) -"cBS" = ( -/obj/machinery/computer/exoscanner_control, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/window/spawner/directional/north, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "cBT" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -12089,6 +12066,16 @@ /obj/structure/fans/tiny, /turf/open/floor/plating/airless, /area/station/science/ordnance/testlab) +"cUN" = ( +/obj/structure/closet/crate/freezer/blood, +/obj/machinery/light/small/blacklight/directional/north, +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/bot_white{ + color = "#435a88" + }, +/obj/effect/mapping_helpers/airalarm/tlv_cold_room, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "cUU" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -12394,6 +12381,26 @@ /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/floor/iron, /area/station/engineering/main) +"cZa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Kitchen Coldroom" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron, +/area/station/maintenance/port/fore) "cZl" = ( /obj/effect/decal/cleanable/dirt, /obj/item/kirbyplants/random, @@ -13242,17 +13249,12 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"dkr" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/office, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/cargo/sorting) +"dkx" = ( +/obj/effect/decal/cleanable/glass, +/obj/item/shard, +/obj/structure/sign/poster/random/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) "dkz" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/small/directional/west, @@ -13570,19 +13572,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"dpN" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Xenobiology Kill Room" - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron, -/area/station/science/xenobiology) "dpO" = ( /obj/structure/table/wood, /obj/item/camera_film, @@ -13784,11 +13773,6 @@ dir = 4 }, /area/station/science/lobby) -"dsb" = ( -/obj/machinery/netpod, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) "dse" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -14011,6 +13995,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"dus" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "duA" = ( /turf/closed/wall/r_wall, /area/station/command/corporate_showroom) @@ -14311,6 +14302,13 @@ /obj/structure/chair/stool/directional/east, /turf/open/floor/iron/dark, /area/station/service/theater) +"dxl" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/item/pen, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/computer) "dxo" = ( /obj/structure/bed/medical/emergency, /obj/item/radio/intercom/directional/south, @@ -14846,6 +14844,11 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/white/smooth_large, /area/station/medical/medbay) +"dFE" = ( +/obj/structure/fireplace, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "dFG" = ( /obj/machinery/door/poddoor/preopen{ id = "brigprison"; @@ -14995,6 +14998,15 @@ /obj/machinery/light/cold/directional/south, /turf/open/floor/plating, /area/station/maintenance/port) +"dHU" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/tcomms, +/obj/item/radio{ + pixel_y = 5 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/computer) "dHX" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -16629,16 +16641,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos/hfr_room) -"ecX" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/conveyor{ - id = "cargodisposals" - }, -/obj/machinery/status_display/supply{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/station/cargo/sorting) "eda" = ( /obj/structure/chair/sofa/bench{ dir = 8 @@ -16770,20 +16772,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"eew" = ( -/obj/structure/cable, -/obj/structure/table, -/obj/item/storage/box/shipping{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/folder/yellow, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/sorting) "eex" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/wood{ @@ -16811,14 +16799,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/commons/locker) -"eeZ" = ( -/obj/item/exodrone, -/obj/machinery/exodrone_launcher, -/obj/effect/turf_decal/box, -/obj/effect/decal/cleanable/oil/slippery, -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/plating, -/area/station/cargo/drone_bay) "efb" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 @@ -17215,19 +17195,6 @@ dir = 1 }, /area/station/service/barber) -"emf" = ( -/obj/machinery/computer/exodrone_control_console, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/window/spawner/directional/north, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "emm" = ( /obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, @@ -17282,20 +17249,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"enq" = ( -/obj/item/folder/yellow, -/obj/item/multitool, -/obj/item/pen/red, -/obj/structure/table, -/obj/item/pen/blue{ - pixel_y = -4 - }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/cargo/office) "env" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, @@ -17356,6 +17309,21 @@ /obj/effect/turf_decal/trimline/purple/filled/warning, /turf/open/floor/iron/white, /area/station/science/research) +"eov" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera/directional/east{ + c_tag = "Cargo Bay - Delivery Office"; + name = "cargo camera" + }, +/obj/effect/turf_decal/tile/brown, +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light_switch/directional/east{ + pixel_y = -6 + }, +/turf/open/floor/iron, +/area/station/cargo/sorting) "eoy" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -17459,6 +17427,19 @@ dir = 1 }, /area/station/engineering/supermatter/room) +"epT" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/obj/machinery/camera/directional/north{ + c_tag = "Medbay - Coldroom"; + dir = 9; + name = "medbay camera"; + network = list("ss13","medbay") + }, +/obj/effect/turf_decal/bot_white{ + color = "#435a88" + }, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "epU" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -18377,6 +18358,15 @@ "eBn" = ( /turf/closed/wall, /area/station/security/checkpoint/customs/aft) +"eBr" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron, +/area/station/cargo/storage) "eBE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/tile/neutral/full, @@ -18744,11 +18734,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/science/robotics/lab) -"eGM" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/plating, -/area/station/cargo/drone_bay) "eGO" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -19408,13 +19393,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/secondary/exit) -"eOE" = ( -/obj/structure/table/wood, -/obj/machinery/newscaster/directional/west, -/obj/machinery/coffeemaker/impressa, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/medical/break_room) "eOF" = ( /obj/structure/chair/office{ dir = 1 @@ -20226,6 +20204,24 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/commons/storage/primary) +"eYf" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/white/corner{ + dir = 4 + }, +/obj/machinery/door/airlock/freezer{ + name = "Coldroom" + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "eYj" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/purple{ @@ -20469,20 +20465,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/warden) -"fcg" = ( -/obj/structure/cable, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west{ - pixel_y = -4 - }, -/obj/machinery/light_switch/directional/west{ - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "fcl" = ( /obj/item/reagent_containers/cup/bowl{ pixel_y = 3 @@ -21067,6 +21049,13 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/station/medical/treatment_center) +"fiY" = ( +/obj/structure/sign/poster/greenscreen/directional/west, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "fiZ" = ( /obj/effect/spawner/random/trash/garbage, /obj/effect/decal/cleanable/dirt, @@ -21330,6 +21319,13 @@ }, /turf/open/floor/iron, /area/station/cargo/warehouse) +"fml" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "fmo" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -21498,6 +21494,15 @@ /obj/structure/chair/office, /turf/open/floor/iron/grimy, /area/station/tcommsat/computer) +"fnN" = ( +/obj/machinery/computer/telecomms/server{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/dim/directional/east, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) "foh" = ( /obj/machinery/atmospherics/components/binary/volume_pump{ name = "Ports to Distro" @@ -21917,6 +21922,19 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron, /area/station/maintenance/department/crew_quarters/bar) +"ftF" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Xenobiology Kill Room" + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron, +/area/station/science/xenobiology) "ftG" = ( /obj/structure/sign/nanotrasen{ pixel_y = -32 @@ -21943,6 +21961,15 @@ /obj/effect/turf_decal/siding/yellow, /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) +"fum" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/machinery/computer/security/telescreen/entertainment/directional/west, +/turf/open/floor/iron, +/area/station/cargo/office) "fuw" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -22120,6 +22147,16 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"fwv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/frame/machine, +/obj/item/stack/cable_coil/five, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron, +/area/station/maintenance/department/crew_quarters/bar) "fwK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -22525,6 +22562,14 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) +"fBN" = ( +/obj/machinery/greenscreen_camera{ + dir = 8; + pixel_x = -8; + pixel_y = 6 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "fBQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -22857,6 +22902,20 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/iron/dark, /area/station/service/abandoned_gambling_den) +"fGx" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "E.V.A. Storage" + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron, +/area/station/ai_monitored/command/storage/eva) "fGD" = ( /obj/machinery/light/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -22984,6 +23043,13 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/dark, /area/station/command/bridge) +"fIl" = ( +/obj/structure/plaque/static_plaque/golden/captain{ + pixel_x = 32 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "fIn" = ( /obj/structure/bookcase/random, /turf/open/floor/wood, @@ -23040,16 +23106,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/commons/fitness/recreation) -"fIR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/frame/machine, -/obj/item/stack/cable_coil/five, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, -/area/station/maintenance/department/crew_quarters/bar) "fIU" = ( /obj/structure/rack, /obj/item/gun/energy/laser/carbine/practice{ @@ -25678,17 +25734,6 @@ /obj/structure/reflector/single, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"gpD" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/brown/half{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/cargo/miningoffice) "gpI" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -26152,6 +26197,18 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"guG" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/iron, +/area/station/cargo/sorting) "guH" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock{ @@ -26908,6 +26965,21 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) +"gDI" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Server Access" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/science/server) "gDP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27194,6 +27266,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) +"gHw" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "gHE" = ( /obj/machinery/requests_console/directional/north{ department = "Chapel"; @@ -27203,13 +27283,13 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/carpet/royalblack, /area/station/service/chapel/office) -"gHI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"gHG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/cargo/drone_bay) +/area/station/maintenance/department/crew_quarters/bar) "gHS" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -27378,16 +27458,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/grimy, /area/station/service/library) -"gJe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/kitchen_coldroom/dark, -/area/station/medical/coldroom) "gJj" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/engineering/tracking_beacon, @@ -27406,13 +27476,6 @@ /obj/effect/turf_decal/tile/yellow/half/contrasted, /turf/open/floor/iron, /area/station/engineering/main) -"gJI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "gJT" = ( /obj/structure/cable, /obj/structure/rack, @@ -27817,15 +27880,6 @@ /obj/effect/spawner/random/entertainment/money_small, /turf/open/floor/plating, /area/station/maintenance/fore) -"gPY" = ( -/obj/structure/table/wood, -/obj/item/book/manual/wiki/tcomms, -/obj/item/radio{ - pixel_y = 5 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/computer) "gQa" = ( /obj/effect/decal/cleanable/dirt, /mob/living/basic/mouse/brown/tom, @@ -28296,12 +28350,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/commons/storage/primary) -"gVv" = ( -/obj/machinery/netpod, -/obj/effect/decal/cleanable/robot_debris, -/obj/structure/sign/poster/contraband/random/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) "gVx" = ( /obj/structure/cable, /obj/machinery/door/window/brigdoor/right/directional/south{ @@ -28449,6 +28497,13 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/hallway/secondary/exit) +"gXr" = ( +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "gXu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, @@ -28642,19 +28697,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/maintenance/department/electrical) -"haS" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 8 - }, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron, -/area/station/cargo/storage) "hbg" = ( /obj/effect/spawner/random/structure/closet_empty, /obj/machinery/light/small/dim/directional/north, @@ -28769,6 +28811,10 @@ }, /turf/open/floor/iron, /area/station/command/gateway) +"hcF" = ( +/obj/structure/tank_holder/extinguisher, +/turf/open/floor/iron, +/area/station/cargo/storage) "hcG" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -29417,18 +29463,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/chapel) -"hlO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/kitchen_coldroom/dark, -/area/station/medical/coldroom) "hlT" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/corner{ @@ -30743,24 +30777,6 @@ }, /turf/open/floor/carpet/blue, /area/station/commons/vacant_room/office) -"hFP" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/white/corner{ - dir = 4 - }, -/obj/machinery/door/airlock/freezer{ - name = "Coldroom" - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "hFQ" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -32150,11 +32166,6 @@ /obj/structure/flora/bush/flowers_yw, /turf/open/floor/grass, /area/station/science/genetics) -"hXW" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/vending/cigarette, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "hXZ" = ( /obj/item/storage/box/teargas{ pixel_x = 3; @@ -33036,37 +33047,6 @@ /obj/effect/turf_decal/siding/dark_red, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"iiU" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/monkeycubes{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/item/storage/pill_bottle/mutadone{ - pixel_x = -8; - pixel_y = 9 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -10; - pixel_y = -1 - }, -/obj/item/storage/box/monkeycubes{ - pixel_x = 4 - }, -/obj/machinery/camera/directional/east{ - c_tag = "Science - Genetics"; - dir = 6; - name = "science camera"; - network = list("ss13","rd") - }, -/obj/machinery/status_display/evac/directional/east, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/obj/item/flesh_shears, -/turf/open/floor/iron/dark, -/area/station/science/genetics) "ijm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -33469,20 +33449,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/service/hydroponics) -"inF" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "E.V.A. Storage" - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/all/command/eva, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) "inR" = ( /obj/machinery/door/airlock/research{ name = "Research and Development Lab" @@ -33840,12 +33806,6 @@ }, /turf/open/floor/iron, /area/station/command/gateway) -"isQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/watertank, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/station/cargo/storage) "isR" = ( /obj/structure/chair/office, /obj/effect/decal/cleanable/dirt, @@ -34835,6 +34795,14 @@ }, /turf/open/floor/iron/half, /area/station/engineering/main) +"iGn" = ( +/obj/machinery/status_display/evac/directional/west, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "iGr" = ( /obj/effect/turf_decal/siding/blue, /obj/structure/disposalpipe/segment{ @@ -35308,6 +35276,15 @@ }, /turf/open/floor/iron, /area/station/service/kitchen/abandoned) +"iNa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "iNg" = ( /obj/effect/landmark/start/hangover/closet, /obj/structure/closet/emcloset, @@ -35436,13 +35413,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) -"iOY" = ( -/obj/structure/bed/dogbed/renault, -/obj/machinery/newscaster/directional/south, -/mob/living/basic/pet/fox/renault, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "iPb" = ( /obj/structure/table, /obj/item/storage/box/tail_pin, @@ -35628,11 +35598,6 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/large, /area/station/hallway/secondary/exit/departure_lounge) -"iRz" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "iRF" = ( /obj/machinery/computer/records/security{ dir = 4 @@ -35760,16 +35725,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"iTK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/kitchen_coldroom/dark, -/area/station/medical/coldroom) "iTW" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, @@ -36206,6 +36161,16 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/storage/tech) +"iYT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/kitchen_coldroom/dark, +/area/station/medical/coldroom) "iZf" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -36681,19 +36646,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"jew" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/obj/machinery/light_switch/directional/south{ - pixel_x = 16 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/kitchen_coldroom/dark, -/area/station/medical/coldroom) "jex" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -36789,12 +36741,6 @@ /obj/structure/sign/poster/random/directional/east, /turf/open/floor/iron/checker, /area/station/service/bar/backroom) -"jfo" = ( -/obj/effect/turf_decal/tile/yellow/diagonal_edge, -/obj/effect/turf_decal/tile/red/diagonal_centre, -/obj/structure/sign/poster/official/cleanliness/directional/west, -/turf/open/floor/iron/diagonal, -/area/station/science/breakroom) "jfy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -37077,6 +37023,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) +"jir" = ( +/obj/machinery/computer/telecomms/monitor{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) "jix" = ( /obj/structure/disposalpipe/sorting/mail{ dir = 1; @@ -37100,6 +37053,17 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/construction) +"jiU" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron, +/area/station/cargo/sorting) "jiX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -37603,6 +37567,12 @@ /obj/structure/falsewall, /turf/open/floor/iron/dark, /area/station/maintenance/department/science) +"jor" = ( +/obj/structure/bed, +/obj/item/bedsheet/clown, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/wood, +/area/station/hallway/secondary/service) "jos" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -39723,13 +39693,6 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/maintenance/department/electrical) -"jPU" = ( -/obj/effect/landmark/start/cargo_technician, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "jPX" = ( /obj/structure/table, /obj/item/cane, @@ -41223,27 +41186,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"kir" = ( -/obj/item/storage/medkit/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/regular, -/obj/item/storage/medkit/toxin{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/north{ - name = "Medkit Storage"; - req_access = list("medical") - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron, -/area/station/medical/storage) "kix" = ( /obj/effect/turf_decal/bot, /obj/structure/extinguisher_cabinet/directional/south, @@ -41871,6 +41813,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/disposal) +"krb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "kri" = ( /obj/effect/spawner/random/structure/tank_holder, /turf/open/floor/plating, @@ -42478,6 +42428,11 @@ }, /turf/open/floor/iron, /area/station/command/corporate_showroom) +"kzv" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/vending/cigarette, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "kzI" = ( /obj/structure/table/wood, /obj/item/electronics/airalarm, @@ -42515,6 +42470,12 @@ /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"kzZ" = ( +/obj/machinery/netpod, +/obj/effect/decal/cleanable/robot_debris, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/cargo/bitrunning/den) "kAc" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, @@ -42547,6 +42508,12 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/commons/storage/tools) +"kAS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/watertank, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron, +/area/station/cargo/storage) "kAX" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 1 @@ -42622,6 +42589,18 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"kCq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table/reinforced, +/obj/item/clipboard, +/obj/item/folder/yellow, +/obj/item/reagent_containers/applicator/patch/aiuri, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner, +/area/station/maintenance/disposal/incinerator) "kCs" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -42857,12 +42836,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/security/prison/visit) -"kFO" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/maintenance/department/crew_quarters/bar) "kFQ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/moisture_trap, @@ -43294,22 +43267,6 @@ dir = 1 }, /area/station/cargo/miningoffice) -"kLI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/north{ - pixel_x = 2 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/light_switch/directional/north{ - pixel_x = -7; - pixel_y = 28 - }, -/obj/machinery/recharge_station, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) "kLK" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -43879,28 +43836,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/port) -"kUj" = ( -/obj/effect/decal/cleanable/oil/streak, -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 7 - }, -/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind{ - pixel_x = 5 - }, -/obj/machinery/camera/autoname/directional/south, -/obj/item/toy/figure/bitrunner{ - pixel_x = -6 - }, -/obj/structure/sign/poster/official/random/directional/south, -/obj/machinery/firealarm/directional/west{ - pixel_y = -4 - }, -/obj/machinery/light_switch/directional/west{ - pixel_y = 6 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/bitrunning/den) "kUn" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/brown{ @@ -44292,13 +44227,6 @@ /obj/effect/turf_decal/tile/dark_blue/fourcorners, /turf/open/floor/iron, /area/station/commons/dorms/laundry) -"kZu" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron/dark, -/area/station/tcommsat/computer) "kZE" = ( /obj/structure/table, /obj/item/paper_bin, @@ -44797,20 +44725,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/chapel) -"lgc" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/effect/mapping_helpers/turn_off_lights_with_lightswitch, -/obj/machinery/firealarm/directional/north{ - pixel_x = 2 - }, -/obj/machinery/light_switch/directional/north{ - pixel_x = -7; - pixel_y = 28 - }, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "lgf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -45681,6 +45595,12 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"lrl" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/maintenance/department/crew_quarters/bar) "lrn" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, @@ -45699,6 +45619,20 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, /area/station/commons/dorms) +"lrz" = ( +/obj/item/folder/yellow, +/obj/item/multitool, +/obj/item/pen/red, +/obj/structure/table, +/obj/item/pen/blue{ + pixel_y = -4 + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron, +/area/station/cargo/office) "lrA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -45750,6 +45684,20 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/station/service/library) +"lrZ" = ( +/obj/structure/cable, +/obj/structure/table, +/obj/item/storage/box/shipping{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/folder/yellow, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/sorting) "lsf" = ( /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, @@ -45946,6 +45894,20 @@ }, /turf/open/floor/iron/sepia, /area/station/service/library/artgallery) +"luy" = ( +/obj/structure/cable, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west{ + pixel_y = -4 + }, +/obj/machinery/light_switch/directional/west{ + pixel_y = 6 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "luD" = ( /obj/structure/closet/secure_closet/brig{ id = "brig2"; @@ -46566,6 +46528,16 @@ /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"lCm" = ( +/obj/structure/rack, +/obj/item/storage/briefcase/secure, +/obj/machinery/status_display/ai/directional/south, +/obj/effect/turf_decal/bot, +/obj/item/reagent_containers/applicator/patch/aiuri, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "lCu" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch" @@ -46651,6 +46623,27 @@ dir = 1 }, /area/station/service/chapel) +"lDc" = ( +/obj/item/storage/medkit/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/regular, +/obj/item/storage/medkit/toxin{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/table/reinforced, +/obj/machinery/door/window/right/directional/north{ + name = "Medkit Storage"; + req_access = list("medical") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron, +/area/station/medical/storage) "lDi" = ( /turf/closed/wall, /area/station/cargo/warehouse) @@ -46664,17 +46657,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/corporate_showroom) -"lDu" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/machinery/microwave{ - desc = "Cooks and boils stuff, somehow."; - pixel_x = -3; - pixel_y = 5 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "lDI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46685,6 +46667,12 @@ }, /turf/open/floor/iron/dark, /area/station/service/library/printer) +"lDQ" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/order_console/mining, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "lDV" = ( /obj/structure/sign/warning/secure_area, /turf/closed/wall, @@ -46812,13 +46800,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"lER" = ( -/obj/structure/plaque/static_plaque/golden/captain{ - pixel_x = 32 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "lES" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -46950,26 +46931,6 @@ /obj/machinery/computer/security/wooden_tv, /turf/open/floor/iron/grimy, /area/station/command/bridge) -"lGE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Kitchen Coldroom" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron, -/area/station/maintenance/port/fore) "lGF" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -47266,11 +47227,6 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark/smooth_corner, /area/station/cargo/bitrunning/den) -"lJx" = ( -/obj/machinery/firealarm/directional/north, -/obj/item/kirbyplants/random, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "lJB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/west, @@ -47282,6 +47238,11 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"lJE" = ( +/obj/machinery/firealarm/directional/north, +/obj/item/kirbyplants/random, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "lJJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -50646,14 +50607,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/commons/dorms/laundry) -"mDP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "mDR" = ( /obj/machinery/vending/wardrobe/law_wardrobe, /obj/machinery/firealarm/directional/east, @@ -50853,15 +50806,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"mGD" = ( -/obj/machinery/computer/telecomms/server{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/dim/directional/east, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/tcommsat/computer) "mGE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51124,6 +51068,22 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"mJj" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "E.V.A. Storage" + }, +/obj/structure/cable, +/obj/effect/landmark/navigate_destination, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron, +/area/station/ai_monitored/command/storage/eva) "mJm" = ( /obj/machinery/door/firedoor/heavy, /obj/machinery/door/airlock/research/glass{ @@ -51283,6 +51243,16 @@ /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"mLt" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/conveyor{ + id = "cargodisposals" + }, +/obj/machinery/status_display/supply{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/station/cargo/sorting) "mLA" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -51740,20 +51710,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"mRZ" = ( -/obj/machinery/autolathe, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 8 - }, -/obj/machinery/light_switch/directional/south{ - pixel_x = 5 - }, -/obj/machinery/firealarm/directional/south{ - pixel_x = -5 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/cargo/office) "mSc" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/structure/extinguisher_cabinet/directional/east, @@ -52947,6 +52903,22 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"nkv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/north{ + pixel_x = 2 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/light_switch/directional/north{ + pixel_x = -7; + pixel_y = 28 + }, +/obj/machinery/recharge_station, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "nkG" = ( /obj/structure/table/wood/poker, /obj/effect/decal/cleanable/dirt, @@ -53162,15 +53134,6 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat_interior) -"nmU" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) "nmX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53375,6 +53338,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) +"npK" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/mapping_helpers/turn_off_lights_with_lightswitch, +/obj/machinery/firealarm/directional/north{ + pixel_x = 2 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = -7; + pixel_y = 28 + }, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "npQ" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/stripes/line{ @@ -53461,6 +53438,14 @@ }, /turf/open/floor/iron, /area/station/security/warden) +"nrx" = ( +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/obj/machinery/light/small/blacklight/directional/north, +/obj/effect/turf_decal/bot_white{ + color = "#435a88" + }, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "nry" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -55456,6 +55441,18 @@ /obj/effect/turf_decal/trimline/purple/filled/corner, /turf/open/floor/iron/white, /area/station/science/lobby) +"nRu" = ( +/obj/machinery/camera{ + c_tag = "Cargo Bay - Drone Bay"; + dir = 4; + name = "cargo camera" + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "nRv" = ( /obj/effect/spawner/random/maintenance, /obj/effect/spawner/random/trash/bin, @@ -55746,6 +55743,19 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/science/research/abandoned) +"nVT" = ( +/obj/machinery/computer/exoscanner_control, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/window/spawner/directional/north, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "nWc" = ( /obj/machinery/restaurant_portal/restaurant, /obj/effect/turf_decal/delivery/red, @@ -55957,16 +55967,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"nYZ" = ( -/obj/structure/closet/crate/freezer/blood, -/obj/machinery/light/small/blacklight/directional/north, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/bot_white{ - color = "#435a88" - }, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "nZb" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 @@ -56002,14 +56002,6 @@ dir = 4 }, /area/station/commons/fitness/recreation) -"nZx" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "nZA" = ( /obj/structure/table/wood, /obj/item/assembly/igniter, @@ -56179,12 +56171,6 @@ }, /turf/open/floor/plating, /area/station/science/robotics/mechbay) -"occ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/computer/order_console/mining, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "ocd" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/flora/bush/flowers_yw/style_random, @@ -57344,11 +57330,6 @@ /obj/item/radio/intercom/prison/directional/south, /turf/open/floor/iron, /area/station/security/prison/work) -"oqZ" = ( -/obj/structure/fireplace, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "orh" = ( /obj/structure/table/reinforced, /obj/effect/spawner/random/entertainment/cigarette_pack, @@ -58286,6 +58267,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"oFc" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/status_display/ai/directional/west, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) "oFi" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -58454,6 +58442,23 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/detectives_office) +"oHI" = ( +/obj/machinery/door/airlock/medical{ + name = "Medbay Cold Room" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron, +/area/station/medical/coldroom) "oHJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59705,6 +59710,18 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"oYM" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/kitchen_coldroom/dark, +/area/station/medical/coldroom) "oYV" = ( /obj/item/kirbyplants/random, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -60816,13 +60833,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) -"pmf" = ( -/obj/machinery/status_display/ai/directional/north, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "pmz" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -63380,11 +63390,6 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/service/library/lounge) -"pSh" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/tcommsat/server) "pSj" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -64238,6 +64243,13 @@ }, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/entry) +"qaP" = ( +/obj/structure/bed/dogbed/renault, +/obj/machinery/newscaster/directional/south, +/mob/living/basic/pet/fox/renault, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "qaT" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -64734,16 +64746,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"qid" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/virology) "qig" = ( /obj/structure/table/wood, /obj/machinery/camera/directional/west{ @@ -64825,6 +64827,12 @@ }, /turf/open/floor/plating, /area/station/service/theater/abandoned) +"qja" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/table/wood, +/obj/machinery/recharger, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "qje" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -65513,6 +65521,37 @@ /obj/item/wrench, /turf/open/floor/plating, /area/station/service/theater/abandoned) +"qsA" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/monkeycubes{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/storage/pill_bottle/mutadone{ + pixel_x = -8; + pixel_y = 9 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -10; + pixel_y = -1 + }, +/obj/item/storage/box/monkeycubes{ + pixel_x = 4 + }, +/obj/machinery/camera/directional/east{ + c_tag = "Science - Genetics"; + dir = 6; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/item/flesh_shears, +/turf/open/floor/iron/dark, +/area/station/science/genetics) "qsC" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67517,14 +67556,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) -"qSG" = ( -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/obj/machinery/light/small/blacklight/directional/north, -/obj/effect/turf_decal/bot_white{ - color = "#435a88" - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "qSJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -67684,6 +67715,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/half, /area/station/engineering/atmos/project) +"qVj" = ( +/obj/effect/turf_decal/tile/yellow/diagonal_edge, +/obj/effect/turf_decal/tile/red/diagonal_centre, +/obj/structure/sign/poster/official/cleanliness/directional/west, +/turf/open/floor/iron/diagonal, +/area/station/science/breakroom) "qVk" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/light_switch/directional/south, @@ -68086,6 +68123,17 @@ /obj/machinery/light/floor, /turf/open/floor/iron/dark, /area/station/command/bridge) +"rbG" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table, +/obj/machinery/microwave{ + desc = "Cooks and boils stuff, somehow."; + pixel_x = -3; + pixel_y = 5 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "rbR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68265,6 +68313,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/department/chapel) +"rew" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/brown/half{ + dir = 4 + }, +/obj/item/clipboard, +/obj/item/toy/figure/miner, +/obj/machinery/light/directional/south, +/obj/machinery/computer/security/telescreen/entertainment/directional/south, +/turf/open/floor/iron/half{ + dir = 1 + }, +/area/station/cargo/miningoffice) "rex" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced/tinted, @@ -68397,6 +68458,13 @@ }, /turf/open/floor/iron, /area/station/science/robotics/lab) +"rgv" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/cargo/office) "rgw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible, /obj/structure/sign/directions/engineering{ @@ -68501,6 +68569,19 @@ }, /turf/open/floor/iron, /area/station/science/xenobiology) +"rhk" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/light_switch/directional/south, +/turf/open/floor/iron, +/area/station/cargo/storage) "rhp" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -68982,6 +69063,11 @@ }, /turf/open/floor/iron/dark, /area/station/security/evidence) +"rlV" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "rmc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -69936,6 +70022,13 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/dark/smooth_large, /area/station/service/chapel/funeral) +"ryS" = ( +/obj/item/flashlight/lamp, +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/status_display/evac/directional/east, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) "ryY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70442,13 +70535,6 @@ }, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) -"rGX" = ( -/obj/structure/sign/poster/greenscreen/directional/west, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "rGZ" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -70741,6 +70827,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/security/medical) +"rKa" = ( +/obj/machinery/exodrone_launcher, +/obj/effect/turf_decal/box, +/obj/machinery/status_display/ai/directional/north, +/obj/structure/sign/poster/official/random/directional/west, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "rKb" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, @@ -70942,12 +71035,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"rMt" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/tcommsat/server) "rMv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/turf_decal/tile/dark_blue/opposingcorners, @@ -71431,6 +71518,16 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/white, /area/station/science/research) +"rRm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/kitchen_coldroom/dark, +/area/station/medical/coldroom) "rRr" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71624,10 +71721,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron, /area/station/cargo/lobby) -"rTB" = ( -/obj/structure/tank_holder/extinguisher, -/turf/open/floor/iron, -/area/station/cargo/storage) "rTG" = ( /obj/structure/cable, /obj/structure/disposalpipe/sorting/mail{ @@ -72882,11 +72975,6 @@ "sjt" = ( /turf/closed/wall, /area/station/hallway/secondary/entry) -"sjv" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/vending/boozeomat, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "sjz" = ( /obj/effect/turf_decal/siding/white{ dir = 1 @@ -72909,14 +72997,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/port) -"sjY" = ( -/obj/machinery/greenscreen_camera{ - dir = 8; - pixel_x = -8; - pixel_y = 6 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "ske" = ( /obj/effect/spawner/random/entertainment/arcade, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -73013,18 +73093,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"skZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "sle" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -73343,19 +73411,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"sqj" = ( -/obj/structure/closet/crate/freezer/surplus_limbs, -/obj/machinery/camera/directional/north{ - c_tag = "Medbay - Coldroom"; - dir = 9; - name = "medbay camera"; - network = list("ss13","medbay") - }, -/obj/effect/turf_decal/bot_white{ - color = "#435a88" - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "sqm" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 @@ -73397,6 +73452,11 @@ /obj/item/food/meat/slab/monkey, /turf/open/floor/iron/kitchen_coldroom/dark, /area/station/service/kitchen/coldroom) +"sqO" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/vending/boozeomat, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "sqT" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -73466,13 +73526,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/abandoned_gambling_den) -"srV" = ( -/obj/item/flashlight/lamp, -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/status_display/evac/directional/east, -/turf/open/floor/iron/dark, -/area/station/tcommsat/computer) "ssb" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -73698,6 +73751,13 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/station/engineering/storage_shared) +"suN" = ( +/obj/machinery/light/directional/south, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/bitrunning/den) "suQ" = ( /obj/structure/cable, /obj/structure/table/wood/fancy/blue, @@ -74327,27 +74387,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) -"sCe" = ( -/obj/item/storage/medkit/o2{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/regular, -/obj/item/storage/medkit/o2{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/north{ - name = "Medkit Storage"; - req_access = list("medical") - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron, -/area/station/medical/storage) "sCh" = ( /obj/structure/cable, /obj/structure/table/wood, @@ -74535,6 +74574,9 @@ /obj/effect/turf_decal/tile/purple/fourcorners, /turf/open/floor/iron, /area/station/science/research) +"sEQ" = ( +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "sFf" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible, /obj/effect/turf_decal/siding/yellow{ @@ -75311,6 +75353,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/chapel) +"sPg" = ( +/obj/machinery/light/directional/east, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/table/wood, +/obj/item/storage/photo_album, +/obj/item/camera, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "sPk" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -75493,12 +75543,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/science) -"sQU" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "sRd" = ( /turf/closed/wall/r_wall, /area/station/security/evidence) @@ -76256,6 +76300,28 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) +"tbs" = ( +/obj/effect/decal/cleanable/oil/streak, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 7 + }, +/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind{ + pixel_x = 5 + }, +/obj/machinery/camera/autoname/directional/south, +/obj/item/toy/figure/bitrunner{ + pixel_x = -6 + }, +/obj/structure/sign/poster/official/random/directional/south, +/obj/machinery/firealarm/directional/west{ + pixel_y = -4 + }, +/obj/machinery/light_switch/directional/west{ + pixel_y = 6 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/bitrunning/den) "tbC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -76282,6 +76348,13 @@ /obj/structure/closet/crate/wooden, /turf/open/floor/plating, /area/station/maintenance/department/chapel) +"tbU" = ( +/obj/structure/table/wood, +/obj/machinery/newscaster/directional/west, +/obj/machinery/coffeemaker/impressa, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/medical/break_room) "tbZ" = ( /obj/item/kirbyplants/random, /obj/machinery/status_display/door_timer{ @@ -76796,13 +76869,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/cargo/storage) -"tjo" = ( -/obj/machinery/light/directional/south, -/obj/machinery/byteforge, -/obj/effect/turf_decal/box, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/bitrunning/den) "tjp" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, @@ -76818,6 +76884,26 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) +"tjN" = ( +/obj/effect/landmark/start/cargo_technician, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"tjS" = ( +/obj/machinery/computer/exodrone_control_console, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/window/spawner/directional/north, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "tke" = ( /obj/structure/chair{ dir = 1 @@ -76927,6 +77013,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/station/service/theater) +"tlK" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 1 + }, +/obj/structure/sign/poster/official/random/directional/north, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron, +/area/station/cargo/office) "tlL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -78822,19 +78917,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron, /area/station/engineering/supermatter/room) -"tJp" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/brown/half{ - dir = 4 - }, -/obj/item/clipboard, -/obj/item/toy/figure/miner, -/obj/machinery/light/directional/south, -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/cargo/miningoffice) "tJt" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -78930,6 +79012,12 @@ /obj/effect/turf_decal/tile/red/half, /turf/open/floor/iron/half, /area/station/security/office) +"tKQ" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "tKV" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -79816,12 +79904,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) -"tWw" = ( -/obj/effect/decal/cleanable/glass, -/obj/item/shard, -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/crew_quarters/bar) "tWx" = ( /obj/effect/turf_decal/tile/red/diagonal_centre, /obj/effect/turf_decal/tile/blue/diagonal_edge, @@ -80793,15 +80875,6 @@ /obj/machinery/computer/security/telescreen/research/directional/north, /turf/open/floor/iron/dark, /area/station/command/bridge) -"uiK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "uiM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -82894,13 +82967,6 @@ /obj/effect/turf_decal/tile/green/half/contrasted, /turf/open/floor/iron/white, /area/station/medical/virology) -"uJj" = ( -/obj/machinery/computer/telecomms/monitor{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/tcommsat/computer) "uJk" = ( /obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/neutral, @@ -82910,6 +82976,15 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"uJn" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/disposaloutlet, +/obj/machinery/light/small/directional/north, +/obj/machinery/status_display/supply{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/station/cargo/sorting) "uJp" = ( /obj/machinery/disposal/bin{ desc = "A pneumatic waste disposal unit. This one leads to the morgue."; @@ -83683,15 +83758,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/port/fore) -"uRP" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron, -/area/station/cargo/office) "uRV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -85973,11 +86039,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/abandoned_gambling_den) -"vwK" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/station/cargo/drone_bay) "vwO" = ( /obj/structure/chair{ dir = 4 @@ -87082,6 +87143,11 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"vKT" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "vLd" = ( /obj/machinery/light/small/directional/east, /obj/structure/closet/secure_closet/brig{ @@ -87208,14 +87274,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"vMQ" = ( -/obj/machinery/status_display/evac/directional/west, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "vMU" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -87533,22 +87591,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"vRW" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "E.V.A. Storage" - }, -/obj/structure/cable, -/obj/effect/landmark/navigate_destination, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/all/command/eva, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) "vSk" = ( /obj/structure/table/wood, /obj/item/folder/red, @@ -87791,11 +87833,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"vUO" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "vUT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -88284,6 +88321,16 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/service/barber) +"wcs" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/virology) "wct" = ( /obj/item/stack/cable_coil, /obj/structure/lattice/catwalk, @@ -89559,13 +89606,6 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/escape) -"wrw" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/office) "wry" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, /obj/effect/decal/cleanable/dirt, @@ -90448,16 +90488,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"wCn" = ( -/obj/structure/rack, -/obj/item/storage/briefcase/secure, -/obj/machinery/status_display/ai/directional/south, -/obj/effect/turf_decal/bot, -/obj/item/reagent_containers/pill/patch/aiuri, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "wCp" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -91368,6 +91398,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"wOs" = ( +/obj/machinery/computer/message_monitor{ + dir = 4 + }, +/obj/item/paper/monitorkey, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/dim/directional/west, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) "wOw" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/pipe_scrubber, @@ -91433,6 +91473,27 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) +"wPy" = ( +/obj/item/storage/medkit/o2{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/regular, +/obj/item/storage/medkit/o2{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/table/reinforced, +/obj/machinery/door/window/left/directional/north{ + name = "Medkit Storage"; + req_access = list("medical") + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron, +/area/station/medical/storage) "wPA" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -91780,12 +91841,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/service/cafeteria) -"wUw" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/table/wood, -/obj/machinery/recharger, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "wUZ" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/siding/yellow{ @@ -92990,13 +93045,6 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/iron/grimy, /area/station/service/library/abandoned) -"xkU" = ( -/obj/effect/turf_decal/bot_white{ - color = "#435a88" - }, -/obj/structure/closet/crate/freezer/blood, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "xkW" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/north, @@ -93051,21 +93099,6 @@ /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/atmos) -"xlK" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Server Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/science/server) "xlM" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -93225,6 +93258,13 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"xnE" = ( +/obj/effect/turf_decal/bot_white{ + color = "#435a88" + }, +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "xnF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -93576,14 +93616,6 @@ }, /turf/open/floor/iron, /area/station/cargo/lobby) -"xst" = ( -/obj/machinery/light/directional/east, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/structure/table/wood, -/obj/item/storage/photo_album, -/obj/item/camera, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "xsG" = ( /obj/structure/lattice, /obj/structure/window/reinforced/spawner/directional/east, @@ -94161,6 +94193,14 @@ }, /turf/open/floor/iron, /area/station/command/gateway) +"xzv" = ( +/obj/item/exodrone, +/obj/machinery/exodrone_launcher, +/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/oil/slippery, +/obj/machinery/status_display/evac/directional/north, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "xzB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/half/contrasted, @@ -95156,18 +95196,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/transit_tube) -"xLy" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/structure/disposaloutlet{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/delivery, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron, -/area/station/cargo/sorting) "xLE" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/small/directional/west, @@ -95560,12 +95588,6 @@ }, /turf/open/floor/iron, /area/station/security/office) -"xSf" = ( -/obj/structure/bed, -/obj/item/bedsheet/clown, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/wood, -/area/station/hallway/secondary/service) "xSx" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -96063,16 +96085,6 @@ }, /turf/open/floor/iron, /area/station/commons/locker) -"xYP" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "xYW" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ @@ -96099,13 +96111,6 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/carpet/blue, /area/station/commons/vacant_room/office) -"xYZ" = ( -/obj/machinery/exodrone_launcher, -/obj/effect/turf_decal/box, -/obj/machinery/status_display/ai/directional/north, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/plating, -/area/station/cargo/drone_bay) "xZh" = ( /obj/structure/table/wood, /obj/item/paper{ @@ -96505,16 +96510,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay) -"yfN" = ( -/obj/machinery/computer/message_monitor{ - dir = 4 - }, -/obj/item/paper/monitorkey, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/dim/directional/west, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/tcommsat/computer) "yfO" = ( /obj/machinery/computer/records/security{ dir = 8 @@ -96795,6 +96790,11 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"yjd" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "yjn" = ( /obj/structure/extinguisher_cabinet/directional/north{ pixel_x = 6; @@ -117208,7 +117208,7 @@ xcR vxQ lzc plQ -dpN +ftF qUB qUB nCi @@ -118920,7 +118920,7 @@ qCA koB lzp fTC -bFs +kCq gAL tRh gQH @@ -119741,7 +119741,7 @@ tMl apu swR aHE -wCn +lCm gAw qje fbA @@ -125174,7 +125174,7 @@ xGk wsN sfW tNi -xlK +gDI bYV reK jDd @@ -127172,7 +127172,7 @@ oYs oYs oYs oYs -lGE +cZa ukj oYs mcs @@ -127427,7 +127427,7 @@ oqx xtp idQ bWW -xYP +caC xOI rQQ aMH @@ -128197,7 +128197,7 @@ sIE meJ hXw btc -hFP +eYf xAt eEI oTB @@ -131351,7 +131351,7 @@ aAj nQl vhs lbs -jfo +qVj nCK mzi qQM @@ -132605,7 +132605,7 @@ sGz pRS mcv qLS -vRW +mJj cxg wHU pFD @@ -133633,7 +133633,7 @@ hYb beG toI dEc -inF +fGx tSo dqc crY @@ -134419,7 +134419,7 @@ rcW sAv wYH lmL -iiU +qsA fZg eAq okD @@ -134435,8 +134435,8 @@ lNZ uun hst dQT -nYZ -iTK +cUN +rRm rEO vpC eEn @@ -134692,8 +134692,8 @@ mqw xoL ulp dQT -xkU -jew +xnE +aYk rEO lrK pMF @@ -134898,9 +134898,9 @@ rbF pma fnA eVl -kZu -cjl -yfN +oFc +akV +wOs yiC qUM jDi @@ -134949,8 +134949,8 @@ bRe mck hsm dQT -sqj -gJe +epT +iYT rEO ofY sKJ @@ -134973,7 +134973,7 @@ iAY lwZ hKO vJm -qid +wcs tgT vKI iFg @@ -135111,7 +135111,7 @@ aSO jfF tQh kVP -xSf +jor mqV kVP giz @@ -135155,7 +135155,7 @@ hdZ sTu ipQ eVl -amU +dxl vBA aPW aOd @@ -135206,8 +135206,8 @@ oQO pLA bzD dQT -qSG -hlO +nrx +oYM nGk wtz wmn @@ -135464,7 +135464,7 @@ qfi dQT dQT nGk -acn +oHI nGk bLt dXO @@ -135931,7 +135931,7 @@ cHe kql jHb fdM -pSh +aAa uPV ilI tcH @@ -135939,7 +135939,7 @@ voi agZ hup ktv -rMt +bbc auJ vgg vap @@ -136149,7 +136149,7 @@ daR dla itV rzw -fIR +fwv wnI pgF qAV @@ -136662,19 +136662,19 @@ qAV jKA sHC kaP -awL -tWw -kFO +gHG +dkx +lrl xiG qAV xSx xGC qAV -uRP +tlK mzb lkm -aIm -mRZ +fum +auH hoC vyN gMR @@ -136697,7 +136697,7 @@ hdZ oKX ipQ eVl -gPY +dHU gUW fnM hpv @@ -136927,7 +136927,7 @@ qAV ftD qAV qAV -enq +lrz kii hNr wOU @@ -136954,9 +136954,9 @@ oEf ccq dXN eVl -srV -uJj -mGD +ryS +jir +fnN rme xkw jDi @@ -137176,11 +137176,11 @@ qAV qAV xeH qAV -xYZ +rKa vGf rXE cAw -fcg +luy khn mhe rvK @@ -137268,7 +137268,7 @@ ppy wGs klr oNF -sCe +wPy pdl etk oRT @@ -137433,11 +137433,11 @@ pSJ gUa kYu jdL -bij -vwK -emf -nZx -gHI +sEQ +aIX +tjS +gHw +dus pKp wRp woK @@ -137468,9 +137468,9 @@ bog uLX gOU gOU -vMQ -rGX -iOY +iGn +fiY +qaP gOU fOw ilI @@ -137525,7 +137525,7 @@ urL eiB xQM oNF -kir +lDc pdl fOJ kuU @@ -137690,12 +137690,12 @@ kBN bvj nzx jdL -bij -eGM -cBS -vUO -jPU -uiK +sEQ +yjd +nVT +vKT +tjN +iNa tHg vVu iSf @@ -137947,11 +137947,11 @@ fqi wVQ uCt jdL -eeZ +xzv ieI rEA -byP -sQU +nRu +tKQ ozp bfy rvK @@ -137983,7 +137983,7 @@ neK gOU gsP hja -sjY +fBN aby qig nxG @@ -138562,7 +138562,7 @@ lvZ rtC uzT fPh -eOE +tbU dIJ yho lvZ @@ -138752,7 +138752,7 @@ drj bog nkU gOU -lJx +lJE aby lUK aby @@ -138966,7 +138966,7 @@ jdL jdL eVz jdL -mDP +krb szg brZ wqn @@ -138983,7 +138983,7 @@ eoy rly ePl eoy -wrw +rgv vwg wRf vKl @@ -139009,7 +139009,7 @@ drj bog iMg gOU -pmf +gXr kDL qxw aby @@ -139223,7 +139223,7 @@ iLF jdL dVA jdL -gJI +fml ttP iXj oXl @@ -139266,7 +139266,7 @@ xtg bpa uhH gOU -oqZ +dFE wvg mXr icS @@ -139480,7 +139480,7 @@ tpI jdL mWs jdL -lgc +npK dfk kYB ivG @@ -139497,20 +139497,20 @@ uQa xqM tTa lKl -nmU +eBr tfC bcD -haS +rhk xhW -eew +lrZ fZi sye sye fOB oMu -xLy +guG xhW -skZ +apM dvy lSl xms @@ -139523,11 +139523,11 @@ eVb jYX nBJ gOU -iRz +rlV vdS vdS aby -hXW +kzv ivA ixN lTx @@ -139745,7 +139745,7 @@ kRn kjl lDi lDi -rTB +hcF bqv hDZ bfT @@ -139781,10 +139781,10 @@ bog ksJ gOU prt -wUw -xst -lER -sjv +qja +sPg +fIl +sqO ivA hmA wbh @@ -140020,9 +140020,9 @@ uBZ pso nCY nCY -aeD +eov mlv -dkr +jiU mjH eUH dvy @@ -140530,10 +140530,10 @@ jqs oSv gLz xhW -axz +uJn fOz syW -ecX +mLt yfo qLp pcx @@ -140765,7 +140765,7 @@ sOk jdL poC jdL -kLI +nkv bhR rdJ oSv @@ -141044,13 +141044,13 @@ uSp oSv cFz rWo -gpD +bVb kLA qbd gHq lJw tYI -kUj +tbs hXg lDY tpZ @@ -141307,7 +141307,7 @@ bFA gHq pDz quh -tjo +suN hXg fmH tpZ @@ -141817,11 +141817,11 @@ pok rWo xdZ nMi -tJp +rew hXg -dsb +bXq sYn -gVv +kzZ hXg uoz tpZ @@ -142050,7 +142050,7 @@ oeX aNF wpT kic -isQ +kAS rnP wqs dIE @@ -142332,8 +142332,8 @@ krp llJ aFb sAL -occ -lDu +lDQ +rbG taO eCQ tpZ diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 18de3c2f00e..0dc4cf48020 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -57,6 +57,18 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"abx" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/machinery/light/cold/directional/west, +/obj/structure/railing/corner/end/flip{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "abz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -1162,13 +1174,6 @@ }, /turf/open/floor/iron, /area/station/command/bridge) -"aqH" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/plating/snowed/coldroom, -/area/station/service/kitchen/coldroom) "aqQ" = ( /obj/structure/table, /obj/item/stack/package_wrap, @@ -1284,10 +1289,14 @@ /obj/item/storage/crayons, /turf/open/floor/iron, /area/station/commons/dorms) -"asf" = ( -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/service/kitchen/coldroom) +"asd" = ( +/obj/machinery/greenscreen_camera{ + dir = 4; + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "asg" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance/two, @@ -1936,6 +1945,23 @@ /obj/effect/turf_decal/bot_red, /turf/open/floor/iron/dark, /area/station/engineering/atmos/project) +"azM" = ( +/obj/structure/table/wood/fancy/blue, +/obj/effect/spawner/random/aimodule/neutral, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/door/window/right/directional/west{ + name = "Core Modules"; + req_access = list("captain") + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/item/reagent_containers/applicator/pill/iron{ + pixel_x = 13; + pixel_y = -13 + }, +/turf/open/floor/circuit, +/area/station/ai_monitored/turret_protected/ai_upload) "azN" = ( /obj/structure/rack, /obj/item/tank/internals/emergency_oxygen{ @@ -2190,23 +2216,6 @@ /obj/effect/spawner/structure/window/hollow/reinforced/middle, /turf/open/floor/plating, /area/station/cargo/warehouse) -"aES" = ( -/obj/structure/table/wood/fancy/blue, -/obj/effect/spawner/random/aimodule/neutral, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/door/window/right/directional/west{ - name = "Core Modules"; - req_access = list("captain") - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/item/reagent_containers/pill/iron{ - pixel_x = 13; - pixel_y = -13 - }, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai_upload) "aEY" = ( /obj/structure/railing/corner, /turf/open/floor/iron/dark/textured, @@ -2277,6 +2286,22 @@ /obj/item/flashlight/lantern/on, /turf/open/misc/hay/icemoon, /area/icemoon/underground/explored) +"aGi" = ( +/obj/structure/sign/nanotrasen{ + pixel_x = 32 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/table/wood, +/obj/item/storage/photo_album{ + pixel_y = -1 + }, +/obj/item/camera{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "aGr" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/camera/directional/east{ @@ -2321,6 +2346,19 @@ /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron, /area/mine/laborcamp) +"aGZ" = ( +/obj/effect/turf_decal/siding/white, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/structure/closet/chefcloset, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/structure/window/spawner/directional/south, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/plating, +/area/station/service/kitchen/coldroom) "aHt" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, @@ -3415,12 +3453,6 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron, /area/station/command/bridge) -"aVI" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/tcommsat/computer) "aVL" = ( /turf/open/genturf/blue, /area/icemoon/underground/unexplored/rivers/deep) @@ -3449,11 +3481,6 @@ /obj/structure/chair/office/light, /turf/open/floor/iron/dark, /area/station/science/ordnance/office) -"aWj" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "aWk" = ( /obj/machinery/door/poddoor/shutters{ dir = 1; @@ -4047,24 +4074,6 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/wood, /area/station/service/library) -"bdT" = ( -/obj/structure/table/glass, -/obj/effect/spawner/random/entertainment/deck{ - pixel_x = -6 - }, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = 7; - pixel_y = 9 - }, -/obj/item/reagent_containers/condiment/peppermill{ - pixel_x = 7; - pixel_y = 5 - }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "bea" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating/icemoon, @@ -4326,15 +4335,6 @@ /obj/item/clothing/head/beanie/orange, /turf/open/floor/iron, /area/station/cargo/storage) -"biu" = ( -/obj/machinery/door/window/right/directional/south{ - name = "The Ice Box"; - req_access = list("kitchen") - }, -/obj/effect/turf_decal/siding/white, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "biE" = ( /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt/dust, @@ -5133,21 +5133,6 @@ /obj/effect/mapping_helpers/airlock/access/all/science/robotics, /turf/open/floor/iron/white, /area/station/science/robotics/lab) -"bsN" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/mutadone{ - pixel_x = 11; - pixel_y = 7 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 2 - }, -/obj/item/flesh_shears{ - pixel_y = 5; - pixel_x = -10 - }, -/turf/open/floor/iron/dark, -/area/station/science/genetics) "bsO" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate, @@ -5199,17 +5184,6 @@ dir = 4 }, /area/station/hallway/secondary/entry) -"btq" = ( -/obj/structure/cable, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/binary/pump/on/general/hidden{ - dir = 8 - }, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "bts" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -7994,15 +7968,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/service/chapel/office) -"ceQ" = ( -/obj/structure/cable, -/obj/structure/minecart_rail/railbreak, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating/snowed/coldroom, -/area/station/service/kitchen/coldroom) "ceS" = ( /obj/machinery/mech_bay_recharge_port{ dir = 1 @@ -8317,6 +8282,12 @@ /obj/structure/sign/warning/cold_temp/directional/north, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) +"cje" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) "cjI" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -8581,18 +8552,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth, /area/station/security/lockers) -"cnp" = ( -/obj/structure/minecart_rail{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/weather/snow/corner{ - dir = 1 - }, -/obj/machinery/light/small/red/directional/north, -/obj/structure/sign/warning/directional/north, -/turf/open/floor/plating/snowed/coldroom, -/area/icemoon/underground/explored) "cnq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, @@ -8623,6 +8582,17 @@ }, /turf/open/floor/iron, /area/station/cargo/office) +"coc" = ( +/obj/machinery/door/window/left/directional/south{ + name = "The Ice Box"; + req_access = list("kitchen") + }, +/obj/effect/turf_decal/siding/white, +/obj/machinery/atmospherics/components/binary/valve/on{ + dir = 4 + }, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "cod" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -8683,13 +8653,6 @@ /obj/machinery/light/small/directional/east, /turf/open/openspace, /area/station/service/chapel) -"cpr" = ( -/obj/structure/sign/poster/greenscreen/directional/east, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "cps" = ( /obj/structure/table/wood/poker, /obj/item/storage/wallet/random, @@ -8881,6 +8844,15 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"cst" = ( +/obj/structure/cable, +/obj/structure/minecart_rail/railbreak, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating/snowed/coldroom, +/area/station/service/kitchen/coldroom) "csu" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 @@ -10329,6 +10301,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/station/service/lawoffice) +"cNy" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/service/kitchen/coldroom) "cNI" = ( /obj/machinery/door/poddoor/preopen{ id = "xenobio7"; @@ -10522,6 +10499,19 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal) +"cQo" = ( +/obj/machinery/door/airlock/freezer{ + desc = "The freezer where the chef keeps all the stuff that needs to be kept cold. Ice cold."; + name = "The Ice Box" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/structure/cable, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/plating, +/area/station/service/kitchen/coldroom) "cQs" = ( /obj/structure/table, /obj/item/computer_disk{ @@ -10932,14 +10922,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/central) -"cYm" = ( -/obj/machinery/greenscreen_camera{ - dir = 4; - pixel_x = -4; - pixel_y = 6 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "cYo" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/stripes/line{ @@ -11551,6 +11533,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/closed/wall/r_wall, /area/station/engineering/supermatter) +"dfr" = ( +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/service/kitchen/coldroom) "dfw" = ( /obj/structure/reagent_dispensers/wall/peppertank/directional/west, /obj/machinery/airalarm/directional/north, @@ -12290,6 +12276,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/mine/laborcamp) +"dqz" = ( +/obj/structure/cable, +/obj/structure/minecart_rail{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/light/cold/directional/west, +/turf/open/floor/plating/snowed/coldroom, +/area/station/service/kitchen/coldroom) "dqI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -12491,6 +12491,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"dsI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "dsR" = ( /obj/machinery/conveyor/inverted{ dir = 10; @@ -12535,6 +12542,26 @@ /obj/effect/turf_decal/tile/green/anticorner/contrasted, /turf/open/floor/iron, /area/station/command/bridge) +"dtx" = ( +/obj/structure/table/glass, +/obj/item/storage/medkit/fire{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/fire, +/obj/item/storage/medkit/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/door/window/left/directional/east{ + name = "First-Aid Supplies"; + req_access = list("medical") + }, +/obj/effect/turf_decal/tile/blue/full, +/obj/machinery/light/cold/directional/west, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark/smooth_large, +/area/station/medical/storage) "dty" = ( /obj/structure/table, /obj/effect/spawner/random/food_or_drink/donkpockets, @@ -13214,19 +13241,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/wood, /area/station/security/courtroom) -"dEx" = ( -/obj/structure/cable, -/obj/effect/turf_decal/weather/snow/corner{ - dir = 4 - }, -/obj/structure/minecart_rail{ - dir = 1 - }, -/obj/effect/turf_decal/weather/snow/corner{ - dir = 8 - }, -/turf/open/floor/plating/snowed/coldroom, -/area/station/service/kitchen/coldroom) "dEz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -13311,6 +13325,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"dFr" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "detShutter"; + name = "Privacy Shutters" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/detectives_office) "dFt" = ( /turf/closed/wall, /area/station/hallway/secondary/exit/departure_lounge) @@ -13681,15 +13705,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"dLA" = ( -/obj/structure/rack, -/obj/item/pickaxe, -/obj/item/toy/figure/chef, -/obj/structure/sign/warning/cold_temp/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/open/floor/plating, -/area/station/service/kitchen/coldroom) "dLL" = ( /obj/structure/sign/warning/secure_area/directional/north, /turf/open/floor/plating, @@ -13716,6 +13731,13 @@ /obj/effect/spawner/random/food_or_drink/donkpockets, /turf/open/floor/iron, /area/mine/laborcamp) +"dMf" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/displaycase/captain, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "dMi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -14406,14 +14428,6 @@ "dXp" = ( /turf/open/floor/iron/dark/smooth_half, /area/station/service/hydroponics) -"dXr" = ( -/obj/structure/minecart_rail{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/weather/snow/corner, -/turf/open/floor/plating/snowed/coldroom, -/area/icemoon/underground/explored) "dXv" = ( /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -14844,10 +14858,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"ees" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/service/kitchen/coldroom) "eeD" = ( /obj/machinery/light/directional/west, /turf/open/floor/iron/dark/textured, @@ -15842,6 +15852,20 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"etb" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "EVA Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark_blue, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark/textured, +/area/station/ai_monitored/command/storage/eva) "ete" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/siding/wood{ @@ -16192,11 +16216,6 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, /area/station/maintenance/fore) -"eyP" = ( -/obj/structure/kitchenspike, -/obj/effect/turf_decal/weather/snow/corner, -/turf/open/misc/ice/coldroom, -/area/station/service/kitchen/coldroom) "eyR" = ( /obj/machinery/processor/slime, /obj/structure/window/reinforced/spawner/directional/south, @@ -17493,6 +17512,15 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/fore) +"eTX" = ( +/obj/structure/rack, +/obj/item/pickaxe, +/obj/item/toy/figure/chef, +/obj/structure/sign/warning/cold_temp/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/plating, +/area/station/service/kitchen/coldroom) "eTY" = ( /obj/machinery/recharge_station, /obj/effect/turf_decal/stripes/box, @@ -17813,25 +17841,6 @@ /obj/structure/sign/flag/ssc/directional/north, /turf/open/floor/iron, /area/station/commons/fitness) -"eXD" = ( -/obj/structure/minecart_rail{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "minecraft_shutter"; - name = "Cart Shutters" - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/textured, -/area/station/service/hydroponics) "eXH" = ( /turf/closed/wall/r_wall, /area/station/medical/chemistry) @@ -18616,13 +18625,6 @@ /obj/machinery/ntnet_relay, /turf/open/floor/circuit/telecomms/mainframe, /area/station/tcommsat/server) -"fja" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/floor/plating/snowed/coldroom, -/area/station/service/kitchen/coldroom) "fjg" = ( /obj/machinery/shower/directional/west, /obj/effect/turf_decal/trimline/blue, @@ -20609,6 +20611,10 @@ }, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/underground/explored) +"fOM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "fOR" = ( /obj/structure/disposalpipe/trunk, /obj/machinery/airalarm/directional/east, @@ -22465,17 +22471,6 @@ }, /turf/open/floor/iron/white/side, /area/mine/living_quarters) -"gpt" = ( -/obj/machinery/button/door/directional/east{ - id = "kanyewest"; - name = "Privacy Shutters" - }, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) "gpB" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -22850,26 +22845,6 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/iron/dark, /area/station/service/chapel) -"gvX" = ( -/obj/structure/table/glass, -/obj/item/storage/medkit/fire{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/fire, -/obj/item/storage/medkit/regular{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/machinery/door/window/left/directional/east{ - name = "First-Aid Supplies"; - req_access = list("medical") - }, -/obj/effect/turf_decal/tile/blue/full, -/obj/machinery/light/cold/directional/west, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark/smooth_large, -/area/station/medical/storage) "gwl" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/turf_decal/tile/red{ @@ -23406,6 +23381,19 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/fore) +"gDC" = ( +/obj/structure/cable, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/structure/minecart_rail{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/open/floor/plating/snowed/coldroom, +/area/station/service/kitchen/coldroom) "gDE" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -23597,6 +23585,11 @@ }, /turf/open/floor/iron/dark, /area/station/medical/storage) +"gGX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "gGZ" = ( /obj/machinery/computer/bank_machine, /obj/effect/turf_decal/bot_white, @@ -23747,6 +23740,13 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/atmos/storage) +"gJx" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/plating/snowed/coldroom, +/area/station/service/kitchen/coldroom) "gJz" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -24375,23 +24375,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"gTr" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/poddoor/shutters{ - dir = 1; - id = "minecraft_shutter"; - name = "Cart Shutters" - }, -/obj/structure/minecart_rail{ - dir = 1 - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/textured, -/area/station/service/kitchen/coldroom) "gTw" = ( /obj/structure/railing{ dir = 8 @@ -24583,18 +24566,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"gWi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/machinery/door/airlock/freezer{ - desc = "The freezer where the chef keeps all the stuff that needs to be kept cold. Ice cold."; - name = "The Ice Box" - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/plating, -/area/station/service/kitchen/coldroom) "gWn" = ( /obj/machinery/atmospherics/components/trinary/filter/flipped{ dir = 4; @@ -24788,6 +24759,11 @@ /obj/structure/lattice/catwalk, /turf/open/openspace, /area/station/service/kitchen/coldroom) +"gYW" = ( +/obj/structure/chair/stool/directional/west, +/obj/effect/spawner/random/trash/cigbutt, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "gZb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply, @@ -25444,6 +25420,15 @@ /obj/machinery/barsign/directional/north, /turf/open/floor/wood/large, /area/station/hallway/primary/starboard) +"hkE" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/machinery/door/airlock/maintenance{ + name = "Kitchen Maintenance" + }, +/turf/open/floor/plating, +/area/station/service/kitchen/coldroom) "hkI" = ( /obj/machinery/light/small/directional/west, /obj/structure/table, @@ -26468,16 +26453,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/brig/entrance) -"hAj" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/obj/effect/turf_decal/weather/snow/corner, -/turf/open/floor/plating/snowed/coldroom, -/area/station/service/kitchen/coldroom) "hAl" = ( /obj/machinery/door/firedoor{ dir = 8 @@ -26789,11 +26764,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/iron/dark, /area/mine/eva) -"hEv" = ( -/obj/structure/chair/stool/directional/west, -/obj/effect/spawner/random/trash/cigbutt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "hED" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -27001,13 +26971,6 @@ }, /turf/open/floor/iron/dark/smooth_half, /area/station/medical/morgue) -"hHD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/item/wallframe/camera, -/turf/open/floor/plating, -/area/station/construction) "hHG" = ( /turf/open/cliff/snowrock, /area/icemoon/surface/outdoors/nospawn) @@ -28142,6 +28105,29 @@ /obj/effect/landmark/navigate_destination/disposals, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"hYs" = ( +/obj/structure/rack, +/obj/item/lighter, +/obj/item/clothing/glasses/meson{ + pixel_y = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/computer_disk/engineering{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/computer_disk/engineering{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/computer_disk/engineering{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/reagent_containers/applicator/patch/aiuri, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "hYy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -29590,6 +29576,10 @@ }, /turf/open/floor/iron/dark, /area/mine/eva) +"ith" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "itj" = ( /turf/open/floor/iron/white, /area/station/science/genetics) @@ -29775,15 +29765,6 @@ }, /turf/open/floor/wood, /area/station/service/library) -"iwd" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/obj/structure/bed/dogbed/renault, -/mob/living/basic/pet/fox/renault, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "iwf" = ( /turf/closed/wall/r_wall, /area/mine/mechbay) @@ -30071,15 +30052,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/white, /area/station/maintenance/port/fore) -"iBi" = ( -/obj/structure/table, -/obj/item/food/grown/carrot, -/obj/item/food/grown/carrot{ - pixel_x = -2; - pixel_y = 4 - }, -/turf/open/floor/plating/snowed/coldroom, -/area/station/service/kitchen/coldroom) "iBl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -30528,19 +30500,6 @@ }, /turf/open/floor/carpet/lone, /area/station/service/chapel) -"iKd" = ( -/obj/effect/turf_decal/siding/white, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/structure/closet/chefcloset, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/structure/window/spawner/directional/south, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/plating, -/area/station/service/kitchen/coldroom) "iKh" = ( /obj/machinery/incident_display/delam/directional/north, /turf/open/floor/iron/dark, @@ -30860,6 +30819,14 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"iOO" = ( +/obj/structure/table, +/obj/item/stack/sheet/mineral/coal{ + pixel_x = 6; + pixel_y = 3 + }, +/turf/open/floor/plating/snowed/coldroom, +/area/station/service/kitchen/coldroom) "iOS" = ( /obj/machinery/airalarm/directional/east, /obj/structure/table, @@ -31201,26 +31168,6 @@ /obj/structure/sign/warning/docking/directional/north, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) -"iTJ" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/pen{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/folder/white{ - pixel_x = 2 - }, -/obj/machinery/firealarm/directional/south, -/obj/item/radio/headset/headset_medsci{ - pixel_x = 16; - pixel_y = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/genetics) "iTP" = ( /obj/item/reagent_containers/cup/bucket, /obj/effect/turf_decal/trimline/green/filled/line, @@ -33412,11 +33359,6 @@ /obj/machinery/computer/security/telescreen/prison/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/security/warden) -"jBB" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction, -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/service/kitchen/coldroom) "jBR" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater{ dir = 8 @@ -34730,22 +34672,6 @@ dir = 1 }, /area/station/engineering/atmos) -"jTZ" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Server Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/science/server) -"jUb" = ( -/obj/structure/table, -/obj/item/stack/sheet/mineral/coal{ - pixel_x = 6; - pixel_y = 3 - }, -/turf/open/floor/plating/snowed/coldroom, -/area/station/service/kitchen/coldroom) "jUi" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -36470,6 +36396,20 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness) +"ksm" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/door/window/right/directional/south{ + name = "First-Aid Supplies"; + req_access = list("medical") + }, +/obj/structure/table/glass, +/obj/item/mod/module/plasma_stabilizer, +/obj/item/mod/module/thermal_regulator, +/obj/effect/turf_decal/tile/blue/full, +/obj/item/mod/module/signlang_radio, +/turf/open/floor/iron/dark/smooth_large, +/area/station/medical/storage) "ksn" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/brown/half/contrasted{ @@ -36855,26 +36795,6 @@ /obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"kyY" = ( -/obj/structure/table/glass, -/obj/item/storage/medkit/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/toxin, -/obj/item/storage/medkit/regular{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/door/window/right/directional/north{ - name = "First-Aid Supplies"; - req_access = list("medical") - }, -/obj/effect/turf_decal/tile/blue/full, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark/smooth_large, -/area/station/medical/storage) "kzv" = ( /obj/structure/bed, /obj/effect/spawner/random/bedsheet/any, @@ -37344,6 +37264,15 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/hop) +"kFX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/airalarm/directional/east, +/obj/structure/bed/dogbed/renault, +/mob/living/basic/pet/fox/renault, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "kGc" = ( /obj/structure/table/wood, /obj/structure/cable, @@ -37418,6 +37347,16 @@ /obj/item/stamp/head/qm, /turf/open/floor/carpet, /area/station/command/heads_quarters/qm) +"kGS" = ( +/obj/effect/turf_decal/siding/white{ + dir = 5 + }, +/obj/effect/turf_decal/siding/white, +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/obj/structure/window/spawner/directional/south, +/turf/open/floor/plating, +/area/station/service/kitchen/coldroom) "kHb" = ( /obj/structure/closet/secure_closet/personal{ anchored = 1 @@ -37494,6 +37433,18 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/service) +"kIf" = ( +/obj/structure/minecart_rail{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/machinery/light/small/red/directional/north, +/obj/structure/sign/warning/directional/north, +/turf/open/floor/plating/snowed/coldroom, +/area/icemoon/underground/explored) "kIh" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -38289,18 +38240,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/pink, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"kUo" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/light/cold/directional/west, -/obj/structure/railing/corner/end/flip{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "kUt" = ( /obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, /obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4, @@ -40188,6 +40127,26 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) +"lvh" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/pen{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/folder/white{ + pixel_x = 2 + }, +/obj/machinery/firealarm/directional/south, +/obj/item/radio/headset/headset_medsci{ + pixel_x = 16; + pixel_y = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/genetics) "lvk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40243,6 +40202,23 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"lvJ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id = "minecraft_shutter"; + name = "Cart Shutters" + }, +/obj/structure/minecart_rail{ + dir = 1 + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/textured, +/area/station/service/kitchen/coldroom) "lvQ" = ( /obj/machinery/light/small/directional/east, /obj/effect/decal/cleanable/dirt, @@ -40710,6 +40686,17 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"lCm" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 1 + }, +/obj/effect/mapping_helpers/mail_sorting/service/hydroponics, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/trash/cigbutt, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "lCn" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -41497,17 +41484,6 @@ /obj/structure/falsewall, /turf/open/floor/plating, /area/station/medical/morgue) -"lOA" = ( -/obj/structure/minecart_rail{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/obj/item/radio/intercom/directional/north, -/obj/machinery/status_display/evac/directional/west, -/turf/open/floor/plating/snowed/coldroom, -/area/station/service/kitchen/coldroom) "lOI" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer1{ dir = 5 @@ -41750,6 +41726,14 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"lRi" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Server Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/science/server) "lRj" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -41898,6 +41882,17 @@ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored/graveyard) +"lTn" = ( +/obj/machinery/button/door/directional/east{ + id = "detShutter"; + name = "Privacy Shutters" + }, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/grimy, +/area/station/security/detectives_office) "lTC" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -42575,6 +42570,11 @@ }, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"meN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "meT" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -43398,29 +43398,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) -"mta" = ( -/obj/structure/rack, -/obj/item/lighter, -/obj/item/clothing/glasses/meson{ - pixel_y = 4 - }, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/computer_disk/engineering{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/computer_disk/engineering{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/computer_disk/engineering{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/reagent_containers/pill/patch/aiuri, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "mtn" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -43565,20 +43542,6 @@ "mvv" = ( /turf/open/floor/wood, /area/station/security/courtroom) -"mvw" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "EVA Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/eva, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/siding/dark_blue, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark/textured, -/area/station/ai_monitored/command/storage/eva) "mvG" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 8 @@ -44672,6 +44635,24 @@ }, /turf/open/floor/iron/cafeteria, /area/station/security/prison/work) +"mMa" = ( +/obj/structure/table/glass, +/obj/effect/spawner/random/entertainment/deck{ + pixel_x = -6 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = 7; + pixel_y = 9 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "mMb" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -44912,12 +44893,6 @@ dir = 4 }, /area/station/command/gateway) -"mQk" = ( -/obj/effect/turf_decal/weather/snow/corner{ - dir = 10 - }, -/turf/open/floor/plating/snowed/coldroom, -/area/station/service/kitchen/coldroom) "mQq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -45298,6 +45273,18 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"mXV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/machinery/door/airlock/freezer{ + desc = "The freezer where the chef keeps all the stuff that needs to be kept cold. Ice cold."; + name = "The Ice Box" + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/plating, +/area/station/service/kitchen/coldroom) "mYh" = ( /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) @@ -45377,6 +45364,16 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) +"mYQ" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Kill Chamber"; + normalspeed = 0 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/freezer, +/area/station/science/xenobiology) "mYR" = ( /obj/machinery/fishing_portal_generator, /turf/open/floor/wood, @@ -45470,6 +45467,12 @@ /obj/item/storage/box/matches, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) +"mZX" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/mapping_helpers/airalarm/tlv_cold_room, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "nae" = ( /obj/machinery/door/poddoor/preopen{ id = "maint1" @@ -45940,10 +45943,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"nfL" = ( -/obj/machinery/holopad/secure, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "nfS" = ( /obj/machinery/door/morgue{ dir = 4; @@ -47987,6 +47986,11 @@ }, /turf/open/floor/iron, /area/station/engineering/main) +"nHi" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/obj/structure/kitchenspike, +/turf/open/misc/asteroid/snow/coldroom, +/area/station/service/kitchen/coldroom) "nHj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -48183,13 +48187,6 @@ /obj/item/flashlight/lamp, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"nKT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/displaycase/captain, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "nKV" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/siding/white{ @@ -48732,17 +48729,6 @@ /obj/machinery/light/floor, /turf/open/floor/iron, /area/station/security/brig/upper) -"nRn" = ( -/obj/machinery/door/window/left/directional/south{ - name = "The Ice Box"; - req_access = list("kitchen") - }, -/obj/effect/turf_decal/siding/white, -/obj/machinery/atmospherics/components/binary/valve/on{ - dir = 4 - }, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "nRq" = ( /obj/structure/closet/crate, /obj/effect/spawner/random/bureaucracy/birthday_wrap, @@ -48769,13 +48755,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/lesser) -"nRE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "nRV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/extinguisher_cabinet/directional/south, @@ -49024,19 +49003,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/white, /area/station/science/robotics/lab) -"nVJ" = ( -/obj/machinery/door/airlock/freezer{ - desc = "The freezer where the chef keeps all the stuff that needs to be kept cold. Ice cold."; - name = "The Ice Box" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/structure/cable, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/plating, -/area/station/service/kitchen/coldroom) "nVR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/cafeteria{ @@ -50395,6 +50361,21 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/office) +"opD" = ( +/obj/structure/table, +/obj/item/storage/pill_bottle/mutadone{ + pixel_x = 11; + pixel_y = 7 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = 2 + }, +/obj/item/flesh_shears{ + pixel_y = 5; + pixel_x = -10 + }, +/turf/open/floor/iron/dark, +/area/station/science/genetics) "opE" = ( /obj/structure/railing{ dir = 1 @@ -50469,15 +50450,6 @@ /obj/effect/landmark/start/station_engineer, /turf/open/floor/iron, /area/station/engineering/main) -"oqE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/machinery/door/airlock/maintenance{ - name = "Kitchen Maintenance" - }, -/turf/open/floor/plating, -/area/station/service/kitchen/coldroom) "oqJ" = ( /obj/structure/sign/warning/docking/directional/north, /obj/structure/flora/grass/green/style_random, @@ -51987,6 +51959,16 @@ /obj/effect/spawner/random/maintenance/four, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"oJj" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/trash/cigbutt, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "oJk" = ( /obj/structure/railing/corner, /obj/effect/turf_decal/tile/brown, @@ -52360,16 +52342,6 @@ /obj/machinery/igniter/incinerator_ordmix, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) -"oPC" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/trash/cigbutt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "oPI" = ( /turf/open/floor/circuit, /area/station/ai_monitored/command/nuke_storage) @@ -52861,16 +52833,6 @@ "oXq" = ( /turf/open/floor/iron/white, /area/station/medical/cryo) -"oXr" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Kill Chamber"; - normalspeed = 0 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/freezer, -/area/station/science/xenobiology) "oXx" = ( /obj/machinery/mass_driver/trash{ dir = 1 @@ -52991,6 +52953,13 @@ }, /turf/open/floor/iron, /area/station/science/explab) +"oZw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/item/wallframe/camera, +/turf/open/floor/plating, +/area/station/construction) "oZz" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -53951,18 +53920,6 @@ }, /turf/open/floor/iron, /area/station/service/kitchen/coldroom) -"pnw" = ( -/obj/structure/cable, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "pnA" = ( /obj/machinery/airalarm/directional/north, /obj/structure/rack, @@ -54242,16 +54199,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/xenobiology) -"prX" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/obj/machinery/light/cold/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/plating/snowed/coldroom, -/area/station/service/kitchen/coldroom) "psb" = ( /turf/closed/wall/ice, /area/icemoon/underground/explored) @@ -54968,17 +54915,6 @@ /obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet) -"pBv" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 1 - }, -/obj/effect/mapping_helpers/mail_sorting/service/hydroponics, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/trash/cigbutt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "pBA" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -56094,6 +56030,13 @@ /obj/structure/sign/warning/cold_temp/directional/north, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) +"pSR" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "pTd" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -56334,12 +56277,6 @@ }, /turf/open/genturf, /area/icemoon/surface/outdoors/unexplored/rivers/no_monsters) -"pWE" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "pWJ" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 @@ -58452,6 +58389,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"qCg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/floor/plating/snowed/coldroom, +/area/station/service/kitchen/coldroom) "qCl" = ( /obj/effect/spawner/random/trash/mess, /obj/structure/disposalpipe/segment{ @@ -59379,10 +59326,6 @@ "qOl" = ( /turf/open/floor/wood, /area/station/maintenance/port/aft) -"qOo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "qOu" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -59882,6 +59825,15 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/grimy, /area/station/service/bar/backroom) +"qUJ" = ( +/obj/structure/table, +/obj/item/food/grown/carrot, +/obj/item/food/grown/carrot{ + pixel_x = -2; + pixel_y = 4 + }, +/turf/open/floor/plating/snowed/coldroom, +/area/station/service/kitchen/coldroom) "qUL" = ( /obj/structure/closet/emcloset, /obj/effect/spawner/random/maintenance/two, @@ -60454,6 +60406,14 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/hallway/primary/central) +"rcG" = ( +/obj/structure/minecart_rail{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/floor/plating/snowed/coldroom, +/area/icemoon/underground/explored) "rcP" = ( /obj/effect/turf_decal/bot_white/right, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -61793,13 +61753,6 @@ /obj/item/clothing/suit/apron/chef, /turf/open/floor/plating, /area/station/maintenance/department/medical/morgue) -"rwN" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "rwR" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/status_display/evac/directional/west, @@ -62119,6 +62072,18 @@ "rBV" = ( /turf/closed/wall, /area/station/tcommsat/computer) +"rCc" = ( +/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "rCe" = ( /obj/structure/toilet{ dir = 4 @@ -62508,11 +62473,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"rGI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "rGY" = ( /obj/machinery/airalarm/directional/east, /obj/structure/table, @@ -62924,11 +62884,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/service/kitchen/coldroom) -"rOx" = ( -/obj/structure/flora/rock/pile/icy/style_random, -/obj/structure/kitchenspike, -/turf/open/misc/asteroid/snow/coldroom, -/area/station/service/kitchen/coldroom) "rOA" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -63154,20 +63109,6 @@ /obj/structure/railing, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"rRT" = ( -/obj/structure/cable, -/obj/structure/minecart_rail{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/plating/snowed/coldroom, -/area/station/service/kitchen/coldroom) "rSe" = ( /obj/structure/rack, /obj/effect/spawner/random/clothing/costume, @@ -63237,6 +63178,10 @@ "rTz" = ( /turf/open/floor/plating/icemoon, /area/station/science/ordnance/bomb/planet) +"rTA" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/service/kitchen/coldroom) "rTM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -65232,6 +65177,25 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron, /area/station/command/heads_quarters/hop) +"suP" = ( +/obj/structure/minecart_rail{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "minecraft_shutter"; + name = "Cart Shutters" + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/textured, +/area/station/service/hydroponics) "suR" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -65370,6 +65334,16 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) +"sww" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/door/airlock/command/glass{ + name = "Emergency EVA Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/textured, +/area/station/hallway/secondary/exit/departure_lounge) "swx" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/portable_atmospherics/canister, @@ -66141,6 +66115,11 @@ /obj/structure/grille/broken, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) +"sGN" = ( +/obj/structure/kitchenspike, +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/misc/ice/coldroom, +/area/station/service/kitchen/coldroom) "sGT" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/engine/vacuum, @@ -67577,15 +67556,6 @@ }, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) -"tec" = ( -/obj/structure/cable, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "tei" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/carpet/red, @@ -67768,6 +67738,12 @@ /mob/living/simple_animal/bot/secbot/beepsky/armsky, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/security/armory) +"tgU" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/open/floor/plating/snowed/coldroom, +/area/station/service/kitchen/coldroom) "thA" = ( /turf/open/genturf/blue, /area/icemoon/underground/unexplored/rivers/deep/shoreline) @@ -68388,22 +68364,6 @@ "tpH" = ( /turf/closed/wall, /area/station/security/execution/education) -"tpN" = ( -/obj/structure/sign/nanotrasen{ - pixel_x = 32 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/storage/photo_album{ - pixel_y = -1 - }, -/obj/item/camera{ - pixel_x = -4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain) "tpO" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -68949,11 +68909,6 @@ /obj/structure/chair/office, /turf/open/floor/wood, /area/station/service/library) -"tyA" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "tyK" = ( /obj/item/mop, /obj/item/reagent_containers/cup/bucket, @@ -69160,6 +69115,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/atmos/mix) +"tCK" = ( +/obj/structure/sign/poster/greenscreen/directional/east, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain) "tCL" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -69263,6 +69225,17 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/aft/greater) +"tEf" = ( +/obj/structure/minecart_rail{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/item/radio/intercom/directional/north, +/obj/machinery/status_display/evac/directional/west, +/turf/open/floor/plating/snowed/coldroom, +/area/station/service/kitchen/coldroom) "tEi" = ( /obj/structure/sink/directional/south, /turf/open/floor/iron, @@ -70482,12 +70455,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"tVF" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "tWc" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/spawner/random/trash/soap, @@ -71069,6 +71036,10 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) +"ueZ" = ( +/obj/machinery/holopad/secure, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "ufb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/sign/warning/secure_area/directional/north, @@ -71078,6 +71049,17 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"ufl" = ( +/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/binary/pump/on/general/hidden{ + dir = 8 + }, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "ufm" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -71145,16 +71127,6 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron, /area/station/maintenance/department/electrical) -"ugO" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/door/airlock/command/glass{ - name = "Emergency EVA Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/eva, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/textured, -/area/station/hallway/secondary/exit/departure_lounge) "ugP" = ( /obj/effect/turf_decal/siding/red{ dir = 4 @@ -72718,6 +72690,13 @@ /obj/structure/grille, /turf/open/floor/plating, /area/station/maintenance/department/chapel) +"uDu" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/floor/plating/snowed/coldroom, +/area/station/service/kitchen/coldroom) "uDv" = ( /obj/effect/turf_decal/siding/white{ dir = 8 @@ -73171,10 +73150,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron, /area/station/commons/dorms) -"uKS" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "uKW" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -74217,16 +74192,6 @@ /obj/effect/turf_decal/siding/blue, /turf/open/floor/iron/cafeteria, /area/station/security/prison/work) -"vcD" = ( -/obj/effect/turf_decal/siding/white{ - dir = 5 - }, -/obj/effect/turf_decal/siding/white, -/obj/structure/closet/emcloset, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/plating, -/area/station/service/kitchen/coldroom) "vcO" = ( /obj/machinery/vending/wardrobe/chap_wardrobe, /turf/open/floor/iron/dark, @@ -75038,6 +75003,15 @@ /obj/structure/cable, /turf/open/floor/iron/recharge_floor, /area/station/security/mechbay) +"vpv" = ( +/obj/machinery/door/window/right/directional/south{ + name = "The Ice Box"; + req_access = list("kitchen") + }, +/obj/effect/turf_decal/siding/white, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "vpx" = ( /obj/structure/sign/departments/evac/directional/north, /turf/open/floor/iron, @@ -75632,6 +75606,26 @@ /obj/structure/sign/warning/cold_temp/directional/north, /turf/open/floor/iron/smooth, /area/mine/eva/lower) +"vxH" = ( +/obj/structure/table/glass, +/obj/item/storage/medkit/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/toxin, +/obj/item/storage/medkit/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/door/window/right/directional/north{ + name = "First-Aid Supplies"; + req_access = list("medical") + }, +/obj/effect/turf_decal/tile/blue/full, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark/smooth_large, +/area/station/medical/storage) "vxO" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/siding/wood, @@ -78965,6 +78959,16 @@ /obj/machinery/griddle, /turf/open/floor/iron/white/smooth_large, /area/station/service/kitchen) +"wAK" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/obj/machinery/light/cold/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating/snowed/coldroom, +/area/station/service/kitchen/coldroom) "wAQ" = ( /obj/machinery/computer/shuttle/labor/one_way{ dir = 4 @@ -79466,6 +79470,11 @@ }, /turf/open/floor/iron, /area/mine/laborcamp/security) +"wHQ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "wHX" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -82444,16 +82453,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) -"xyd" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "rd_office_shutters"; - name = "Privacy Shutters" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/detectives_office) "xyn" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -83478,20 +83477,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/security/prison/work) -"xLW" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/door/window/right/directional/south{ - name = "First-Aid Supplies"; - req_access = list("medical") - }, -/obj/structure/table/glass, -/obj/item/mod/module/plasma_stabilizer, -/obj/item/mod/module/thermal_regulator, -/obj/effect/turf_decal/tile/blue/full, -/obj/item/mod/module/signlang_radio, -/turf/open/floor/iron/dark/smooth_large, -/area/station/medical/storage) "xMh" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, @@ -83569,6 +83554,15 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/grimy, /area/station/service/theater) +"xNA" = ( +/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "xNC" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -84663,6 +84657,12 @@ }, /turf/open/floor/iron, /area/station/command/bridge) +"ydn" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "ydt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -173868,7 +173868,7 @@ ucN hFW nfj hzJ -gpt +lTn ucN iDt iDt @@ -174123,7 +174123,7 @@ wUj wMt ucN ucN -xyd +dFr irp ucN ucN @@ -185721,7 +185721,7 @@ shF qPV wZW exw -eXD +suP exw psb psb @@ -188284,7 +188284,7 @@ jre jre oXE pfE -pBv +lCm moX oXE xEV @@ -188540,16 +188540,16 @@ fCA fCA ehh jPL -oPC -hEv -nRE +oJj +gYW +dsI jre jre jre jre dom dom -cnp +kIf psb psb qZZ @@ -188799,14 +188799,14 @@ isq jMr jre jre -nVJ +cQo jre -eyP +sGN rtw -rOx +nHi fwB dom -dXr +rcG psb lTl uKc @@ -189055,14 +189055,14 @@ jre jre jre jre -lOA -ceQ -rRT +tEf +cst +dqz yfs sTl sTl -dEx -gTr +gDC +lvJ jgC psb qZZ @@ -189308,13 +189308,13 @@ nNe tgj mnA jre -tVF -kUo -iKd -ees +mZX +abx +aGZ +rTA anW sdF -hAj +qCg fwB fwB fwB @@ -189566,13 +189566,13 @@ qhb oXE jre sRz -tec -vcD -jBB +xNA +kGS +cNy jDF -jUb +iOO rcR -mQk +tgU fwB nNg fwB @@ -189823,11 +189823,11 @@ jMO oXE jre tAT -btq -nRn -asf +ufl +coc +dfr anW -iBi +qUJ rcR mbM oje @@ -190079,13 +190079,13 @@ nNe hWR iis jre -dLA -pnw -biu -asf -aqH -fja -prX +eTX +rCc +vpv +dfr +gJx +uDu +wAK eud kww qPE @@ -190336,12 +190336,12 @@ nNe hts hQv jre -rwN -oqE -rGI +pSR +hkE +gGX jre jre -gWi +mXV jre jre jre @@ -190594,11 +190594,11 @@ jre jre jre nzU -aWj -qOo -tyA +wHQ +fOM +meN fOS -pWE +ydn oXE wSs tpc @@ -193979,7 +193979,7 @@ qCu qLY qLY qLY -oXr +mYQ fma qLY dRX @@ -241994,7 +241994,7 @@ bIc wdI yaE yaE -mvw +etb aTH eJe utR @@ -242819,7 +242819,7 @@ kYq kYq kYq kYq -aVI +cje kYq kYq kYq @@ -243582,7 +243582,7 @@ gDm oKY kCI iXk -hHD +oZw pRj daS mNY @@ -246121,7 +246121,7 @@ ybv rox cBU twK -aES +azM ybv ybv nBk @@ -246166,7 +246166,7 @@ dcC jGB akz sCA -mta +hYs ojv bAT eri @@ -247148,7 +247148,7 @@ aVH lpM rCD uEm -nfL +ueZ mvc uQT uDa @@ -247665,7 +247665,7 @@ sgZ sgZ pZN kwu -uKS +ith uPB xLF lpM @@ -248179,7 +248179,7 @@ uEm uEm uEm uEm -cYm +asd uEm eqU log @@ -248432,12 +248432,12 @@ rYE xUg lpM rdf -tpN -nKT +aGi +dMf gjQ ipU -cpr -iwd +tCK +kFX jEg dGU wdg @@ -254116,7 +254116,7 @@ cIU mlR rWW atb -gvX +dtx uOg kRP pAN @@ -254372,9 +254372,9 @@ tQc vSY ubq lfL -xLW +ksm iPz -kyY +vxH kRP kRP kRP @@ -256945,7 +256945,7 @@ nmC cEo kQJ mFE -bdT +mMa bsi cmy nAN @@ -259244,7 +259244,7 @@ uxj eNK owC xGA -jTZ +lRi xGA wHc xKk @@ -264895,7 +264895,7 @@ gGx jxc aFt oPP -iTJ +lvh mEJ kCz vJS @@ -265129,7 +265129,7 @@ tpd jtG myJ myJ -ugO +sww wLS myJ eUL @@ -265409,7 +265409,7 @@ tgB kKv fhb vAP -bsN +opD sca gpj oQn diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 28c934373b7..8ccb43c7490 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -3422,20 +3422,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"bjs" = ( -/obj/structure/closet{ - anchored = 1; - can_be_unanchored = 1; - name = "Cold protection gear" - }, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron, -/area/station/science/xenobiology) "bjy" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/effect/turf_decal/tile/blue{ @@ -4178,6 +4164,10 @@ }, /turf/open/floor/iron/white, /area/station/science/explab) +"bwf" = ( +/obj/structure/sign/poster/greenscreen/directional/north, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/captain/private) "bwh" = ( /obj/machinery/light_switch/directional/east, /obj/machinery/camera/directional/east{ @@ -6158,6 +6148,12 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/white, /area/station/science/explab) +"cjN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/directional/east, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server) "cky" = ( /obj/machinery/power/shieldwallgen, /obj/machinery/light/cold/directional/east, @@ -9105,6 +9101,18 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"doC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "E.V.A. Storage" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/effect/landmark/navigate_destination, +/obj/effect/mapping_helpers/airlock/access/any/command/eva, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron, +/area/station/ai_monitored/command/storage/eva) "doD" = ( /obj/effect/turf_decal/delivery, /obj/structure/closet/firecloset, @@ -11647,12 +11655,6 @@ "ehX" = ( /turf/open/floor/iron/dark, /area/station/medical/storage) -"ehY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/tcommsat/server) "ehZ" = ( /obj/machinery/door/poddoor/preopen{ id = "prison release"; @@ -15033,30 +15035,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) -"fpi" = ( -/obj/machinery/door/window/right/directional/south{ - name = "First Aid Supplies"; - req_access = list("medical") - }, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/medkit/brute{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/brute, -/obj/item/storage/medkit/brute{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/reinforced, -/obj/machinery/light/cold/directional/north, -/obj/structure/window/spawner/directional/west, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "fpj" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -15661,14 +15639,6 @@ "fEK" = ( /turf/closed/wall, /area/station/medical/medbay/central) -"fEL" = ( -/obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/stamp/head/ce, -/obj/item/reagent_containers/pill/patch/aiuri, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "fEO" = ( /obj/structure/cable, /turf/open/floor/circuit/red, @@ -16032,16 +16002,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"fLe" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Medbay Maintenance" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "fLo" = ( /obj/effect/turf_decal/siding/white{ dir = 8 @@ -16252,6 +16212,12 @@ }, /turf/open/floor/grass, /area/station/medical/virology) +"fPc" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/tcommsat/server) "fPh" = ( /obj/machinery/gateway/centerstation, /turf/open/floor/iron/dark, @@ -16845,6 +16811,14 @@ }, /turf/open/floor/iron/white, /area/station/science/lab) +"gbU" = ( +/obj/structure/table/reinforced, +/obj/item/folder/yellow, +/obj/item/stamp/head/ce, +/obj/item/reagent_containers/applicator/patch/aiuri, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "gbY" = ( /obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17080,10 +17054,6 @@ /obj/machinery/space_heater/improvised_chem_heater, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"ggX" = ( -/obj/structure/sign/poster/greenscreen/directional/north, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain/private) "ggZ" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/disposalpipe/segment{ @@ -18255,14 +18225,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) -"gDW" = ( -/obj/machinery/greenscreen_camera{ - dir = 1; - pixel_x = 4; - pixel_y = 16 - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain/private) "gDZ" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, @@ -18662,6 +18624,14 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"gKA" = ( +/obj/machinery/greenscreen_camera{ + dir = 1; + pixel_x = 4; + pixel_y = 16 + }, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/captain/private) "gKD" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -21599,18 +21569,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/security/office) -"hNg" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "E.V.A. Storage" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/command/eva, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) "hNn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/floor, @@ -27966,16 +27924,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/station/commons/lounge) -"jSj" = ( -/obj/machinery/door/airlock/research{ - glass = 1; - name = "Slime Euthanization Chamber"; - opacity = 0 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron, -/area/station/science/xenobiology) "jSk" = ( /turf/open/floor/engine, /area/station/science/explab) @@ -29797,18 +29745,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"kzL" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "E.V.A. Storage" - }, -/obj/effect/turf_decal/delivery, -/obj/structure/cable, -/obj/effect/landmark/navigate_destination, -/obj/effect/mapping_helpers/airlock/access/any/command/eva, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) "kzQ" = ( /obj/effect/turf_decal/siding/purple, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30154,6 +30090,14 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"kFU" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/brown/filled/warning, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron, +/area/station/cargo/sorting) "kGc" = ( /obj/machinery/computer/rdconsole, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ @@ -31362,19 +31306,6 @@ /obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"laT" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/machinery/door/airlock/freezer{ - name = "Freezer" - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen/coldroom) "lbh" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -34244,6 +34175,16 @@ /obj/effect/turf_decal/tile/bar, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"mjw" = ( +/obj/machinery/door/airlock/research{ + glass = 1; + name = "Slime Euthanization Chamber"; + opacity = 0 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron, +/area/station/science/xenobiology) "mjH" = ( /obj/machinery/ai_slipper{ uses = 10 @@ -36853,6 +36794,34 @@ "ndS" = ( /turf/closed/wall/r_wall, /area/station/hallway/secondary/command) +"ndZ" = ( +/obj/machinery/door/window/right/directional/north{ + name = "First Aid Supplies"; + req_access = list("medical") + }, +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/storage/medkit/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/toxin, +/obj/item/storage/medkit/toxin{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/table/reinforced, +/obj/structure/window/spawner/directional/west, +/obj/machinery/requests_console/directional/south{ + department = "Medbay"; + name = "Medbay Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "ner" = ( /obj/machinery/door/airlock/grunge{ name = "Morgue" @@ -37087,6 +37056,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/engine/vacuum, /area/space/nearstation) +"njA" = ( +/obj/structure/table/wood, +/obj/machinery/newscaster/directional/west, +/obj/machinery/computer/security/wooden_tv, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/captain/private) "njB" = ( /obj/structure/rack, /obj/item/stack/rods{ @@ -37546,6 +37521,30 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel) +"nrl" = ( +/obj/machinery/door/window/right/directional/south{ + name = "First Aid Supplies"; + req_access = list("medical") + }, +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/storage/medkit/brute{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/brute, +/obj/item/storage/medkit/brute{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/table/reinforced, +/obj/machinery/light/cold/directional/north, +/obj/structure/window/spawner/directional/west, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "nrm" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -40326,34 +40325,6 @@ /obj/effect/landmark/start/mime, /turf/open/floor/carpet, /area/station/service/theater) -"opD" = ( -/obj/machinery/door/window/right/directional/north{ - name = "First Aid Supplies"; - req_access = list("medical") - }, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/medkit/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/toxin, -/obj/item/storage/medkit/toxin{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/reinforced, -/obj/structure/window/spawner/directional/west, -/obj/machinery/requests_console/directional/south{ - department = "Medbay"; - name = "Medbay Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "opF" = ( /obj/machinery/hydroponics/soil, /obj/item/cultivator, @@ -43037,6 +43008,23 @@ /obj/effect/turf_decal/caution, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"pnp" = ( +/obj/item/reagent_containers/cup/bottle/toxin{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/reagentgrinder{ + pixel_y = 4 + }, +/obj/item/reagent_containers/applicator/pill/morphine{ + name = "Exponential Entrophy"; + pixel_x = -9; + pixel_y = -4 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/maintenance/starboard/lesser) "pnx" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -44396,6 +44384,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/research) +"pLt" = ( +/obj/structure/closet{ + anchored = 1; + name = "Cold protection gear" + }, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron, +/area/station/science/xenobiology) "pLz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -48073,6 +48074,30 @@ /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /turf/open/floor/plating, /area/station/maintenance/port) +"qZx" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/spray/syndicate{ + pixel_y = 4; + pixel_x = 7 + }, +/obj/item/reagent_containers/applicator/pill/maintenance{ + pixel_x = -4; + pixel_y = -1 + }, +/obj/item/reagent_containers/applicator/pill/maintenance{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/reagent_containers/applicator/pill/maintenance{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/reagent_containers/applicator/pill/happy{ + pixel_y = 6; + pixel_x = -4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "qZB" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 @@ -48743,12 +48768,6 @@ /obj/effect/mapping_helpers/airlock/access/all/service/lawyer, /turf/open/floor/plating, /area/station/maintenance/fore) -"rmL" = ( -/obj/structure/table/wood, -/obj/machinery/newscaster/directional/west, -/obj/machinery/computer/security/wooden_tv, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain/private) "rmO" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -48989,6 +49008,16 @@ /obj/machinery/digital_clock/directional/south, /turf/open/floor/iron, /area/station/service/bar) +"rrC" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Server Access" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/science/server) "rrL" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/poddoor/preopen{ @@ -50675,14 +50704,6 @@ }, /turf/open/floor/iron, /area/station/commons/locker) -"rUd" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/brown/filled/warning, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/cargo/sorting) "rUo" = ( /obj/structure/bed, /obj/effect/spawner/random/bedsheet, @@ -51688,6 +51709,22 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) +"sno" = ( +/obj/structure/table, +/obj/effect/turf_decal/siding/purple{ + dir = 9 + }, +/obj/item/toy/figure/geneticist, +/obj/item/radio/intercom/directional/west, +/obj/item/storage/pill_bottle/mutadone{ + pixel_x = -9 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/flesh_shears{ + pixel_x = 15 + }, +/turf/open/floor/iron/dark, +/area/station/science/genetics) "snu" = ( /obj/structure/table/wood, /obj/machinery/door/window/right/directional/south{ @@ -51913,30 +51950,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/grimy, /area/station/security/office) -"ssu" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/spray/syndicate{ - pixel_y = 4; - pixel_x = 7 - }, -/obj/item/reagent_containers/pill/maintenance{ - pixel_x = -4; - pixel_y = -1 - }, -/obj/item/reagent_containers/pill/maintenance{ - pixel_x = -4; - pixel_y = 1 - }, -/obj/item/reagent_containers/pill/maintenance{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/reagent_containers/pill/happy{ - pixel_y = 6; - pixel_x = -4 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "ssI" = ( /obj/machinery/power/emitter, /turf/open/floor/plating, @@ -53880,6 +53893,19 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron, /area/station/service/hydroponics) +"sZx" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, +/obj/machinery/duct, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/machinery/door/airlock/freezer{ + name = "Freezer" + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/cafeteria, +/area/station/service/kitchen/coldroom) "sZH" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 @@ -54004,16 +54030,6 @@ }, /turf/open/floor/iron, /area/station/commons/lounge) -"tbp" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Server Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/science/server) "tbI" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -56121,18 +56137,6 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) -"tOV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/storage/box/gum, -/obj/item/surgicaldrill, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/medical/abandoned) "tOX" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/carpet, @@ -59385,6 +59389,15 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"uUy" = ( +/obj/machinery/door/airlock/medical{ + name = "Medical Cold Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/medical/coldroom) "uUL" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -60143,15 +60156,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/evidence) -"via" = ( -/obj/machinery/door/airlock/medical{ - name = "Medical Cold Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/medical/coldroom) "vif" = ( /obj/machinery/holopad, /turf/open/floor/iron, @@ -64344,22 +64348,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/prison) -"wBq" = ( -/obj/structure/table, -/obj/effect/turf_decal/siding/purple{ - dir = 9 - }, -/obj/item/toy/figure/geneticist, -/obj/item/radio/intercom/directional/west, -/obj/item/storage/pill_bottle/mutadone{ - pixel_x = -9 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/flesh_shears{ - pixel_x = 15 - }, -/turf/open/floor/iron/dark, -/area/station/science/genetics) "wBs" = ( /obj/machinery/vending/cigarette, /turf/open/floor/wood, @@ -64821,6 +64809,18 @@ dir = 8 }, /area/station/medical/chem_storage) +"wMj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/storage/box/gum, +/obj/item/surgicaldrill, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/medical/abandoned) "wMx" = ( /obj/effect/turf_decal/bot, /obj/effect/landmark/start/hangover, @@ -65357,23 +65357,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"wVO" = ( -/obj/item/reagent_containers/cup/bottle/toxin{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/structure/table, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/reagentgrinder{ - pixel_y = 4 - }, -/obj/item/reagent_containers/pill/morphine{ - name = "Exponential Entrophy"; - pixel_x = -9; - pixel_y = -4 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/lesser) "wVQ" = ( /obj/structure/closet/cardboard, /turf/open/floor/plating, @@ -65974,12 +65957,6 @@ /obj/effect/spawner/random/clothing/costume, /turf/open/floor/plating, /area/station/maintenance/port) -"xgL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/east, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) "xgN" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ @@ -67538,6 +67515,16 @@ /obj/structure/sign/warning/docking, /turf/closed/wall, /area/station/hallway/primary/port) +"xJC" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "xJI" = ( /obj/machinery/light_switch/directional/west, /obj/structure/table/glass, @@ -67943,6 +67930,18 @@ /obj/effect/turf_decal/box, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"xSl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "E.V.A. Storage" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/command/eva, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron, +/area/station/ai_monitored/command/storage/eva) "xSO" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -87227,7 +87226,7 @@ jUb gPY jUb jUb -fLe +xJC jUb gll azE @@ -88000,7 +87999,7 @@ jUb jdH oBv uOo -via +uUy myc wSv fuA @@ -88525,7 +88524,7 @@ qOk tBJ gIB oxj -tOV +wMj oic hqb yje @@ -88689,7 +88688,7 @@ uSh fzo rNP ieD -ssu +qZx ggW jXu fpn @@ -89751,7 +89750,7 @@ gav hab uyP ejD -rUd +kFU rnh iev nJJ @@ -90822,11 +90821,11 @@ qXh ehg hgu vun -fpi +nrl uTj usC ehX -opD +ndZ vun gQG tFr @@ -92591,7 +92590,7 @@ wMx cMQ urA qAc -hNg +xSl kwF qjf mXf @@ -93105,7 +93104,7 @@ oUB qRI urA nIR -kzL +doC uac aUK aUK @@ -97259,7 +97258,7 @@ oIg cId rQl oIg -wBq +sno bEC lsV aXW @@ -99001,7 +99000,7 @@ hPM hvr syo bUt -rmL +njA tIR tyY ogL @@ -99514,8 +99513,8 @@ ozX kON vjn syo -ggX -gDW +bwf +gKA iox tyY eCB @@ -104441,7 +104440,7 @@ fVc wXF jdX ohI -tbp +rrC uzc oUu saf @@ -105958,7 +105957,7 @@ jzT ivy ebK sLp -laT +sZx mSS ebY hiM @@ -107261,7 +107260,7 @@ mma iMQ rAo tUn -wVO +pnp mix rpD iMd @@ -108506,7 +108505,7 @@ acs uXd qJd nLz -fEL +gbU rSi pCt qHm @@ -113194,7 +113193,7 @@ uNs tIP qQJ vGq -bjs +pLt gyI lPS xiL @@ -114989,7 +114988,7 @@ sPy iWc xVu vva -jSj +mjw rzz xVu lVB @@ -123942,7 +123941,7 @@ art nqp iYP aVX -ehY +fPc ycj kyX kzg @@ -123950,7 +123949,7 @@ poJ tnh tnh mXb -xgL +cjN qYg gCy eNh diff --git a/_maps/map_files/NebulaStation/NebulaStation.dmm b/_maps/map_files/NebulaStation/NebulaStation.dmm index d97364ecf87..a31f297db8f 100644 --- a/_maps/map_files/NebulaStation/NebulaStation.dmm +++ b/_maps/map_files/NebulaStation/NebulaStation.dmm @@ -1901,6 +1901,26 @@ /obj/effect/turf_decal/trimline/yellow/corner, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) +"aov" = ( +/obj/structure/table/reinforced/rglass, +/obj/item/paper_bin{ + pixel_x = -5; + pixel_y = 4 + }, +/obj/item/pen/fountain/captain{ + pixel_x = -5; + pixel_y = 4 + }, +/obj/item/toy/figure/captain{ + pixel_y = 13; + pixel_x = 6 + }, +/obj/machinery/recharger{ + pixel_y = 3; + pixel_x = 7 + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) "aoK" = ( /obj/structure/cable/layer3, /obj/machinery/door/airlock/hatch{ @@ -2269,6 +2289,23 @@ dir = 8 }, /area/station/service/chapel) +"arT" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/textured_edge{ + dir = 4 + }, +/area/station/engineering/engine_smes) "asd" = ( /obj/structure/sign/clock/directional/north, /obj/effect/turf_decal/siding/wood{ @@ -3332,19 +3369,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"aAr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "aAt" = ( /obj/machinery/vending/coffee, /obj/structure/sign/poster/official/random/directional/west, @@ -3527,6 +3551,19 @@ /obj/structure/cable, /turf/open/floor/iron/dark/textured_large, /area/station/command/heads_quarters/ce) +"aBN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_corner{ + dir = 4 + }, +/area/station/engineering/engine_smes) "aBP" = ( /obj/effect/turf_decal/delivery, /obj/structure/ore_box, @@ -4568,6 +4605,12 @@ dir = 1 }, /area/station/maintenance/port/aft) +"aKg" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "aKj" = ( /obj/effect/turf_decal/siding/wideplating_new/dark{ dir = 8 @@ -5904,19 +5947,6 @@ /obj/structure/cable, /turf/open/floor/wood/large, /area/station/security/prison/rec) -"aUK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/station/engineering/engine_smes) "aUM" = ( /obj/effect/decal/cleanable/dirt, /obj/item/storage/cans/sixbeer, @@ -7974,25 +8004,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/central) -"blI" = ( -/obj/structure/guncase/shotgun{ - anchored = 1; - can_be_unanchored = 1; - open = 0 - }, -/obj/item/gun/ballistic/shotgun/doublebarrel, -/obj/effect/turf_decal/trimline/dark_red/line{ - dir = 1 - }, -/obj/machinery/requests_console/directional/south{ - department = "Bar"; - name = "Bar Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/turf_decal/trimline/dark_red/filled/line, -/turf/open/floor/iron/dark/small, -/area/station/service/bar/backroom) "blK" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/grille/broken, @@ -8095,6 +8106,21 @@ /obj/structure/flora/bush/lavendergrass/style_random, /turf/open/misc/asteroid/airless, /area/space/nearstation) +"bmQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Mix Bypass" + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "bmS" = ( /obj/structure/railing{ dir = 1 @@ -8836,18 +8862,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/small, /area/station/engineering/atmos) -"btt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ - dir = 8 - }, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "btw" = ( /obj/effect/turf_decal/siding/purple/corner{ dir = 8 @@ -9186,6 +9200,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/security/brig) +"bwB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "bwC" = ( /turf/closed/wall, /area/station/service/library/upper) @@ -10845,6 +10871,13 @@ }, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness/recreation/lasertag) +"bGy" = ( +/obj/item/clipboard, +/obj/structure/table/reinforced, +/obj/item/folder/yellow, +/obj/item/reagent_containers/applicator/patch/aiuri, +/turf/open/floor/iron/dark/textured, +/area/station/maintenance/disposal/incinerator) "bGz" = ( /obj/machinery/door/firedoor, /turf/open/floor/iron/dark/textured, @@ -10918,23 +10951,6 @@ dir = 10 }, /area/station/engineering/atmos) -"bHp" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable/layer1, -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, -/area/station/engineering/engine_smes) "bHr" = ( /obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -11647,20 +11663,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/misc/asteroid/airless, /area/space/nearstation) -"bMm" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 5 - }, -/obj/machinery/light_switch/directional/east, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/diagonal_edge, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/diagonal, -/area/station/cargo/breakroom) "bMt" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -12288,6 +12290,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer1, /turf/open/floor/iron/dark/diagonal, /area/station/science/ordnance/testlab) +"bQZ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/item/kirbyplants/organic/plant18, +/turf/open/floor/wood/parquet, +/area/station/cargo/mining_breakroom) "bRc" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 8 @@ -12586,17 +12595,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark/small, /area/station/security/execution/transfer) -"bTC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "bTY" = ( /obj/item/solar_assembly, /obj/item/solar_assembly, @@ -13073,16 +13071,20 @@ /obj/structure/cable, /turf/open/floor/iron/white/small, /area/station/science/lobby) -"bXj" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/item/reagent_containers/pill/happy{ - pixel_y = 11; - pixel_x = -8 +"bXm" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 }, -/obj/machinery/iv_drip, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/textured_edge, +/area/station/engineering/engine_smes) "bXn" = ( /obj/effect/turf_decal/siding/wideplating_new/dark{ dir = 8 @@ -14811,24 +14813,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/hallway/secondary/service) -"cmm" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/structure/cable/layer1, -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, -/area/station/engineering/engine_smes) "cmp" = ( /obj/effect/turf_decal/plaque{ icon_state = "L14" @@ -16072,6 +16056,13 @@ dir = 6 }, /area/station/maintenance/starboard/central) +"cvs" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "cvt" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /obj/effect/spawner/structure/window/reinforced, @@ -16199,25 +16190,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/large, /area/station/service/kitchen/diner) -"cwz" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/camera/autoname/directional/east, -/obj/structure/cable/layer1, -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, -/area/station/engineering/engine_smes) "cwK" = ( /obj/effect/turf_decal/siding/wideplating_new/dark/corner{ dir = 8 @@ -16403,30 +16375,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/medical/virology) -"cxP" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/siding/dark{ - dir = 6 - }, -/obj/machinery/door/window/right/directional/south{ - name = "First Aid Supplies"; - req_access = list("medical") - }, -/obj/machinery/digital_clock/directional/north, -/obj/item/storage/medkit/regular, -/obj/item/storage/medkit/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/toxin, -/obj/item/storage/medkit/toxin{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/machinery/light/directional/north, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "cxS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -17039,6 +16987,19 @@ /obj/machinery/smartfridge/food, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/station/service/kitchen/coldroom) +"cCl" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/chair/office, +/obj/effect/landmark/start/station_engineer, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_edge, +/area/station/engineering/engine_smes) "cCq" = ( /obj/effect/turf_decal/trimline/green/corner{ dir = 4 @@ -17729,15 +17690,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"cHP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "cHV" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -18823,12 +18775,6 @@ dir = 1 }, /area/station/commons/dorms) -"cPK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "cPL" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -19564,6 +19510,21 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, /area/station/maintenance/fore/lesser) +"cVl" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/closet{ + anchored = 1; + name = "Cold protection gear" + }, +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/storage/bag/xeno, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "cVn" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 4 @@ -21632,6 +21593,17 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer5, /turf/open/floor/plating, /area/station/engineering/atmos) +"dkC" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/firealarm/directional/north, +/obj/structure/cable/layer1, +/turf/open/floor/iron/stairs/left{ + dir = 8; + color = "#3d3e42" + }, +/area/station/engineering/engine_smes) "dkE" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -21813,6 +21785,30 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) +"dmm" = ( +/obj/structure/table/glass, +/obj/effect/turf_decal/siding/dark{ + dir = 6 + }, +/obj/machinery/door/window/right/directional/south{ + name = "First Aid Supplies"; + req_access = list("medical") + }, +/obj/machinery/digital_clock/directional/north, +/obj/item/storage/medkit/regular, +/obj/item/storage/medkit/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/toxin, +/obj/item/storage/medkit/toxin{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/light/directional/north, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "dmn" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -22329,23 +22325,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"dqm" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 6 - }, -/obj/machinery/light_switch/directional/east, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple/diagonal_edge, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/kirbyplants/random, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/diagonal, -/area/station/science/breakroom) "dqo" = ( /obj/structure/table/wood/fancy/royalblack, /obj/structure/sign/poster/contraband/starkist/directional/north, @@ -23078,6 +23057,38 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/small, /area/station/science/robotics/storage) +"duN" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/storage/bag/xeno, +/obj/structure/closet{ + anchored = 1; + name = "Cold protection gear" + }, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) +"duO" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 6 + }, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/kirbyplants/random, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron/dark/diagonal, +/area/station/science/breakroom) "duT" = ( /obj/structure/railing/corner{ dir = 4 @@ -24819,17 +24830,6 @@ }, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) -"dIG" = ( -/obj/machinery/door/airlock/medical{ - name = "Medical Cold Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/structure/cable, -/obj/structure/curtain, -/obj/effect/turf_decal/weather/snow, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "dIN" = ( /turf/closed/wall, /area/station/security/prison) @@ -25138,25 +25138,6 @@ /obj/machinery/holopad, /turf/open/floor/iron/dark, /area/station/service/chapel) -"dMb" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/caution/stand_clear/white{ - dir = 8 - }, -/obj/effect/turf_decal/bot_white, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/door/airlock/freezer{ - name = "Freezer" - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/service/kitchen/coldroom) "dMg" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 8 @@ -27180,19 +27161,6 @@ }, /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) -"eax" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "eaA" = ( /obj/effect/turf_decal/siding/brown{ dir = 9 @@ -27756,6 +27724,25 @@ }, /turf/open/floor/iron/dark/textured_half, /area/station/engineering/atmos) +"eeJ" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/camera/autoname/directional/east, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/textured_corner{ + dir = 1 + }, +/area/station/engineering/engine_smes) "eeL" = ( /obj/structure/table/wood/fancy, /obj/item/book/granter/action/spell/smoke/lesser{ @@ -30312,16 +30299,6 @@ }, /turf/open/floor/wood/large, /area/station/maintenance/department/bridge) -"eyq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance{ - name = "Medbay Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "eyr" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -32246,6 +32223,21 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"eNz" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "eND" = ( /obj/effect/turf_decal/tile/purple{ dir = 1 @@ -36304,20 +36296,6 @@ }, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/department/bridge) -"ftW" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 6 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical, -/obj/item/reagent_containers/pill/patch/aiuri, -/obj/item/clothing/glasses/meson, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, -/area/station/command/heads_quarters/ce) "fub" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36366,26 +36344,6 @@ /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"fuB" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/paper_bin{ - pixel_x = -5; - pixel_y = 4 - }, -/obj/item/pen/fountain/captain{ - pixel_x = -5; - pixel_y = 4 - }, -/obj/item/toy/figure/captain{ - pixel_y = 13; - pixel_x = 6 - }, -/obj/machinery/recharger{ - pixel_y = 3; - pixel_x = 7 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) "fuD" = ( /obj/machinery/door/poddoor/preopen{ id = "projectlock"; @@ -38738,6 +38696,17 @@ /obj/structure/chair, /turf/open/floor/iron/dark, /area/station/hallway/secondary/command) +"fMS" = ( +/obj/machinery/door/airlock/medical{ + name = "Medical Cold Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/structure/cable, +/obj/structure/curtain, +/obj/effect/turf_decal/weather/snow, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "fMT" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 5 @@ -39432,21 +39401,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"fSm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ - dir = 8 - }, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "fSn" = ( /obj/effect/turf_decal/bot_white/left, /obj/machinery/digital_clock/directional/north, @@ -40267,12 +40221,6 @@ /obj/structure/cable, /turf/open/floor/plating/airless, /area/station/solars/starboard/fore) -"fXN" = ( -/obj/structure/cable, -/obj/machinery/light/floor, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "fXP" = ( /obj/structure/railing{ dir = 8 @@ -40494,12 +40442,6 @@ dir = 4 }, /area/station/cargo/lobby) -"fZB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/structure/cable, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/glass/reinforced, -/area/station/engineering/supermatter/room/upper) "fZK" = ( /obj/effect/turf_decal/siding/thinplating_new/light, /obj/effect/turf_decal/siding/thinplating_new/light{ @@ -41378,6 +41320,20 @@ }, /turf/open/floor/iron/white/textured, /area/station/security/prison/shower) +"ggu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/obj/machinery/power/terminal{ + dir = 1; + cable_layer = 1 + }, +/obj/structure/cable/multilayer/layer1, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, +/area/station/engineering/engine_smes) "ggD" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -42573,6 +42529,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/textured, /area/station/medical/medbay/central) +"gog" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/machinery/status_display/ai/directional/east, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "goi" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -44737,10 +44706,6 @@ /obj/structure/flora/bush/lavendergrass/style_random, /turf/open/misc/asteroid/airless, /area/space/nearstation) -"gFN" = ( -/obj/item/reagent_containers/pill/iron, -/turf/open/floor/glass/reinforced, -/area/station/maintenance/department/cargo) "gFP" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/east, @@ -45113,6 +45078,24 @@ /obj/structure/cable, /turf/open/floor/iron/dark/small, /area/station/command/gateway) +"gJi" = ( +/obj/structure/guncase/shotgun{ + anchored = 1; + open = 0 + }, +/obj/item/gun/ballistic/shotgun/doublebarrel, +/obj/effect/turf_decal/trimline/dark_red/line{ + dir = 1 + }, +/obj/machinery/requests_console/directional/south{ + department = "Bar"; + name = "Bar Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/turf_decal/trimline/dark_red/filled/line, +/turf/open/floor/iron/dark/small, +/area/station/service/bar/backroom) "gJn" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 10 @@ -45862,6 +45845,12 @@ }, /turf/open/floor/iron/dark/textured, /area/station/maintenance/disposal/incinerator) +"gOY" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "gPc" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/trimline/blue/warning{ @@ -46339,16 +46328,6 @@ }, /turf/open/floor/carpet/neon/simple/red/nodots, /area/station/commons/fitness/recreation/lasertag) -"gSs" = ( -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/syringe/multiver{ - pixel_x = -18; - pixel_y = 10 - }, -/obj/effect/decal/cleanable/confetti, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) "gSv" = ( /obj/structure/railing/corner/end/flip, /obj/effect/turf_decal/arrows{ @@ -46831,19 +46810,6 @@ }, /turf/open/floor/iron/white/small, /area/station/science/research) -"gWt" = ( -/obj/machinery/door/airlock/command{ - name = "E.V.A. Storage" - }, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/eva, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark/textured, -/area/station/ai_monitored/command/storage/eva) "gWz" = ( /obj/effect/turf_decal/siding/dark{ dir = 9 @@ -47103,20 +47069,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness/recreation) -"gYy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/obj/machinery/power/terminal{ - dir = 1; - cable_layer = 1 - }, -/obj/structure/cable/multilayer/layer1, -/turf/open/floor/iron/dark/textured_edge{ - dir = 1 - }, -/area/station/engineering/engine_smes) "gYD" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 4 @@ -47415,6 +47367,14 @@ }, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"haA" = ( +/obj/effect/turf_decal/trimline/dark/filled/warning{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark/textured, +/area/station/tcommsat/computer) "haE" = ( /obj/machinery/door/window/right/directional/west{ name = "Research Delivery"; @@ -47589,22 +47549,6 @@ }, /turf/open/floor/wood/large, /area/station/service/theater) -"hcd" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/storage/bag/xeno, -/obj/structure/closet{ - anchored = 1; - can_be_unanchored = 1; - name = "Cold protection gear" - }, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "hci" = ( /obj/structure/railing/corner, /obj/effect/decal/cleanable/dirt, @@ -48758,6 +48702,10 @@ }, /turf/open/floor/wood/tile, /area/station/service/minibar) +"hkq" = ( +/obj/item/reagent_containers/applicator/pill/iron, +/turf/open/floor/glass/reinforced, +/area/station/maintenance/department/cargo) "hks" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -48770,6 +48718,16 @@ /obj/machinery/incident_display/delam/directional/north, /turf/open/openspace, /area/station/engineering/supermatter/room/upper) +"hky" = ( +/obj/structure/closet/crate/freezer/blood, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/machinery/iv_drip, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/light_switch/directional/west, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "hkD" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -50526,6 +50484,14 @@ }, /turf/open/floor/iron/dark/small, /area/station/ai_monitored/turret_protected/ai) +"hxT" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/small, +/area/station/engineering/main) "hyb" = ( /obj/effect/turf_decal/trimline/dark/corner{ dir = 1 @@ -50708,6 +50674,22 @@ }, /turf/open/floor/iron/dark/small, /area/station/hallway/primary/port) +"hzc" = ( +/obj/structure/table/reinforced/rglass, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_y = 8 + }, +/obj/item/lighter{ + pixel_y = -15; + pixel_x = -4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/reagent_containers/cup/glass/flask/gold{ + pixel_y = -13; + pixel_x = 6 + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) "hzk" = ( /obj/effect/turf_decal/trimline/blue/end{ dir = 4 @@ -52738,6 +52720,22 @@ /obj/structure/mirror/directional/south, /turf/open/floor/wood/large, /area/station/service/theater_dressing) +"hPy" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/obj/structure/rack, +/obj/item/toy/snowball, +/obj/item/clothing/glasses/cold, +/obj/item/wrench/medical, +/obj/item/food/popsicle/creamsicle_berry, +/obj/item/tank/internals/anesthetic, +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/tlv_cold_room, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "hPD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53883,6 +53881,24 @@ /obj/machinery/holopad, /turf/open/floor/glass/reinforced, /area/station/science/lower) +"hYv" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/textured_edge{ + dir = 4 + }, +/area/station/engineering/engine_smes) "hYy" = ( /obj/structure/cable, /turf/open/floor/iron/dark/textured_edge, @@ -54277,6 +54293,19 @@ dir = 10 }, /area/station/commons/dorms) +"iaT" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 1 + }, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/small, +/area/station/engineering/main) "iaU" = ( /obj/effect/turf_decal/siding/white{ dir = 1 @@ -57573,21 +57602,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/grass, /area/station/maintenance/fore/greater) -"iAU" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ - dir = 4 - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "iAX" = ( /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/security/general, @@ -59798,20 +59812,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"iRa" = ( -/obj/effect/decal/cleanable/vomit, -/obj/item/reagent_containers/pill/insulin{ - pixel_y = 7; - pixel_x = -5 - }, -/obj/structure/chair/stool/directional/east, -/obj/structure/sign/warning/electric_shock/directional/west, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner, -/obj/effect/turf_decal/trimline/dark/corner, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/maintenance/department/cargo) "iRb" = ( /obj/item/clothing/suit/jacket/straight_jacket, /obj/item/clothing/glasses/blindfold, @@ -60119,19 +60119,6 @@ dir = 1 }, /area/station/security/brig) -"iTP" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, -/obj/structure/cable/layer1, -/turf/open/floor/iron/dark/small, -/area/station/engineering/main) "iTT" = ( /obj/structure/cable, /obj/structure/sign/poster/contraband/babel_device/directional/north, @@ -61771,13 +61758,6 @@ /obj/effect/turf_decal/trimline/green, /turf/open/floor/iron/dark/small, /area/station/science/robotics/lab) -"jhk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/multilayer/connected, -/turf/open/floor/engine, -/area/station/engineering/supermatter) "jhA" = ( /obj/machinery/holopad{ pixel_x = 1 @@ -62531,6 +62511,16 @@ /obj/structure/cable, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/turret_protected/aisat/atmos) +"joD" = ( +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/reagent_containers/syringe/multiver{ + pixel_x = -18; + pixel_y = 10 + }, +/obj/effect/decal/cleanable/confetti, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) "joJ" = ( /obj/structure/hedge, /obj/structure/railing{ @@ -63195,6 +63185,13 @@ /obj/structure/flora/bush/lavendergrass/style_random, /turf/open/floor/grass, /area/station/maintenance/port/central) +"jto" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/multilayer/connected, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "jtF" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -63402,6 +63399,20 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark/smooth_edge, /area/station/medical/pharmacy) +"jvk" = ( +/obj/effect/decal/cleanable/vomit, +/obj/item/reagent_containers/applicator/pill/insulin{ + pixel_y = 7; + pixel_x = -5 + }, +/obj/structure/chair/stool/directional/east, +/obj/structure/sign/warning/electric_shock/directional/west, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner, +/obj/effect/turf_decal/trimline/dark/corner, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/station/maintenance/department/cargo) "jvm" = ( /obj/structure/cable, /obj/structure/broken_flooring/singular/directional/east, @@ -64382,22 +64393,6 @@ }, /turf/open/floor/iron/dark, /area/station/cargo/sorting) -"jBr" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/storage/fancy/cigarettes/cigars/havana{ - pixel_y = 8 - }, -/obj/item/lighter{ - pixel_y = -15; - pixel_x = -4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/reagent_containers/cup/glass/flask/gold{ - pixel_y = -13; - pixel_x = 6 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) "jBy" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -65279,6 +65274,22 @@ }, /turf/open/floor/iron/dark/small, /area/station/hallway/secondary/command) +"jHL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/power/terminal{ + dir = 1; + cable_layer = 1 + }, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/obj/structure/cable/multilayer/layer1, +/turf/open/floor/iron/dark/textured_corner{ + dir = 8 + }, +/area/station/engineering/engine_smes) "jHP" = ( /obj/structure/railing, /obj/effect/turf_decal/siding/wideplating_new/dark, @@ -66221,6 +66232,18 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/dark, /area/station/maintenance/starboard/central) +"jPE" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/box/white{ + color = "#EFB341" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/small, +/area/station/engineering/main) "jPI" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/item/kirbyplants/random, @@ -67059,15 +67082,6 @@ /obj/item/clothing/glasses/hud/health, /turf/open/floor/carpet/blue, /area/station/command/heads_quarters/cmo) -"jWj" = ( -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable/layer1, -/turf/open/floor/plating, -/area/station/engineering/supermatter) "jWn" = ( /obj/machinery/door/poddoor/preopen{ id = "queue_hop"; @@ -68303,17 +68317,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/main) -"kfz" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/obj/structure/cable/layer1, -/turf/open/floor/iron/stairs/left{ - dir = 8; - color = "#3d3e42" - }, -/area/station/engineering/engine_smes) "kfA" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -68441,37 +68444,6 @@ }, /turf/open/floor/wood/large, /area/station/commons/vacant_room/office) -"kgO" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/pill/lsd{ - pixel_y = 8; - pixel_x = 8 - }, -/obj/item/reagent_containers/cup/mortar{ - pixel_x = -4; - pixel_y = 11 - }, -/obj/effect/decal/cleanable/brimdust{ - plane = -7; - pixel_y = -7 - }, -/obj/item/implantcase/chem{ - pixel_y = -11; - pixel_x = -1 - }, -/obj/item/reagent_containers/cup/blastoff_ampoule{ - pixel_x = 7; - pixel_y = 2 - }, -/obj/item/reagent_containers/pill/lsd{ - pixel_x = -8 - }, -/obj/item/reagent_containers/pill/happy{ - pixel_y = -1 - }, -/obj/structure/sign/poster/official/plasma_effects/directional/north, -/turf/open/floor/iron/smooth, -/area/station/maintenance/department/bridge) "kgS" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 @@ -68884,6 +68856,15 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"kjC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "kjF" = ( /turf/open/floor/iron/stairs{ color = "#5d341f" @@ -69595,22 +69576,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/small, /area/station/engineering/atmos) -"koa" = ( -/obj/effect/turf_decal/weather/snow/corner{ - dir = 6 - }, -/obj/structure/rack, -/obj/item/toy/snowball, -/obj/item/clothing/glasses/cold, -/obj/item/wrench/medical, -/obj/item/food/popsicle/creamsicle_berry, -/obj/item/tank/internals/anesthetic, -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/weather/snow, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "koc" = ( /obj/effect/turf_decal/siding/wideplating_new/light/corner, /obj/effect/turf_decal/tile/blue/opposingcorners, @@ -71426,18 +71391,21 @@ /obj/item/bouquet/rose, /turf/open/floor/iron/dark/textured_large, /area/station/service/chapel/funeral) +"kAu" = ( +/obj/structure/table/reinforced/rglass, +/obj/item/storage/box/monkeycubes{ + pixel_y = 10; + pixel_x = 0 + }, +/obj/item/flesh_shears{ + pixel_y = -5 + }, +/turf/open/floor/iron/dark/textured, +/area/station/science/genetics) "kAw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall/r_wall, /area/station/engineering/supermatter) -"kAF" = ( -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/siding/dark/corner, -/obj/effect/turf_decal/siding/brown{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/cargo/breakroom) "kAG" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 4 @@ -71462,13 +71430,6 @@ /obj/structure/cable, /turf/open/floor/glass/reinforced/airless, /area/space/nearstation) -"kAP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/item/kirbyplants/organic/plant18, -/turf/open/floor/wood/parquet, -/area/station/cargo/mining_breakroom) "kAT" = ( /obj/effect/turf_decal/bot, /obj/effect/spawner/random/structure/closet_empty/crate, @@ -74135,18 +74096,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal) -"kUS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/obj/structure/secure_safe/directional/west, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/captain) "kVd" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -74494,6 +74443,18 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/central) +"kYc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/obj/machinery/power/terminal{ + dir = 1; + cable_layer = 1 + }, +/obj/structure/cable/multilayer/layer1, +/turf/open/floor/iron/dark/textured_corner, +/area/station/engineering/engine_smes) "kYv" = ( /obj/effect/turf_decal/siding/dark{ dir = 5 @@ -74928,11 +74889,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"lcj" = ( -/obj/structure/cable, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "lcm" = ( /obj/effect/turf_decal/bot, /mob/living/simple_animal/bot/mulebot{ @@ -75382,6 +75338,12 @@ "lgA" = ( /turf/closed/wall/r_wall, /area/station/science/cytology) +"lgC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/structure/cable, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/glass/reinforced, +/area/station/engineering/supermatter/room/upper) "lgQ" = ( /turf/open/floor/carpet/donk, /area/station/cargo/miningoffice) @@ -75521,6 +75483,13 @@ /obj/effect/turf_decal/trimline/brown/line, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"lhH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/multilayer/connected, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "lhK" = ( /obj/structure/railing{ dir = 4 @@ -75986,18 +75955,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/engineering/atmos/hfr_room) -"lkP" = ( -/obj/machinery/door/airlock/command{ - name = "E.V.A. Storage" - }, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/eva, -/obj/effect/landmark/navigate_destination, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark/textured, -/area/station/ai_monitored/command/storage/eva) "lkQ" = ( /obj/structure/sign/warning/secure_area/directional/south, /obj/effect/decal/cleanable/vomit/nebula, @@ -76594,27 +76551,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/large, /area/station/command/heads_quarters/rd) -"lpf" = ( -/obj/structure/table, -/obj/item/toy/cards/deck/blank{ - pixel_y = 3 - }, -/obj/item/toy/cards/deck{ - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/glass/mug/britcup{ - pixel_x = -7; - pixel_y = 9 - }, -/obj/effect/turf_decal/siding/blue{ - dir = 6 - }, -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/break_room) "lpp" = ( /obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted, /obj/effect/turf_decal/trimline/dark_blue/filled/corner{ @@ -77868,6 +77804,19 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"lzt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "lzw" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 @@ -78421,15 +78370,6 @@ }, /turf/open/floor/glass/reinforced, /area/station/hallway/primary/fore) -"lDF" = ( -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/plating, -/area/station/engineering/supermatter) "lDI" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -79241,6 +79181,25 @@ /obj/machinery/telecomms/hub/preset, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) +"lKR" = ( +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/caution/stand_clear/white{ + dir = 8 + }, +/obj/effect/turf_decal/bot_white, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/obj/machinery/door/airlock/freezer{ + name = "Freezer" + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/service/kitchen/coldroom) "lKT" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /obj/effect/turf_decal/siding/thinplating_new/dark/corner{ @@ -80771,19 +80730,6 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark/textured_large, /area/station/science/ordnance/storage) -"lXK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/machinery/status_display/ai/directional/east, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "lXL" = ( /obj/structure/sign/clock, /turf/closed/wall, @@ -82870,31 +82816,6 @@ }, /turf/open/floor/iron/dark/smooth_half, /area/station/security/eva) -"mpv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/button/door/directional/north{ - id = "capoffice"; - name = "Privacy Control"; - pixel_y = 26; - req_access = list("captain"); - pixel_x = -7 - }, -/obj/machinery/light/directional/north, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/keycard_auth/wall_mounted/directional/north{ - pixel_x = 6 - }, -/obj/machinery/light_switch/directional/north{ - pixel_y = 36; - pixel_x = -7 - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/captain) "mpz" = ( /obj/item/ammo_casing{ pixel_x = -6; @@ -83186,6 +83107,17 @@ }, /turf/open/floor/iron/dark/textured, /area/station/engineering/storage/tech) +"mrF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/greenscreen_camera{ + dir = 8; + pixel_y = 4; + pixel_x = -4 + }, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/captain) "mrN" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/oxygen_input{ dir = 1 @@ -85114,6 +85046,16 @@ /obj/structure/sign/nanotrasen, /turf/closed/wall, /area/space/nearstation) +"mGy" = ( +/obj/machinery/light_switch/directional/south, +/obj/structure/railing, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/stairs/right{ + dir = 8; + color = "#3d3e42" + }, +/area/station/engineering/engine_smes) "mGG" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -88361,6 +88303,19 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark/textured, /area/station/commons/dorms) +"ngf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "ngi" = ( /obj/structure/railing{ dir = 5 @@ -88689,6 +88644,22 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/service/chapel/funeral) +"njs" = ( +/obj/machinery/light_switch/directional/west, +/obj/effect/turf_decal/siding/blue{ + dir = 10 + }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/diagonal_edge, +/obj/structure/cable, +/obj/item/kirbyplants/random, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/dark/diagonal, +/area/station/medical/break_room) "njv" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green{ @@ -90466,6 +90437,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"nwZ" = ( +/obj/machinery/door/airlock/command{ + name = "E.V.A. Storage" + }, +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/eva, +/obj/effect/landmark/navigate_destination, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark/textured, +/area/station/ai_monitored/command/storage/eva) "nxa" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -90983,17 +90966,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/large, /area/station/service/theater) -"nBa" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/greenscreen_camera{ - dir = 8; - pixel_y = 4; - pixel_x = -4 - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/captain) "nBd" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 @@ -94253,26 +94225,6 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark/small, /area/station/service/theater) -"oaw" = ( -/obj/structure/table/glass, -/obj/structure/sign/poster/official/help_others/directional/north, -/obj/item/storage/medkit/regular, -/obj/item/storage/medkit/brute{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/brute, -/obj/item/storage/medkit/brute{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/machinery/door/window/left/directional/south{ - name = "First-Aid Supplies"; - req_access = list("medical") - }, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "oay" = ( /obj/effect/turf_decal/siding/wideplating_new/dark, /obj/structure/railing{ @@ -95460,16 +95412,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/command) -"oiG" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/table/wood, -/obj/structure/sign/clock/directional/north, -/obj/item/dice/d20, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/tile, -/area/station/science/breakroom) "oiJ" = ( /obj/effect/turf_decal/siding/purple, /obj/effect/turf_decal/trimline/purple/filled/line, @@ -96613,36 +96555,10 @@ dir = 4 }, /area/station/service/chapel/funeral) -"oqy" = ( -/obj/machinery/light_switch/directional/west, -/obj/effect/turf_decal/siding/blue{ - dir = 10 - }, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/diagonal_edge, -/obj/structure/cable, -/obj/item/kirbyplants/random, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/diagonal, -/area/station/medical/break_room) "oqE" = ( /obj/structure/chair/stool/directional/west, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"oqF" = ( -/obj/machinery/light_switch/directional/south, -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/stairs/right{ - dir = 8; - color = "#3d3e42" - }, -/area/station/engineering/engine_smes) "oqS" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -97836,6 +97752,16 @@ color = "#3d3e42" }, /area/station/command) +"ozX" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/item/reagent_containers/applicator/pill/happy{ + pixel_y = 11; + pixel_x = -8 + }, +/obj/machinery/iv_drip, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) "ozZ" = ( /obj/structure/sign/poster/random/directional/west, /obj/effect/spawner/random/structure/grille, @@ -99664,6 +99590,27 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/plastic, /area/station/security/prison/work) +"oOm" = ( +/obj/structure/table, +/obj/item/toy/cards/deck/blank{ + pixel_y = 3 + }, +/obj/item/toy/cards/deck{ + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/glass/mug/britcup{ + pixel_x = -7; + pixel_y = 9 + }, +/obj/effect/turf_decal/siding/blue{ + dir = 6 + }, +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/break_room) "oOr" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -100028,15 +99975,6 @@ }, /turf/open/floor/iron/dark/textured_half, /area/station/security/detectives_office) -"oQa" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Server Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/science/server) "oQc" = ( /obj/machinery/computer/prisoner/management{ dir = 1 @@ -103904,18 +103842,6 @@ /obj/structure/stairs/north, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"prP" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box/white{ - color = "#EFB341" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/event_spawn, -/obj/structure/cable/layer1, -/turf/open/floor/iron/dark/small, -/area/station/engineering/main) "prQ" = ( /turf/closed/wall/r_wall, /area/station/maintenance/starboard/aft) @@ -106315,6 +106241,21 @@ /obj/structure/cable, /turf/open/floor/iron/dark/textured, /area/station/security/prison) +"pIN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Cooling Loop Bypass" + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "pIR" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -106482,6 +106423,22 @@ /obj/effect/turf_decal/siding/thinplating_new/dark, /turf/open/floor/iron/dark/textured_large, /area/station/maintenance/starboard/central) +"pJU" = ( +/obj/machinery/door/airlock/research{ + glass = 1; + name = "Slime Euthanization Chamber"; + opacity = 0 + }, +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "pKf" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ @@ -106503,6 +106460,12 @@ /obj/machinery/computer/security, /turf/open/floor/iron/dark/textured, /area/station/security/checkpoint/science) +"pKm" = ( +/obj/structure/cable, +/obj/machinery/light/floor, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "pKt" = ( /obj/effect/turf_decal/siding/brown{ dir = 10 @@ -106568,16 +106531,6 @@ }, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) -"pKT" = ( -/obj/structure/closet/crate/freezer/blood, -/obj/effect/turf_decal/weather/snow/corner{ - dir = 9 - }, -/obj/machinery/iv_drip, -/obj/effect/turf_decal/weather/snow, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "pKX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/blue/filled/line, @@ -107585,21 +107538,6 @@ /obj/structure/marker_beacon/burgundy, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) -"pSg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Mix Bypass" - }, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "pSo" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/siding/thinplating_new/dark{ @@ -107727,22 +107665,6 @@ /obj/machinery/computer/crew, /turf/open/floor/carpet/blue, /area/station/command/heads_quarters/cmo) -"pTs" = ( -/obj/machinery/door/airlock/research{ - glass = 1; - name = "Slime Euthanization Chamber"; - opacity = 0 - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "pTz" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 5 @@ -108551,20 +108473,6 @@ /obj/structure/chair/sofa/bench/solo, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"qap" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable/layer1, -/turf/open/floor/iron/dark/textured_edge, -/area/station/engineering/engine_smes) "qar" = ( /obj/effect/spawner/random/vending/colavend, /turf/open/floor/plating, @@ -109852,14 +109760,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/engineering/lobby) -"qlC" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "qlJ" = ( /obj/structure/table/glass, /obj/item/food/grown/poppy/lily, @@ -110302,6 +110202,12 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/security/courtroom) +"qoZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/poster/official/safety_internals/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "qpa" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/siding/thinplating_new/dark, @@ -110530,18 +110436,6 @@ }, /turf/open/floor/carpet/red, /area/station/security/prison) -"qqM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/status_display/evac/directional/west, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "qqN" = ( /obj/structure/railing{ dir = 4 @@ -112526,6 +112420,18 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/central) +"qGH" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 9 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 6 + }, +/obj/item/reagent_containers/applicator/pill/stimulant, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/station/maintenance/starboard/fore) "qGI" = ( /obj/structure/rack, /obj/item/gun/energy/e_gun/dragnet{ @@ -114542,6 +114448,17 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/white/small, /area/station/commons/toilet/shower) +"qWC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "qWF" = ( /obj/effect/turf_decal/trimline/brown/filled/line, /obj/effect/turf_decal/siding/brown{ @@ -114594,6 +114511,15 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/office) +"qXn" = ( +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/turf/open/floor/plating, +/area/station/engineering/supermatter) "qXo" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/trimline/blue/warning{ @@ -114834,6 +114760,26 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"qYW" = ( +/obj/structure/table/glass, +/obj/structure/sign/poster/official/help_others/directional/north, +/obj/item/storage/medkit/regular, +/obj/item/storage/medkit/brute{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/brute, +/obj/item/storage/medkit/brute{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/door/window/left/directional/south{ + name = "First-Aid Supplies"; + req_access = list("medical") + }, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "qYX" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10 @@ -118138,6 +118084,14 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/wood/large, /area/station/command/corporate_suite) +"ryg" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "ryh" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -118591,6 +118545,27 @@ dir = 2 }, /area/station/hallway/secondary/exit/departure_lounge) +"rBY" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 10 + }, +/obj/structure/table, +/obj/item/toy/cards/deck/blank{ + pixel_y = 3 + }, +/obj/item/toy/cards/deck{ + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/glass/mug/britcup{ + pixel_x = -7; + pixel_y = 9 + }, +/obj/machinery/newscaster/directional/south, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/breakroom) "rCc" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/effect/turf_decal/siding/thinplating_new/dark/end{ @@ -120338,13 +120313,6 @@ }, /turf/open/floor/glass/reinforced, /area/station/hallway/secondary/entry) -"rOY" = ( -/obj/item/clipboard, -/obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/reagent_containers/pill/patch/aiuri, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/disposal/incinerator) "rPe" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -120798,6 +120766,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured, /area/station/security/prison) +"rSZ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Power Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/engine_smes) "rTd" = ( /mob/living/basic/butterfly, /obj/structure/flora/bush/fullgrass/style_random, @@ -121058,6 +121039,15 @@ }, /turf/open/floor/iron/dark/small, /area/station/service/theater) +"rVb" = ( +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable/layer1, +/turf/open/floor/plating, +/area/station/engineering/supermatter) "rVd" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -122112,21 +122102,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/commons/fitness/recreation/lasertag) -"sdi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Cooling Loop Bypass" - }, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "sdm" = ( /turf/closed/wall, /area/station/commons/vacant_room/commissary) @@ -122626,19 +122601,6 @@ /obj/structure/flora/grass/jungle/b/style_4, /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) -"sgS" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Power Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/cable/layer1, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/engine_smes) "sgU" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -124380,27 +124342,6 @@ /obj/structure/marker_beacon/lime, /turf/open/floor/grass, /area/station/hallway/secondary/entry) -"swT" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 10 - }, -/obj/structure/table, -/obj/item/toy/cards/deck/blank{ - pixel_y = 3 - }, -/obj/item/toy/cards/deck{ - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/glass/mug/britcup{ - pixel_x = -7; - pixel_y = 9 - }, -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) "swY" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -127253,13 +127194,6 @@ dir = 4 }, /area/station/engineering/break_room) -"sUh" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "sUj" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/curtain/cloth{ @@ -127462,6 +127396,16 @@ }, /turf/open/floor/iron/dark, /area/station/cargo/lower) +"sVY" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/structure/sign/clock/directional/north, +/obj/item/dice/d20, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/tile, +/area/station/science/breakroom) "sVZ" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 4 @@ -127858,6 +127802,18 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/warehouse) +"sYq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "sYw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -128151,6 +128107,20 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/dark, /area/station/science/breakroom) +"taX" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 6 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical, +/obj/item/reagent_containers/applicator/patch/aiuri, +/obj/item/clothing/glasses/meson, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_corner{ + dir = 1 + }, +/area/station/command/heads_quarters/ce) "taZ" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -130451,6 +130421,37 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, /area/station/security/courtroom) +"tsE" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/applicator/pill/lsd{ + pixel_y = 8; + pixel_x = 8 + }, +/obj/item/reagent_containers/cup/mortar{ + pixel_x = -4; + pixel_y = 11 + }, +/obj/effect/decal/cleanable/brimdust{ + plane = -7; + pixel_y = -7 + }, +/obj/item/implantcase/chem{ + pixel_y = -11; + pixel_x = -1 + }, +/obj/item/reagent_containers/cup/blastoff_ampoule{ + pixel_x = 7; + pixel_y = 2 + }, +/obj/item/reagent_containers/applicator/pill/lsd{ + pixel_x = -8 + }, +/obj/item/reagent_containers/applicator/pill/happy{ + pixel_y = -1 + }, +/obj/structure/sign/poster/official/plasma_effects/directional/north, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/bridge) "tsJ" = ( /obj/structure/chair/sofa/corp/right, /turf/open/floor/carpet/royalblue, @@ -133408,6 +133409,31 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/command) +"tMS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/machinery/button/door/directional/north{ + id = "capoffice"; + name = "Privacy Control"; + pixel_y = 26; + req_access = list("captain"); + pixel_x = -7 + }, +/obj/machinery/light/directional/north, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/keycard_auth/wall_mounted/directional/north{ + pixel_x = 6 + }, +/obj/machinery/light_switch/directional/north{ + pixel_y = 36; + pixel_x = -7 + }, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/captain) "tMT" = ( /obj/structure/sign/departments/medbay/alt/directional/west, /obj/machinery/light/directional/west, @@ -135166,12 +135192,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/cytology) -"uax" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/official/safety_internals/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "uaz" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -136680,14 +136700,6 @@ dir = 6 }, /area/station/maintenance/department/science) -"uoF" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/iron/dark/small, -/area/station/engineering/main) "uoH" = ( /obj/effect/turf_decal/siding/wood/corner, /obj/effect/turf_decal/siding/wood/corner{ @@ -137566,22 +137578,6 @@ /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/iron, /area/station/commons/dorms) -"uvR" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/closet{ - anchored = 1; - can_be_unanchored = 1; - name = "Cold protection gear" - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/storage/bag/xeno, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "uvU" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -139967,13 +139963,6 @@ }, /turf/open/floor/circuit/green, /area/station/cargo/bitrunning/den) -"uPH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/multilayer/connected, -/turf/open/floor/engine, -/area/station/engineering/supermatter) "uPK" = ( /obj/effect/turf_decal/tile/dark/diagonal_centre, /obj/structure/table/glass, @@ -140002,6 +139991,21 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/command/bridge) +"uPY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ + dir = 8 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "uQa" = ( /obj/effect/turf_decal/bot, /obj/machinery/mech_bay_recharge_port{ @@ -141097,17 +141101,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/security/armory) -"uXN" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/storage/box/monkeycubes{ - pixel_y = 10; - pixel_x = 0 - }, -/obj/item/flesh_shears{ - pixel_y = -5 - }, -/turf/open/floor/iron/dark/textured, -/area/station/science/genetics) "uXR" = ( /obj/effect/turf_decal/siding/wood/corner, /obj/effect/turf_decal/siding/wood{ @@ -144003,6 +143996,20 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"vrJ" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 5 + }, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown/diagonal_edge, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/diagonal, +/area/station/cargo/breakroom) "vrK" = ( /obj/effect/turf_decal/siding/wideplating_new/dark/corner{ dir = 4 @@ -145783,6 +145790,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/textured_large, /area/station/maintenance/starboard/central) +"vFl" = ( +/obj/structure/cable, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "vFn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -146090,14 +146102,6 @@ }, /turf/open/floor/carpet/red, /area/station/service/library/upper) -"vHM" = ( -/obj/machinery/light/directional/west, -/obj/structure/sign/poster/greenscreen/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/captain) "vHR" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -147200,6 +147204,19 @@ /obj/structure/sign/warning/electric_shock/directional/north, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"vRa" = ( +/obj/machinery/door/airlock/command{ + name = "E.V.A. Storage" + }, +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/eva, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark/textured, +/area/station/ai_monitored/command/storage/eva) "vRe" = ( /obj/structure/flora/grass/jungle/b/style_random, /obj/structure/flora/bush/lavendergrass/style_random, @@ -148383,18 +148400,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"waK" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "waN" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/carpet/neon/simple/red/nodots, @@ -148756,6 +148761,18 @@ }, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) +"wdx" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/item/radio/intercom/directional/south, +/obj/structure/secure_safe/directional/west, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/captain) "wdz" = ( /obj/effect/turf_decal/siding/purple{ dir = 1 @@ -149947,18 +149964,6 @@ "wmR" = ( /turf/closed/wall, /area/station/security/prison/rec) -"wmS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/obj/machinery/power/terminal{ - dir = 1; - cable_layer = 1 - }, -/obj/structure/cable/multilayer/layer1, -/turf/open/floor/iron/dark/textured_corner, -/area/station/engineering/engine_smes) "wmV" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/thinplating_new/dark{ @@ -150388,12 +150393,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/checkpoint/science) -"wqS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "wrb" = ( /obj/effect/turf_decal/trimline/green/line{ dir = 1 @@ -151306,18 +151305,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/cryo) -"wys" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/structure/cable/layer1, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "wyv" = ( /obj/effect/turf_decal/siding/wideplating_new/dark{ dir = 5 @@ -152755,18 +152742,6 @@ /obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/engine/o2, /area/station/engineering/atmos) -"wJF" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 9 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 6 - }, -/obj/item/reagent_containers/pill/stimulant, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/maintenance/starboard/fore) "wJM" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -153133,6 +153108,15 @@ /obj/effect/turf_decal/trimline/dark_blue/filled/line, /turf/open/floor/iron/dark, /area/station/hallway/secondary/command) +"wMW" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Server Access" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/science/server) "wMY" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 @@ -153708,6 +153692,18 @@ /obj/effect/turf_decal/siding/wideplating_new/dark/corner, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) +"wRm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ + dir = 8 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "wRq" = ( /obj/effect/turf_decal/tile/green/half/contrasted, /obj/structure/extinguisher_cabinet/directional/south, @@ -154348,19 +154344,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"wWV" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/chair/office, -/obj/effect/landmark/start/station_engineer, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_edge, -/area/station/engineering/engine_smes) "wWX" = ( /obj/effect/turf_decal/box/white{ color = "#EFB341" @@ -154487,22 +154470,6 @@ }, /turf/open/floor/wood/tile, /area/station/service/barber) -"wYn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/power/terminal{ - dir = 1; - cable_layer = 1 - }, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 - }, -/obj/structure/cable/multilayer/layer1, -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 - }, -/area/station/engineering/engine_smes) "wYD" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /obj/effect/turf_decal/trimline/dark/line, @@ -157652,6 +157619,14 @@ /obj/effect/mapping_helpers/airlock/access/any/medical/pharmacy, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"xxw" = ( +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/siding/dark/corner, +/obj/effect/turf_decal/siding/brown{ + dir = 9 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/breakroom) "xxx" = ( /turf/closed/wall/r_wall, /area/station/engineering/break_room) @@ -158287,6 +158262,16 @@ icon_state = "asteroid6" }, /area/space/nearstation) +"xCl" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "xCp" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -158487,6 +158472,18 @@ }, /turf/open/floor/carpet/red, /area/station/service/library) +"xEe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "xEf" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 4 @@ -158972,14 +158969,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/command) -"xHO" = ( -/obj/effect/turf_decal/trimline/dark/filled/warning{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark/textured, -/area/station/tcommsat/computer) "xIb" = ( /obj/structure/chair/stool/directional/north, /obj/structure/cable, @@ -161284,6 +161273,14 @@ }, /turf/open/floor/iron/dark/small, /area/station/engineering/lobby) +"xZu" = ( +/obj/machinery/light/directional/west, +/obj/structure/sign/poster/greenscreen/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/captain) "xZv" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -189426,7 +189423,7 @@ jmM fmF fkl sIr -kAP +bQZ qUF pni gJT @@ -191314,13 +191311,13 @@ jkx kfv tOw crD -lcj -sUh -btt -wys -lXK -fSm -sdi +vFl +cvs +wRm +bwB +gog +uPY +pIN tOn vpy auH @@ -191571,13 +191568,13 @@ jkx kfv tOw dlK -wqS +aKg bCK uey ulv kAw lVf -jWj +rVb lVf kAw lxu @@ -191828,13 +191825,13 @@ jkx kfv tOw cph -lcj +vFl wYS hgl qsg bdQ rPe -jhk +lhH eFE bdQ sEh @@ -192085,7 +192082,7 @@ iMt biK ukX lxu -lcj +vFl enK jCi bdQ @@ -192342,7 +192339,7 @@ aeH bgZ tOw cQB -lcj +vFl tTQ iHt rxz @@ -192592,14 +192589,14 @@ dRq lTZ rZf klq -qap -sgS -iTP -prP -uoF -waK -aAr -fXN +bXm +rSZ +iaT +jPE +hxT +sYq +ngf +pKm wVg mxI mHv @@ -192847,16 +192844,16 @@ kOX ydo sSi vAu -bHp -cmm -cwz +arT +hYv +eeJ dNf cuJ eZB kLF tOw jAZ -lcj +vFl cOW kur wyA @@ -193104,8 +193101,8 @@ pJz ydo rdK rdK -kfz -oqF +dkC +mGy rdK rdK fvH @@ -193113,7 +193110,7 @@ far qZM ukX pZH -lcj +vFl ndZ bdQ cfF @@ -193361,8 +193358,8 @@ xPY fYj rdK xzI -wmS -aUK +kYc +aBN rZz dNf eUC @@ -193370,13 +193367,13 @@ jkx wMG tOw cGI -lcj +vFl wJr lMi sHI bdQ uja -uPH +jto rSs bdQ sFX @@ -193618,8 +193615,8 @@ uLL uLL uLL cYI -gYy -wWV +ggu +cCl jcd dNf wUV @@ -193627,13 +193624,13 @@ jkx wMG tOw fJo -cPK +gOY tez fEO bqa dSJ pXt -lDF +qXn pXt dSJ efA @@ -193875,7 +193872,7 @@ hMV biS fxz xzI -wYn +jHL inC ork dNf @@ -193884,13 +193881,13 @@ jkx wMG tOw kFZ -lcj -qlC -cHP -bTC -qqM -eax -pSg +vFl +ryg +kjC +qWC +xEe +lzt +bmQ ohl ylC gcj @@ -194327,7 +194324,7 @@ aQS tAD rMq rlC -oqy +njs pUf lpQ phC @@ -195359,7 +195356,7 @@ wRj bYc eBs ssE -lpf +oOm pUf wdQ oSe @@ -195593,7 +195590,7 @@ hie avd rPF wQU -kAF +xxw lUV iEv rPF @@ -195711,7 +195708,7 @@ nNY gDR haa rzg -rOY +bGy srs qhF wZg @@ -196384,7 +196381,7 @@ wJb avT wJb tAV -oiG +sVY eJe mpN tAV @@ -196882,7 +196879,7 @@ ohT frt jTe rPF -bMm +vrJ sfL xPT tAD @@ -197415,7 +197412,7 @@ rIf gzR taT rMy -swT +rBY rCK vjO eQL @@ -198002,7 +197999,7 @@ feH kvl diw mkJ -ftW +taX sBb ybK diw @@ -198439,7 +198436,7 @@ wRM wRM cTP gil -dqm +duO rCK ycE eBu @@ -198972,7 +198969,7 @@ dPx bDj aww pFk -hcd +duN hKz ecV utW @@ -199205,7 +199202,7 @@ cWB hrq wRM kCp -oQa +wMW pzy pzy bEv @@ -200267,7 +200264,7 @@ iIS hDC rdS kLD -pTs +pJU mWe aVa sFf @@ -201542,7 +201539,7 @@ dPx lYs aww abQ -uvR +cVl kAd vCn gtg @@ -208751,7 +208748,7 @@ aeM wOF aeM aeM -kgO +tsE dBT oeu lGf @@ -208763,7 +208760,7 @@ hkO kNu xUj doo -fuB +aov vNk hkD sIZ @@ -209017,7 +209014,7 @@ wBq wBq wBq wBq -mpv +tMS szi isA szi @@ -209280,8 +209277,8 @@ qRh kfA ngm rKa -vHM -kUS +xZu +wdx wBq wBq gym @@ -209532,12 +209529,12 @@ baE kfA sir rjQ -jBr +hzc sxZ nRL qCb kZT -nBa +mrF bUG pem wBq @@ -250635,7 +250632,7 @@ aKY rcu rcu rcu -dMb +lKR rcu rcu rcu @@ -252211,7 +252208,7 @@ azX naa pRJ nlG -blI +gJi naa fQl oth @@ -252434,7 +252431,7 @@ qXt xRu hCZ hCZ -iAU +eNz hCZ hCZ hdF @@ -255491,7 +255488,7 @@ lfg qDD nZD kLa -oaw +qYW nJX eww mKj @@ -255748,7 +255745,7 @@ kLa kLa kLa kLa -cxP +dmm nJX eww tJb @@ -256506,8 +256503,8 @@ xZG jXs qFJ rbZ -iRa -bXj +jvk +ozX mPK qhK ncT @@ -256763,8 +256760,8 @@ qOf awX qFJ jeQ -gSs -gFN +joD +hkq iZG gzE jFG @@ -258135,7 +258132,7 @@ jQi jKq fIN tAf -fZB +lgC dZR wFD cyW @@ -258600,7 +258597,7 @@ okM tok eAi eAi -dIG +fMS eAi hCZ xnQ @@ -258856,7 +258853,7 @@ bHh ewO jfq eAi -pKT +hky qAi mRt hCZ @@ -259115,7 +259112,7 @@ bhZ eAi mqk kEP -koa +hPy hCZ kSE iMw @@ -259371,7 +259368,7 @@ kRJ mUr hCZ hCZ -eyq +xCl hCZ hCZ aXm @@ -259628,7 +259625,7 @@ aWl oPA hCZ iae -uax +qoZ rdE ktw wBm @@ -259671,7 +259668,7 @@ bFB kDP kDP fSq -xHO +haA fSq cOO fBa @@ -263201,7 +263198,7 @@ ybp mQH lLq ovo -uXN +kAu gBq wLX pxd @@ -269139,7 +269136,7 @@ mVU bWz cOp fgX -wJF +qGH xpl hlM gCT @@ -279435,7 +279432,7 @@ aZM xMF caQ sss -lkP +nwZ ans fKQ aiq @@ -280977,7 +280974,7 @@ aZM bAt dVu lBi -gWt +vRa cvK lYI nuK diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index c091bd97c73..b2d1391750a 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -639,10 +639,6 @@ /obj/structure/sign/poster/random/directional/east, /turf/open/floor/iron/smooth_large, /area/centcom/central_command_areas/evacuation/ship) -"cU" = ( -/obj/structure/sign/poster/greenscreen/directional/south, -/turf/open/floor/greenscreen, -/area/centcom/tdome/administration) "cV" = ( /obj/effect/landmark/thunderdome/one, /obj/effect/turf_decal/stripes/line{ @@ -2245,10 +2241,6 @@ /obj/structure/closet/wardrobe/cargotech, /turf/open/floor/iron, /area/centcom/central_command_areas/supply) -"jR" = ( -/obj/structure/chair/stool/directional/south, -/turf/open/floor/iron/grimy, -/area/centcom/tdome/administration) "jU" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/computer, @@ -2863,6 +2855,12 @@ /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron, /area/centcom/central_command_areas/ferry) +"ni" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/greenscreen, +/area/centcom/tdome/administration) "nj" = ( /obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/tile/bar/opposingcorners, @@ -3783,11 +3781,6 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/ferry) -"ro" = ( -/obj/machinery/newscaster/directional/north, -/obj/structure/chair, -/turf/open/floor/iron/grimy, -/area/centcom/tdome/administration) "rq" = ( /obj/machinery/light/floor, /obj/effect/turf_decal/tile/dark_blue/fourcorners, @@ -5115,13 +5108,6 @@ }, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/evacuation/ship) -"wW" = ( -/obj/structure/sign/flag/nanotrasen/directional/west, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/turf/open/floor/greenscreen, -/area/centcom/tdome/administration) "wX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 8 @@ -5262,10 +5248,20 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/centcom/tdome/observation) +"xK" = ( +/obj/item/radio/intercom/directional/north, +/obj/structure/chair, +/turf/open/floor/iron/grimy, +/area/centcom/tdome/administration) "xN" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/centcom/central_command_areas/control) +"xQ" = ( +/obj/machinery/newscaster/directional/north, +/obj/structure/chair, +/turf/open/floor/iron/grimy, +/area/centcom/tdome/administration) "xR" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -5570,6 +5566,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/courtroom) +"zd" = ( +/obj/structure/sign/flag/nanotrasen/directional/east, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/greenscreen, +/area/centcom/tdome/administration) "zf" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, @@ -6727,6 +6730,10 @@ }, /turf/open/floor/iron/grimy, /area/centcom/central_command_areas/admin) +"Eo" = ( +/obj/structure/chair/stool/directional/south, +/turf/open/floor/iron/grimy, +/area/centcom/tdome/administration) "Eq" = ( /obj/structure/chair/stool/bar/directional/east, /obj/effect/decal/cleanable/dirt, @@ -6855,14 +6862,6 @@ /obj/effect/light_emitter/podbay, /turf/open/floor/iron, /area/centcom/central_command_areas/supplypod/loading/one) -"ER" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/door/airlock/centcom{ - name = "Sound Stage" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/centcom/tdome/administration) "EV" = ( /obj/structure/table/wood, /obj/machinery/microwave{ @@ -6911,10 +6910,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/centcom/central_command_areas/ferry) -"Fi" = ( -/obj/effect/landmark/basketball/game_area, -/turf/open/space/basic, -/area/space) "Fj" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ @@ -6966,12 +6961,6 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/grimy, /area/centcom/central_command_areas/courtroom) -"Fy" = ( -/obj/machinery/greenscreen_camera{ - name = "centcom-caster" - }, -/turf/open/floor/iron/grimy, -/area/centcom/tdome/administration) "Fz" = ( /obj/item/kirbyplants/organic/plant22, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -7105,12 +7094,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/centcom/central_command_areas/admin/storage) -"Gy" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/turf/open/floor/greenscreen, -/area/centcom/tdome/administration) "GB" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/effect/turf_decal/stripes/line, @@ -7554,6 +7537,10 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/dark/textured_large, /area/centcom/central_command_areas/evacuation/ship) +"JI" = ( +/obj/structure/sign/poster/greenscreen/directional/south, +/turf/open/floor/greenscreen, +/area/centcom/tdome/administration) "JJ" = ( /obj/structure/table/wood, /obj/item/storage/fancy/donut_box, @@ -7612,9 +7599,10 @@ /obj/effect/mapping_helpers/airlock/access/all/admin/captain, /turf/open/floor/iron, /area/centcom/central_command_areas/admin) -"Kg" = ( -/obj/item/radio/intercom/directional/north, -/obj/structure/chair, +"Kk" = ( +/obj/machinery/greenscreen_camera{ + name = "centcom-caster" + }, /turf/open/floor/iron/grimy, /area/centcom/tdome/administration) "Ko" = ( @@ -7687,6 +7675,12 @@ /obj/effect/light_emitter/thunderdome, /turf/open/floor/iron, /area/centcom/tdome/arena) +"KM" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/machinery/light/cold/directional/north, +/obj/structure/chair, +/turf/open/floor/iron/grimy, +/area/centcom/tdome/administration) "KN" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/structure/flora/bush/lavendergrass/style_random, @@ -7881,6 +7875,14 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/evacuation) +"Ly" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/door/airlock/centcom{ + name = "Sound Stage" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/centcom/tdome/administration) "Lz" = ( /obj/structure/railing{ dir = 10 @@ -9254,12 +9256,6 @@ }, /turf/open/floor/iron/white, /area/centcom/central_command_areas/control) -"RA" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/machinery/light/cold/directional/north, -/obj/structure/chair, -/turf/open/floor/iron/grimy, -/area/centcom/tdome/administration) "RB" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -9917,13 +9913,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/admin) -"UU" = ( -/obj/structure/sign/flag/nanotrasen/directional/east, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/turf/open/floor/greenscreen, -/area/centcom/tdome/administration) "UV" = ( /obj/structure/table/wood, /obj/item/folder/red, @@ -10621,6 +10610,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/iron/grimy, /area/centcom/central_command_areas/admin) +"Yu" = ( +/obj/structure/sign/flag/nanotrasen/directional/west, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/greenscreen, +/area/centcom/tdome/administration) "Yx" = ( /turf/open/floor/iron/white/herringbone, /area/centcom/central_command_areas/evacuation/ship) @@ -36282,7 +36278,7 @@ aa aa aa aa -Fi +aa aa aa aa @@ -57915,7 +57911,7 @@ ZS sK GX wl -iu +io vR Ab Ab @@ -57960,10 +57956,10 @@ uf Mv Mv uf -Kg +xK Xw -wW -cU +Yu +JI uf aa aa @@ -58217,10 +58213,10 @@ Sz Sz Sz uf -RA +KM Xw -Gy -cU +ni +JI uf aa aa @@ -58473,11 +58469,11 @@ Sz Sz Sz Sz -ER +Ly Xw -Fy -Gy -cU +Kk +ni +JI uf aa aa @@ -58731,10 +58727,10 @@ Sz uf FU uf -RA -jR -Gy -cU +KM +Eo +ni +JI uf aa aa @@ -58988,10 +58984,10 @@ Sz uf Sz uf -ro +xQ Xw -UU -cU +zd +JI uf aa aa diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 67f163d271c..ddbb4ff6dfd 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -873,18 +873,6 @@ }, /turf/open/floor/plating, /area/station/asteroid) -"add" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail{ - dir = 1 - }, -/obj/effect/mapping_helpers/mail_sorting/science/genetics, -/obj/effect/mapping_helpers/mail_sorting/science/rd_office, -/obj/effect/mapping_helpers/mail_sorting/science/research, -/obj/effect/mapping_helpers/mail_sorting/science/robotics, -/obj/effect/mapping_helpers/mail_sorting/science/xenobiology, -/turf/open/floor/iron, -/area/station/hallway/primary/tram/right) "ade" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/stripes/asteroid/line{ @@ -1458,17 +1446,6 @@ /obj/structure/railing, /turf/open/floor/plating/airless, /area/station/asteroid) -"aeN" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/freezer{ - name = "Freezer" - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor, -/area/station/service/kitchen/coldroom) "aeO" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/railing/corner{ @@ -3813,15 +3790,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/cargo/warehouse) -"ayn" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "ayr" = ( /obj/effect/landmark/start/cargo_technician, /turf/open/floor/iron, @@ -3970,6 +3938,19 @@ }, /turf/open/floor/iron/dark, /area/station/commons/lounge) +"aAF" = ( +/obj/structure/bed{ + dir = 4 + }, +/obj/item/bedsheet/captain{ + dir = 4 + }, +/obj/structure/sign/clock/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Command - Captain's Quarters" + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "aAJ" = ( /turf/open/floor/carpet, /area/station/command/heads_quarters/qm) @@ -4641,11 +4622,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/science/lower) -"aHb" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "aHe" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door_buttons/airlock_controller{ @@ -4932,13 +4908,6 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/medical) -"aJf" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "aJi" = ( /obj/machinery/washing_machine, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -6703,6 +6672,13 @@ }, /turf/open/floor/iron, /area/station/escapepodbay) +"bmW" = ( +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/iron, +/area/station/cargo/storage) "bmX" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -7081,14 +7057,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/wood, /area/station/command/meeting_room) -"bvA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/brown/opposingcorners, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/cargo/miningfoundry) "bvB" = ( /obj/structure/ladder, /obj/effect/turf_decal/stripes/box, @@ -7118,14 +7086,6 @@ /obj/machinery/computer/mech_bay_power_console, /turf/open/floor/circuit/green, /area/station/science/robotics/mechbay) -"bwi" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/closet/secure_closet/captains, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain/private) "bwp" = ( /obj/structure/lattice/catwalk, /obj/machinery/power/solar{ @@ -7167,13 +7127,6 @@ /obj/effect/turf_decal/tile/brown/fourcorners, /turf/open/floor/iron, /area/station/cargo/miningdock) -"bwN" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/light/warm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain/private) "bwO" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 10 @@ -7687,15 +7640,6 @@ /obj/machinery/computer/security/telescreen/ordnance/directional/south, /turf/open/floor/iron, /area/station/science/ordnance/testlab) -"bGV" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/structure/table, -/obj/item/stack/sheet/cardboard, -/obj/item/food/donkpocket/pizza, -/turf/open/floor/iron/dark, -/area/station/medical/virology) "bHb" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 8 @@ -8741,6 +8685,11 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/qm) +"bXE" = ( +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "bXG" = ( /obj/effect/turf_decal/sand/plating, /obj/machinery/door/airlock/external{ @@ -10943,6 +10892,15 @@ "cIX" = ( /turf/open/floor/plating, /area/station/engineering/engine_smes) +"cJj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain/private) "cJm" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 @@ -11096,6 +11054,12 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"cNe" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/freezer/blood, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "cNg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11193,18 +11157,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/port/central) -"cOg" = ( -/obj/machinery/door/airlock/command/glass{ - name = "EVA Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/eva, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) "cOl" = ( /obj/machinery/computer/prisoner/management{ dir = 8 @@ -11285,22 +11237,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"cPA" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Freezer" - }, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/freezer, -/area/station/medical/coldroom) "cPD" = ( /obj/machinery/computer/atmos_control/air_tank{ dir = 1 @@ -11566,12 +11502,6 @@ /obj/machinery/vending/assist, /turf/open/floor/iron, /area/station/commons/storage/primary) -"cTw" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "cTM" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -11713,6 +11643,13 @@ "cVW" = ( /turf/open/floor/engine, /area/station/science/auxlab/firing_range) +"cWd" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 6 + }, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit) "cWj" = ( /obj/structure/railing{ dir = 1 @@ -12449,12 +12386,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/engineering/main) -"djh" = ( -/obj/structure/closet{ - name = "evidence closet 4" - }, -/turf/open/floor/iron/dark, -/area/station/security/evidence) "djt" = ( /obj/effect/turf_decal/siding/thinplating/corner{ dir = 1 @@ -13372,29 +13303,6 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/qm) -"dAJ" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/siding/white, -/obj/machinery/door/window/right/directional/east{ - name = "Secure Medical Storage"; - req_access = list("medical") - }, -/obj/item/storage/medkit/regular{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/storage/medkit/regular, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "dAL" = ( /obj/structure/closet/crate/silvercrate, /obj/effect/turf_decal/bot_white/right, @@ -13452,18 +13360,6 @@ /obj/machinery/light/warm/directional/west, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) -"dCp" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Recording Studio" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain/private) "dCq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -13562,20 +13458,18 @@ }, /turf/open/floor/iron/smooth, /area/station/maintenance/disposal) -"dEo" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/filled/corner, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/tram/right) "dEv" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/security/armory) +"dEz" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/spawner/random/contraband/narcotics, +/obj/structure/closet{ + name = "evidence closet 3" + }, +/turf/open/floor/iron/dark, +/area/station/security/evidence) "dEH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ @@ -13885,12 +13779,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"dJG" = ( -/obj/effect/turf_decal/bot, -/obj/structure/closet/crate/freezer/blood, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "dJJ" = ( /turf/closed/wall, /area/station/hallway/secondary/service) @@ -14187,6 +14075,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"dOO" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/sorting/mail{ + dir = 1 + }, +/obj/effect/mapping_helpers/mail_sorting/science/genetics, +/obj/effect/mapping_helpers/mail_sorting/science/rd_office, +/obj/effect/mapping_helpers/mail_sorting/science/research, +/obj/effect/mapping_helpers/mail_sorting/science/robotics, +/obj/effect/mapping_helpers/mail_sorting/science/xenobiology, +/turf/open/floor/iron, +/area/station/hallway/primary/tram/right) "dPe" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -15382,13 +15282,6 @@ /obj/structure/rack, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"elM" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "elV" = ( /obj/machinery/duct, /obj/structure/cable, @@ -15580,6 +15473,28 @@ /obj/effect/landmark/navigate_destination/tcomms, /turf/open/floor/iron, /area/station/tcommsat/computer) +"eql" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/item/storage/medkit/fire{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/fire, +/obj/item/storage/medkit/fire{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/door/window/left/directional/west{ + name = "Secure Medical Storage"; + req_access = list("medical") + }, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "eqK" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -15649,6 +15564,22 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"erW" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Hallway - Starboard Tram Platform North-East" + }, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/tram/right) "esc" = ( /obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall, @@ -16024,12 +15955,6 @@ /obj/effect/turf_decal/trimline/white/warning, /turf/open/floor/iron, /area/station/maintenance/tram/left) -"eyg" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "eyh" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -16250,6 +16175,12 @@ }, /turf/open/floor/iron, /area/station/security/prison) +"eBZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain/private) "eCk" = ( /obj/machinery/door/airlock/public/glass{ name = "Library" @@ -16817,6 +16748,11 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) +"eOR" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "eOZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply, /turf/closed/wall/r_wall, @@ -17242,25 +17178,6 @@ /obj/machinery/shower/directional/north, /turf/open/floor/iron/freezer, /area/station/security/prison) -"eWs" = ( -/obj/structure/table/reinforced, -/obj/item/storage/medkit/o2{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/o2, -/obj/item/storage/medkit/o2{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/machinery/door/window/left/directional/south{ - name = "Secure Medical Storage"; - req_access = list("medical") - }, -/obj/machinery/light/cold/directional/north, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "eWx" = ( /obj/machinery/duct, /obj/effect/turf_decal/trimline/neutral/filled/line, @@ -18293,6 +18210,13 @@ }, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) +"fqH" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/structure/sign/poster/greenscreen/directional/east, +/turf/open/floor/greenscreen, +/area/station/command/heads_quarters/captain/private) "fqM" = ( /obj/structure/disposaloutlet{ dir = 8 @@ -18738,13 +18662,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"fzc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/filingcabinet/security{ - pixel_x = -6 - }, -/turf/open/floor/iron/dark, -/area/station/security/evidence) "fzg" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/layer2{ dir = 1 @@ -20441,6 +20358,13 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel) +"gha" = ( +/obj/structure/dresser, +/obj/item/pinpointer/nuke, +/obj/item/disk/nuclear, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "ghg" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, @@ -20515,28 +20439,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/tram/right) -"giT" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/item/storage/medkit/brute{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/brute, -/obj/item/storage/medkit/brute{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/machinery/door/window/right/directional/east{ - name = "Secure Medical Storage"; - req_access = list("medical") - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "giZ" = ( /obj/structure/bed, /obj/effect/spawner/random/contraband/prison, @@ -20692,6 +20594,13 @@ /obj/machinery/power/shieldwallgen, /turf/open/floor/iron, /area/station/command/teleporter) +"gkV" = ( +/obj/machinery/suit_storage_unit/captain, +/obj/structure/sign/calendar/directional/north, +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain/private) "gkZ" = ( /obj/machinery/door/airlock/medical/glass{ name = "Treatment Center" @@ -20829,6 +20738,20 @@ }, /turf/closed/wall/r_wall, /area/station/science/xenobiology) +"gmX" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Secure External Operations" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/eva, +/obj/effect/mapping_helpers/airlock/access/any/command/gateway, +/obj/effect/mapping_helpers/airlock/access/any/command/teleporter, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron, +/area/station/command/teleporter) "gnj" = ( /obj/modular_map_root/tramstation{ name = "medsciupper"; @@ -21766,6 +21689,28 @@ }, /turf/open/floor/iron/white, /area/station/science/research) +"gFb" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/item/storage/medkit/brute{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/brute, +/obj/item/storage/medkit/brute{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/door/window/right/directional/east{ + name = "Secure Medical Storage"; + req_access = list("medical") + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "gFf" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/hallway) @@ -22764,13 +22709,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/security/checkpoint/science) -"gYO" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) "gZB" = ( /obj/effect/landmark/start/station_engineer, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24151,6 +24089,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) +"hDz" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/tlv_cold_room, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "hDF" = ( /obj/machinery/computer/apc_control{ dir = 1 @@ -25144,6 +25089,23 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/radshelter/civil) +"hXo" = ( +/obj/structure/rack, +/obj/item/clothing/glasses/meson{ + pixel_y = 4 + }, +/obj/item/lighter, +/obj/item/reagent_containers/applicator/patch/aiuri, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/item/computer_disk/engineering, +/obj/item/computer_disk/engineering, +/obj/item/computer_disk/engineering, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "hXJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/status_display/ai/directional/north, @@ -26148,6 +26110,27 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"iqT" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/tram/right) +"iqW" = ( +/obj/effect/turf_decal/box/white{ + color = "#52B4E9" + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/light_switch/directional/east{ + pixel_x = 22; + pixel_y = -8 + }, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "iqZ" = ( /obj/structure/railing, /obj/machinery/door/window/right/directional/north{ @@ -27086,31 +27069,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/engine_smes) -"iIS" = ( -/obj/structure/sign/directions/evac{ - dir = 4; - pixel_y = -28 - }, -/obj/structure/sign/directions/medical{ - dir = 8; - pixel_y = -34 - }, -/obj/structure/sign/directions/engineering{ - dir = 8; - pixel_y = -40 - }, -/obj/structure/sign/directions/upload{ - pixel_y = -22 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/tram/filled/line, -/obj/effect/turf_decal/trimline/tram/filled/warning, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/tram/right) "iJd" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 4 @@ -27146,6 +27104,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/virology) +"iKh" = ( +/obj/machinery/greenscreen_camera{ + dir = 4; + pixel_y = 7; + pixel_x = 7 + }, +/obj/machinery/light/warm/directional/west, +/obj/structure/sign/flag/nanotrasen/directional/west, +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain/private) "iKr" = ( /obj/effect/turf_decal/bot_white/left, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -27202,6 +27171,12 @@ }, /turf/open/floor/wood, /area/station/service/bar/backroom) +"iLy" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/light/cold/directional/west, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "iLP" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/stripes/asteroid/box, @@ -27251,15 +27226,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/dorms) -"iMo" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/spawner/random/contraband/narcotics, -/obj/structure/closet{ - name = "evidence closet 3" - }, -/turf/open/floor/iron/dark, -/area/station/security/evidence) "iMt" = ( /obj/machinery/air_sensor/oxygen_tank{ chamber_id = "o2ordance" @@ -27982,28 +27948,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/medical/medbay/lobby) -"iZi" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/item/storage/medkit/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/toxin, -/obj/item/storage/medkit/toxin{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/machinery/door/window/right/directional/east{ - name = "Secure Medical Storage"; - req_access = list("medical") - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "iZk" = ( /obj/machinery/vending/wardrobe/chap_wardrobe, /obj/machinery/camera/directional/south{ @@ -28709,12 +28653,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"jko" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain/private) "jkt" = ( /turf/open/floor/carpet, /area/station/service/chapel) @@ -29499,11 +29437,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/brig) -"jwW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain/private) "jwX" = ( /obj/structure/railing{ dir = 1 @@ -30766,13 +30699,6 @@ /obj/effect/spawner/random/bureaucracy/pen, /turf/open/floor/iron, /area/station/commons/fitness) -"jWd" = ( -/obj/structure/dresser, -/obj/item/pinpointer/nuke, -/obj/item/disk/nuclear, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain/private) "jWe" = ( /obj/machinery/vending/wardrobe/medi_wardrobe, /obj/effect/turf_decal/siding/white{ @@ -30828,6 +30754,11 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/security/mechbay) +"jWz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "jXc" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 8 @@ -31480,6 +31411,18 @@ /obj/effect/mapping_helpers/requests_console/assistance, /turf/open/floor/iron, /area/station/command/heads_quarters/rd) +"kep" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/chair/stool/directional/east, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain/private) +"ker" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain/private) "ket" = ( /obj/machinery/vending/wardrobe/atmos_wardrobe, /turf/open/floor/iron, @@ -31511,23 +31454,6 @@ /obj/structure/cable, /turf/open/floor/carpet, /area/station/security/detectives_office) -"keT" = ( -/obj/machinery/door/airlock/research{ - name = "Slime Euthanization Chamber"; - opacity = 0; - glass = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "kff" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 9 @@ -32109,6 +32035,25 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/checkpoint/science) +"kpx" = ( +/obj/structure/table/reinforced, +/obj/item/storage/medkit/o2{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/o2, +/obj/item/storage/medkit/o2{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/door/window/left/directional/south{ + name = "Secure Medical Storage"; + req_access = list("medical") + }, +/obj/machinery/light/cold/directional/north, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "kpC" = ( /obj/structure/chair/comfy/beige{ dir = 4 @@ -32689,12 +32634,6 @@ }, /turf/open/floor/cult, /area/station/service/chapel/office) -"kAx" = ( -/obj/effect/turf_decal/bot, -/obj/structure/closet/crate/freezer/surplus_limbs, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "kAF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -33297,6 +33236,13 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/circuit/green, /area/station/science/server) +"kJP" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/station/commons/vacant_room/office) "kJU" = ( /obj/structure/chair/comfy/beige, /turf/open/floor/iron/grimy, @@ -33647,14 +33593,6 @@ "kPE" = ( /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) -"kPL" = ( -/obj/effect/spawner/random/contraband/cannabis, -/obj/structure/closet{ - name = "evidence closet 1" - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/evidence) "kPT" = ( /obj/vehicle/ridden/wheelchair, /obj/effect/turf_decal/bot, @@ -35876,18 +35814,6 @@ /obj/machinery/digital_clock/directional/north, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"lDl" = ( -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" - }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/light_switch/directional/east{ - pixel_x = 22; - pixel_y = 8 - }, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "lDo" = ( /obj/structure/table, /obj/item/storage/box/prisoner, @@ -36185,20 +36111,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/smooth, /area/station/maintenance/disposal) -"lIc" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Secure External Operations" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/eva, -/obj/effect/mapping_helpers/airlock/access/any/command/gateway, -/obj/effect/mapping_helpers/airlock/access/any/command/teleporter, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron, -/area/station/command/teleporter) "lIe" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37195,13 +37107,6 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/tcoms, /turf/open/floor/iron, /area/station/tcommsat/computer) -"lXZ" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "lYA" = ( /obj/structure/easel, /obj/item/canvas/twentythree_twentythree, @@ -37217,6 +37122,18 @@ }, /turf/open/floor/iron, /area/station/commons/storage/art) +"lYN" = ( +/obj/effect/turf_decal/trimline/dark_green/filled/line{ + dir = 9 + }, +/obj/structure/table/glass, +/obj/machinery/requests_console/directional/west{ + name = "Genetics Requests Console"; + department = "Genetics" + }, +/obj/item/flesh_shears, +/turf/open/floor/iron/white, +/area/station/science/genetics) "lYZ" = ( /obj/structure/toilet{ pixel_y = 8 @@ -37290,14 +37207,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/exit) -"mar" = ( -/obj/structure/fluff/tram_rail/electric{ - dir = 1 - }, -/obj/structure/transport/linear/tram, -/obj/structure/thermoplastic, -/turf/open/openspace, -/area/station/hallway/primary/tram/center) "may" = ( /turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) @@ -38387,13 +38296,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"mur" = ( -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/cargo/storage) "muK" = ( /obj/machinery/telecomms/server/presets/science, /turf/open/floor/iron/dark/telecomms, @@ -38565,23 +38467,6 @@ /obj/machinery/light/dim/directional/east, /turf/open/floor/iron, /area/station/maintenance/port/central) -"mzi" = ( -/obj/structure/rack, -/obj/item/clothing/glasses/meson{ - pixel_y = 4 - }, -/obj/item/lighter, -/obj/item/reagent_containers/pill/patch/aiuri, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/item/computer_disk/engineering, -/obj/item/computer_disk/engineering, -/obj/item/computer_disk/engineering, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "mzs" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -38649,16 +38534,6 @@ /obj/structure/cable, /turf/open/space/openspace, /area/station/solars/port) -"mAL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/door/airlock/command/glass{ - name = "Server Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/structure/cable, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/circuit/telecomms/server, -/area/station/science/server) "mAS" = ( /obj/structure/table/reinforced, /obj/item/paper_bin{ @@ -39262,13 +39137,6 @@ /obj/effect/turf_decal/tile/dark_green/fourcorners, /turf/open/floor/iron/white, /area/station/science/genetics) -"mLh" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 10 - }, -/obj/structure/sign/poster/greenscreen/directional/east, -/turf/open/floor/greenscreen, -/area/station/command/heads_quarters/captain/private) "mLp" = ( /obj/machinery/portable_atmospherics/canister/plasma, /obj/effect/turf_decal/stripes/line{ @@ -39387,6 +39255,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/service/hydroponics/garden) +"mNI" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "mNV" = ( /obj/machinery/photocopier, /turf/open/floor/iron/grimy, @@ -39667,12 +39541,6 @@ /obj/structure/altar_of_gods, /turf/open/floor/iron/dark, /area/station/service/chapel) -"mVp" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/white, -/area/station/medical/storage) "mVS" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/door/window/left/directional/west{ @@ -39729,12 +39597,6 @@ /obj/effect/turf_decal/trimline/blue/filled/line, /turf/open/floor/iron/white, /area/station/medical/surgery/fore) -"mXi" = ( -/obj/structure/transport/linear/tram, -/obj/structure/tram, -/obj/structure/plaque/static_plaque/tram, -/turf/open/openspace, -/area/station/hallway/primary/tram/center) "mXo" = ( /obj/structure/kitchenspike, /obj/effect/turf_decal/weather/snow, @@ -39980,6 +39842,11 @@ /obj/effect/turf_decal/trimline/tram/filled/warning, /turf/open/floor/iron, /area/station/hallway/primary/tram/right) +"nbD" = ( +/obj/structure/cable, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/tcommsat/computer) "nbF" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, @@ -40975,17 +40842,6 @@ }, /turf/open/floor/iron/white, /area/station/science/lower) -"nrD" = ( -/obj/machinery/greenscreen_camera{ - dir = 4; - pixel_y = 7; - pixel_x = 7 - }, -/obj/machinery/light/warm/directional/west, -/obj/structure/sign/flag/nanotrasen/directional/west, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain/private) "nrM" = ( /obj/machinery/door/airlock/mining/glass{ name = "Cargo Office" @@ -41897,6 +41753,13 @@ /obj/structure/tram, /turf/open/openspace, /area/station/hallway/primary/tram/center) +"nIY" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 9 + }, +/obj/structure/sign/poster/greenscreen/directional/east, +/turf/open/floor/greenscreen, +/area/station/command/heads_quarters/captain/private) "nJd" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 @@ -42155,6 +42018,18 @@ /obj/structure/ladder, /turf/open/floor/iron/smooth, /area/station/maintenance/tram/mid) +"nNt" = ( +/obj/machinery/door/airlock/command/glass{ + name = "EVA Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) "nNz" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -42544,6 +42419,18 @@ /obj/effect/turf_decal/trimline/purple/filled/line, /turf/open/floor/iron/white, /area/station/science/lobby) +"nUH" = ( +/obj/effect/turf_decal/box/white{ + color = "#52B4E9" + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/light_switch/directional/east{ + pixel_x = 22; + pixel_y = 8 + }, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "nUM" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -42605,6 +42492,13 @@ /obj/structure/fluff/tram_rail/electric, /turf/open/openspace, /area/station/hallway/primary/tram/left) +"nVt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/filingcabinet/security{ + pixel_x = -6 + }, +/turf/open/floor/iron/dark, +/area/station/security/evidence) "nVL" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -43029,6 +42923,11 @@ dir = 4 }, /area/station/service/theater) +"obM" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "obW" = ( /obj/machinery/modular_computer/preset/engineering{ dir = 1 @@ -43403,13 +43302,6 @@ /obj/machinery/light/warm/directional/west, /turf/open/floor/iron/cafeteria, /area/station/commons/dorms/laundry) -"okh" = ( -/obj/structure/chair/sofa/left{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/cafeteria, -/area/station/science/breakroom) "okn" = ( /obj/structure/disposalpipe/sorting/mail{ dir = 8 @@ -44494,6 +44386,14 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/white, /area/station/medical/surgery/fore) +"oJK" = ( +/obj/machinery/airalarm/directional/north, +/obj/structure/closet/secure_closet/captains, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain/private) "oKe" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -45262,6 +45162,13 @@ }, /turf/open/floor/iron, /area/station/security/brig) +"oZX" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "pal" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -45383,6 +45290,12 @@ /obj/structure/musician/piano, /turf/open/floor/carpet, /area/station/service/theater) +"pce" = ( +/obj/machinery/smartfridge/organ, +/obj/structure/sign/warning/cold_temp/directional/east, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "pcm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46265,18 +46178,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"psy" = ( -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/tram/right) "psU" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 @@ -46698,20 +46599,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"pyM" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/secure_safe/directional/north{ - name = "evidence safe" - }, -/turf/open/floor/iron/dark, -/area/station/security/evidence) "pyQ" = ( /obj/machinery/vending/wardrobe/hydro_wardrobe, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -47181,28 +47068,6 @@ dir = 8 }, /area/station/medical/medbay/central) -"pGa" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/item/storage/medkit/fire{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/fire, -/obj/item/storage/medkit/fire{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/machinery/door/window/left/directional/west{ - name = "Secure Medical Storage"; - req_access = list("medical") - }, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/dark, -/area/station/medical/storage) "pGg" = ( /obj/modular_map_root/tramstation{ name = "cargoscilower"; @@ -48381,13 +48246,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"qcj" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "qcu" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -48745,10 +48603,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/service/bar) -"qif" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "qik" = ( /obj/structure/sign/warning/radiation, /obj/effect/baseturf_helper/space, @@ -49177,13 +49031,6 @@ }, /turf/open/openspace, /area/station/hallway/primary/tram/center) -"qpY" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/filingcabinet, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) "qpZ" = ( /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/trimline/neutral/filled/line, @@ -49256,16 +49103,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/commons/vacant_room/commissary) -"qrx" = ( -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/tram/right) "qrI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -50499,15 +50336,6 @@ "qOo" = ( /turf/open/floor/iron/white, /area/station/science/ordnance) -"qOC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain/private) "qOF" = ( /turf/closed/wall, /area/station/commons/dorms/laundry) @@ -51227,22 +51055,6 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) -"raY" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Hallway - Starboard Tram Platform North-East" - }, -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/tram/right) "rbe" = ( /obj/machinery/static_signal/northwest, /obj/effect/turf_decal/stripes/white/line, @@ -51337,6 +51149,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/brig) +"rcr" = ( +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/tram/right) "rcx" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51789,13 +51611,6 @@ /obj/item/clothing/glasses/hud/health, /turf/open/floor/iron/white, /area/station/medical/virology) -"rkf" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/structure/sign/poster/greenscreen/directional/east, -/turf/open/floor/greenscreen, -/area/station/command/heads_quarters/captain/private) "rkp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, @@ -52712,11 +52527,6 @@ /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/catwalk_floor, /area/station/maintenance/tram/mid) -"rBW" = ( -/obj/structure/cable, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/tcommsat/computer) "rBZ" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -53003,19 +52813,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"rJE" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Freezer" - }, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/freezer, -/area/station/medical/coldroom) "rJM" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ @@ -53558,6 +53355,12 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/service/hydroponics) +"rRI" = ( +/obj/structure/closet{ + name = "evidence closet 2" + }, +/turf/open/floor/iron/dark, +/area/station/security/evidence) "rRK" = ( /obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, @@ -53917,6 +53720,29 @@ }, /turf/open/floor/iron/cafeteria, /area/station/security/prison) +"rZc" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/siding/white, +/obj/machinery/door/window/right/directional/east{ + name = "Secure Medical Storage"; + req_access = list("medical") + }, +/obj/item/storage/medkit/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/storage/medkit/regular, +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "rZq" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 1 @@ -53928,6 +53754,18 @@ dir = 1 }, /area/station/ai_monitored/command/storage/eva) +"rZv" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Recording Studio" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/captain, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "rZx" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "Gas to Filter"; @@ -54022,15 +53860,6 @@ /obj/item/wirecutters, /turf/open/space/openspace, /area/station/solars/starboard/fore) -"saI" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/tram/right) "saJ" = ( /obj/structure/plasticflaps/opaque, /turf/open/floor/plating, @@ -54456,6 +54285,22 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"sjD" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Medical Freezer" + }, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/freezer, +/area/station/medical/coldroom) "sjE" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -54546,6 +54391,13 @@ /obj/structure/chair/sofa/bench/tram, /turf/open/openspace, /area/station/hallway/primary/tram/center) +"skA" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 10 + }, +/obj/structure/sign/poster/greenscreen/directional/east, +/turf/open/floor/greenscreen, +/area/station/command/heads_quarters/captain/private) "skC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -54636,6 +54488,11 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) +"smc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/closet/secure_closet/evidence, +/turf/open/floor/iron/dark, +/area/station/security/evidence) "smj" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55888,13 +55745,6 @@ /obj/structure/cable, /turf/open/space/openspace, /area/station/solars/starboard/fore) -"sIz" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 9 - }, -/obj/structure/sign/poster/greenscreen/directional/east, -/turf/open/floor/greenscreen, -/area/station/command/heads_quarters/captain/private) "sIF" = ( /obj/structure/ore_box, /turf/open/misc/asteroid, @@ -56050,6 +55900,15 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"sLH" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 + }, +/obj/structure/table, +/obj/item/stack/sheet/cardboard, +/obj/item/food/donkpocket/pizza, +/turf/open/floor/iron/dark, +/area/station/medical/virology) "sLR" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 1 @@ -56130,6 +55989,13 @@ "sNs" = ( /turf/closed/wall, /area/station/commons/storage/primary) +"sNN" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "sNQ" = ( /obj/structure/disposalpipe/junction{ dir = 2 @@ -56253,6 +56119,17 @@ "sOS" = ( /turf/open/floor/carpet, /area/station/cargo/miningdock) +"sOX" = ( +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/freezer{ + name = "Freezer" + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor, +/area/station/service/kitchen/coldroom) "sPo" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -57524,6 +57401,19 @@ "tlZ" = ( /turf/open/floor/iron/cafeteria, /area/station/security/prison) +"tmf" = ( +/obj/structure/table/wood, +/obj/item/storage/photo_album{ + pixel_y = -4 + }, +/obj/item/camera{ + pixel_y = 4 + }, +/obj/machinery/newscaster/directional/west, +/obj/machinery/digital_clock/directional/north, +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/captain/private) "tml" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -57649,6 +57539,14 @@ /obj/item/mod/module/thermal_regulator, /turf/open/floor/iron, /area/station/security/office) +"toS" = ( +/obj/effect/spawner/random/contraband/cannabis, +/obj/structure/closet{ + name = "evidence closet 1" + }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/dark, +/area/station/security/evidence) "toT" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -57694,6 +57592,20 @@ }, /turf/open/floor/wood/large, /area/station/service/library) +"tpS" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/secure_safe/directional/north{ + name = "evidence safe" + }, +/turf/open/floor/iron/dark, +/area/station/security/evidence) "tqd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ @@ -58214,19 +58126,6 @@ }, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai_upload) -"tyB" = ( -/obj/structure/bed{ - dir = 4 - }, -/obj/item/bedsheet/captain{ - dir = 4 - }, -/obj/structure/sign/clock/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Command - Captain's Quarters" - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain/private) "tyE" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -58749,6 +58648,28 @@ }, /turf/open/floor/iron, /area/station/command/teleporter) +"tHD" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/item/storage/medkit/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/toxin, +/obj/item/storage/medkit/toxin{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/door/window/right/directional/east{ + name = "Secure Medical Storage"; + req_access = list("medical") + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/dark, +/area/station/medical/storage) "tIg" = ( /obj/modular_map_root/tramstation{ name = "arrivallibraryupper"; @@ -59240,6 +59161,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/tram/center) +"tQN" = ( +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 1 + }, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/tram/right) "tRf" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -59433,6 +59366,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/surgery/fore) +"tTT" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/brown/opposingcorners, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron, +/area/station/cargo/miningfoundry) "tTW" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 5 @@ -59739,14 +59680,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/lobby) -"tZV" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "EVA Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/eva, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/smooth, -/area/station/maintenance/department/eva) "uax" = ( /turf/open/floor/iron, /area/station/cargo/storage) @@ -60002,6 +59935,23 @@ /obj/effect/turf_decal/trimline/blue/filled/corner, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"ueo" = ( +/obj/machinery/door/airlock/research{ + name = "Slime Euthanization Chamber"; + opacity = 0; + glass = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 8 + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "uey" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -61453,6 +61403,13 @@ /obj/structure/cable, /turf/open/floor/iron/grimy, /area/station/ai_monitored/turret_protected/aisat/foyer) +"uBt" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "uBu" = ( /obj/item/radio/intercom/prison/directional/south, /obj/effect/turf_decal/trimline/red/filled/line, @@ -62828,13 +62785,6 @@ }, /turf/open/floor/iron, /area/station/security/office) -"uYD" = ( -/obj/machinery/suit_storage_unit/captain, -/obj/structure/sign/calendar/directional/north, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain/private) "uYF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, @@ -63428,14 +63378,6 @@ /obj/item/clothing/mask/gas/clown_hat, /turf/open/floor/plating, /area/station/engineering/main) -"viZ" = ( -/obj/machinery/camera/directional/south{ - network = list("ss13","medbay"); - c_tag = "Medical - Cold Storage" - }, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "vjb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -63774,18 +63716,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/tram/mid) -"vpp" = ( -/obj/effect/turf_decal/trimline/dark_green/filled/line{ - dir = 9 - }, -/obj/structure/table/glass, -/obj/machinery/requests_console/directional/west{ - name = "Genetics Requests Console"; - department = "Genetics" - }, -/obj/item/flesh_shears, -/turf/open/floor/iron/white, -/area/station/science/genetics) "vpt" = ( /obj/structure/railing{ dir = 9 @@ -64039,6 +63969,12 @@ }, /turf/closed/wall, /area/station/maintenance/disposal) +"vsp" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/freezer/surplus_limbs, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "vsI" = ( /obj/effect/landmark/start/station_engineer, /obj/effect/landmark/event_spawn, @@ -64742,6 +64678,13 @@ }, /turf/open/floor/iron, /area/station/commons/storage/primary) +"vFs" = ( +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/light/warm/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "vFt" = ( /turf/closed/wall/rust, /area/station/hallway/primary/tram/left) @@ -64753,6 +64696,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/parquet, /area/station/service/library) +"vFL" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/white, +/area/station/medical/storage) "vFQ" = ( /obj/machinery/duct, /obj/structure/cable, @@ -64933,6 +64882,10 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/iron, /area/station/engineering/break_room) +"vIh" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "vIv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/circuit/green, @@ -65026,6 +64979,19 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/hallway/secondary/service) +"vKG" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Medical Freezer" + }, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/freezer, +/area/station/medical/coldroom) "vKK" = ( /obj/effect/turf_decal/caution/stand_clear/red{ dir = 4 @@ -65306,6 +65272,15 @@ dir = 4 }, /area/station/service/theater) +"vQP" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "vQT" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -65937,6 +65912,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/cafeteria, /area/station/command/heads_quarters/rd) +"wcK" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "EVA Maintenance Hatch" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/eva) "wcN" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -66264,23 +66247,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, /area/station/service/chapel/monastery) -"wiX" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/tram/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/tram/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/tram/right) "wjk" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Security Maintenance Hatch" @@ -67036,19 +67002,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"wyH" = ( -/obj/structure/table/wood, -/obj/item/storage/photo_album{ - pixel_y = -4 - }, -/obj/item/camera{ - pixel_y = 4 - }, -/obj/machinery/newscaster/directional/west, -/obj/machinery/digital_clock/directional/north, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain/private) "wyM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67123,6 +67076,12 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, /area/station/command/bridge) +"wzn" = ( +/obj/structure/closet{ + name = "evidence closet 4" + }, +/turf/open/floor/iron/dark, +/area/station/security/evidence) "wzE" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 4 @@ -67321,18 +67280,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/open/floor/plating, /area/station/engineering/atmos) -"wDi" = ( -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" - }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/light_switch/directional/east{ - pixel_x = 22; - pixel_y = -8 - }, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "wDt" = ( /obj/effect/landmark/event_spawn, /obj/structure/chair/stool/directional/east, @@ -68019,12 +67966,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/tram/center) -"wQl" = ( -/obj/structure/closet{ - name = "evidence closet 2" - }, -/turf/open/floor/iron/dark, -/area/station/security/evidence) "wQm" = ( /turf/open/floor/iron, /area/station/engineering/atmos) @@ -68413,11 +68354,6 @@ /obj/effect/spawner/random/decoration/ornament, /turf/open/floor/carpet, /area/station/commons/vacant_room/office) -"wZE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/closet/secure_closet/evidence, -/turf/open/floor/iron/dark, -/area/station/security/evidence) "wZL" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 6 @@ -68559,11 +68495,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron, /area/station/security/prison) -"xck" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "xcp" = ( /obj/machinery/door/window/left/directional/west{ name = "Hydroponics Desk"; @@ -68834,6 +68765,17 @@ }, /turf/open/floor/iron/white, /area/station/science/lower) +"xiB" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/filled/corner, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/tram/right) "xiD" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -68864,6 +68806,16 @@ /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"xiQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/door/airlock/command/glass{ + name = "Server Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/structure/cable, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/circuit/telecomms/server, +/area/station/science/server) "xiZ" = ( /obj/structure/chair/sofa/right, /obj/effect/turf_decal/tile/bar/opposingcorners, @@ -69499,6 +69451,15 @@ "xvl" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/foyer) +"xvz" = ( +/obj/structure/fluff/tram_rail/electric{ + dir = 1 + }, +/obj/structure/transport/linear/tram, +/obj/structure/thermoplastic, +/obj/structure/sign/tram_plate/directional/south, +/turf/open/openspace, +/area/station/hallway/primary/tram/center) "xvJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -69563,6 +69524,31 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/office) +"xwH" = ( +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_y = -28 + }, +/obj/structure/sign/directions/medical{ + dir = 8; + pixel_y = -34 + }, +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = -40 + }, +/obj/structure/sign/directions/upload{ + pixel_y = -22 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/tram/filled/line, +/obj/effect/turf_decal/trimline/tram/filled/warning, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/tram/right) "xwO" = ( /obj/machinery/door/airlock/hatch{ name = "Emergency Exit" @@ -69609,13 +69595,6 @@ }, /turf/open/floor/iron, /area/station/security/prison/safe) -"xxL" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/status_display/evac/directional/north, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/chair/stool/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/captain/private) "xxW" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 9 @@ -70215,6 +70194,30 @@ /obj/machinery/vending/coffee, /turf/open/floor/wood, /area/station/service/bar/backroom) +"xLs" = ( +/obj/effect/landmark/start/hangover, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/tram/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/tram/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/tram/right) +"xLu" = ( +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/cafeteria, +/area/station/science/breakroom) "xLK" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 5 @@ -70296,11 +70299,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"xMU" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "xMV" = ( /obj/structure/railing/corner{ dir = 8 @@ -70551,6 +70549,14 @@ }, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/aisat_interior) +"xQH" = ( +/obj/machinery/camera/directional/south{ + network = list("ss13","medbay"); + c_tag = "Medical - Cold Storage" + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "xQM" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 5 @@ -70704,12 +70710,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/security/execution/education) -"xUb" = ( -/obj/machinery/smartfridge/organ, -/obj/structure/sign/warning/cold_temp/directional/east, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "xUC" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, @@ -71248,11 +71248,6 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"yeA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain/private) "yeB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -98632,7 +98627,7 @@ lOV jXc rpJ gga -rBW +nbD ffN sMr uGX @@ -103972,7 +103967,7 @@ nUP cQY aer vYg -aeN +sOX snQ iRL dNp @@ -104024,7 +104019,7 @@ dor fSp vKv roB -mzi +hXo iHK bAK jsW @@ -117400,7 +117395,7 @@ rdU uon ilj hDT -keT +ueo iEF fof aoN @@ -118421,7 +118416,7 @@ xNk pnn hCv grh -okh +xLu qVr qVr kkx @@ -119129,7 +119124,7 @@ xdZ fdc cZQ jwy -bvA +tTT pIF mIF ujf @@ -146895,7 +146890,7 @@ aaa aaa aaa iyc -qpY +kJP udk uSR oXe @@ -149979,7 +149974,7 @@ ayR ayR ayR ayR -tZV +wcK ayR rlv rlv @@ -151521,7 +151516,7 @@ idW hzN hzN hzN -cOg +nNt hzN gkU gkU @@ -153068,7 +153063,7 @@ ief ujt ujt ief -lIc +gmX ief aBV aBV @@ -158461,8 +158456,8 @@ tFJ nwv cSh ltw -tyB -jWd +aAF +gha ltw rdm vjq @@ -158718,7 +158713,7 @@ ltw fOG pcm ndO -yeA +jWz riB ltw dxw @@ -158975,7 +158970,7 @@ ltw bCu nZY ltw -bwN +vFs oTu ltw qJf @@ -159232,7 +159227,7 @@ ltw ltw ltw ltw -bwi +oJK tth rKP kOr @@ -159489,7 +159484,7 @@ aaa aaa aaa ltw -uYD +gkV aVj ltw sWY @@ -159723,9 +159718,9 @@ abM abM tFJ kyN -fzc -wZE -wZE +nVt +smc +smc jKq pTr ohd @@ -159747,7 +159742,7 @@ aaa ltw ltw ltw -dCp +rZv ltw xEo xEo @@ -159979,7 +159974,7 @@ tag abM abM tFJ -pyM +tpS mNy xFb dGn @@ -160002,9 +159997,9 @@ aaa aaa aaa ltw -wyH -nrD -jko +tmf +iKh +eBZ ltw aaa aaa @@ -160236,10 +160231,10 @@ aaa abM abM tFJ -kPL -wQl -iMo -djh +toS +rRI +dEz +wzn jKq rMp awc @@ -160259,9 +160254,9 @@ aaa aaa aaa ltw -xxL -jwW -qOC +kep +ker +cJj ltw aaa aaa @@ -160516,9 +160511,9 @@ aaa aaa aaa ltw -sIz -rkf -mLh +nIY +fqH +skA ltw aaa aaa @@ -164668,12 +164663,12 @@ xBk jwU xBk kRL -dJG -xMU -elM -cTw -eyg -viZ +cNe +obM +hDz +iLy +mNI +xQH apC abM abM @@ -164925,12 +164920,12 @@ mMn bbk yeN kRL -kAx -qcj -ayn -aJf -lXZ -aHb +vsp +oZX +vQP +sNN +uBt +bXE apC abM abM @@ -165175,19 +165170,19 @@ aaa aaa xBk xBk -giT -iZi -dAJ +gFb +tHD +rZc mPr vcv odH kRL -dJG -qcj -lDl -xUb -wDi -qif +cNe +oZX +nUH +pce +iqW +vIh apC abM abM @@ -165431,7 +165426,7 @@ aaa aaa aaa xBk -eWs +kpx sKO sKO mLu @@ -165440,11 +165435,11 @@ hVZ jWe kRL kRL -cPA +sjD xRx xRx lBQ -rJE +vKG apC apC abM @@ -165689,7 +165684,7 @@ aaa aaa xBk xBk -pGa +eql rSa kiC mrf @@ -165950,7 +165945,7 @@ jyH jyH jyH wyR -mVp +vFL fMZ xRx bWU @@ -169285,7 +169280,7 @@ bPh sSt jEK eoE -xck +eOR ols wyd enF @@ -170304,8 +170299,8 @@ aiH oKm uzl xBS -mar -mXi +xvz +oKm dhI lej fxs @@ -173925,7 +173920,7 @@ whz aaa aaa ugt -bGV +sLH min oKh rNt @@ -180836,7 +180831,7 @@ sYz ldp wkz hsN -psy +tQN oAY seR kTK @@ -181078,7 +181073,7 @@ pZA uax uax uax -mur +bmW qza mhJ aAJ @@ -182412,7 +182407,7 @@ rGj wcB jXF pbH -mAL +xiQ nKU qVr tEx @@ -183440,7 +183435,7 @@ kye kye lHJ pbH -mAL +xiQ nKU qVr tBo @@ -184177,7 +184172,7 @@ dOC bIp evu qtF -iIS +xwH bMb brm gay @@ -184433,8 +184428,8 @@ geG nmP kdI vrx -add -wiX +dOO +xLs oUA brm mWR @@ -184690,7 +184685,7 @@ yiV uCO aDI aDV -qrx +rcr aYA hZc seR @@ -184706,7 +184701,7 @@ grB ckd sNQ sPK -gYO +cWd pMk ePS pmM @@ -184947,9 +184942,9 @@ pEe uCO hPi bMb -dEo -saI -raY +xiB +iqT +erW hZv ljn ujw @@ -185222,7 +185217,7 @@ hmd bHb sed dpB -vpp +lYN gel tIh hRa diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm index 91a0dc9b7f5..a6031fcf326 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/wawastation/wawastation.dmm @@ -35,12 +35,6 @@ }, /turf/open/floor/iron/large, /area/station/service/hydroponics/garden) -"aaY" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) "abb" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -89,15 +83,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/service/hydroponics) -"abw" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) "abx" = ( /obj/structure/railing/corner{ dir = 4 @@ -222,17 +207,6 @@ }, /turf/open/openspace, /area/station/maintenance/port/greater) -"adP" = ( -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics Overlook" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/upper) "adV" = ( /obj/effect/turf_decal/tile/yellow, /obj/machinery/light/dim/directional/east, @@ -284,13 +258,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"aer" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "aex" = ( /mob/living/basic/sloth/citrus, /turf/open/floor/iron, @@ -337,6 +304,15 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"aeX" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/box, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos/upper) "afe" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -583,6 +559,15 @@ }, /turf/open/floor/iron/textured_large, /area/station/medical/treatment_center) +"ajp" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "ajs" = ( /obj/machinery/door/poddoor/shutters/window{ dir = 1; @@ -672,6 +657,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) +"akH" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/space/openspace, +/area/space/nearstation) "akU" = ( /turf/open/floor/iron/dark/side, /area/station/command/corporate_dock) @@ -712,10 +704,6 @@ /obj/machinery/atmospherics/components/unary/thermomachine/heater, /turf/open/misc/asteroid, /area/station/maintenance/disposal/incinerator) -"alv" = ( -/obj/structure/railing/corner, -/turf/open/floor/iron, -/area/station/engineering/main) "alx" = ( /obj/item/flashlight/flare{ icon_state = "flare-on"; @@ -749,22 +737,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"alW" = ( -/obj/machinery/camera/autoname/directional/west{ - network = list("ss13","medbay") - }, -/obj/effect/decal/cleanable/glass, -/obj/structure/broken_flooring/pile, -/obj/structure/rack, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 1 - }, -/obj/item/storage/box/masks{ - pixel_y = 4 - }, -/obj/item/storage/box/bodybags, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) "alX" = ( /obj/effect/turf_decal/stripes{ dir = 1 @@ -790,6 +762,18 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white/textured, /area/station/science/genetics) +"amu" = ( +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/freezer{ + name = "Freezer" + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "amJ" = ( /obj/machinery/iv_drip, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -936,6 +920,12 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/plating, /area/station/cargo/storage) +"aoM" = ( +/obj/structure/sign/poster/official/random/directional/south, +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "apb" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt/dust, @@ -982,14 +972,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/exam_room) -"apK" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) "apQ" = ( /turf/closed/wall, /area/station/service/library) @@ -1308,6 +1290,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/cargo) +"avN" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/main) "avQ" = ( /obj/structure/lattice, /obj/machinery/atmospherics/components/unary/passive_vent/layer2{ @@ -1442,12 +1432,6 @@ /obj/item/clothing/glasses/nightmare_vision, /turf/open/space/basic, /area/space/nearstation) -"axv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner, -/obj/structure/cable/layer3, -/turf/open/openspace, -/area/station/engineering/atmos) "axB" = ( /obj/machinery/door/window/brigdoor/right/directional/east{ req_access = list("xenobiology") @@ -1568,16 +1552,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/misc/asteroid, /area/station/asteroid) -"azs" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) "azt" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -1622,14 +1596,6 @@ }, /turf/open/floor/iron, /area/station/engineering/storage) -"azV" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "aAg" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -1679,12 +1645,20 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/medical/medbay/central) -"aBy" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 +"aBf" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 }, +/obj/machinery/vending/tool, /turf/open/floor/iron, -/area/station/hallway/secondary/command) +/area/station/engineering/lobby) +"aBo" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/maintenance/department/engine) "aBU" = ( /obj/item/radio/intercom/directional/east, /obj/structure/cable, @@ -1730,9 +1704,18 @@ }, /turf/open/floor/iron, /area/station/cargo/lobby) -"aCv" = ( -/turf/closed/wall/rock/porous, -/area/station/maintenance/department/medical) +"aCu" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/firealarm/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/checker, +/area/station/engineering/atmos/mix) "aCx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt/dust, @@ -1796,14 +1779,13 @@ }, /turf/open/floor/iron/dark, /area/station/medical/chemistry/minisat) -"aDJ" = ( -/obj/machinery/shower/directional/south{ - name = "emergency shower" +"aDO" = ( +/obj/effect/decal/cleanable/glass, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/trimline/dark_blue/end, -/turf/open/floor/iron/textured, -/area/station/engineering/atmos) +/turf/open/floor/iron/white/textured_large, +/area/station/medical/treatment_center) "aDW" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/plastic, @@ -1898,6 +1880,16 @@ }, /turf/open/floor/carpet/orange, /area/station/service/theater) +"aFt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/structure/railing/corner, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/engineering/atmos) "aFw" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -2054,6 +2046,18 @@ /obj/structure/railing/corner, /turf/open/floor/iron, /area/station/security/prison) +"aHO" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "aHZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -2145,20 +2149,6 @@ }, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/station/service/kitchen/coldroom) -"aJz" = ( -/obj/structure/railing, -/obj/structure/table, -/obj/item/plate, -/obj/item/food/spaghetti/mac_n_cheese{ - pixel_y = 3 - }, -/obj/item/flashlight/flare/candle{ - icon_state = "candle1_lit"; - pixel_x = 12; - start_on = 1 - }, -/turf/open/floor/plating, -/area/station/engineering/main) "aJA" = ( /obj/machinery/door/window/brigdoor/right/directional/east{ req_access = list("xenobiology") @@ -2217,6 +2207,17 @@ /obj/effect/turf_decal/trimline/yellow/filled/line, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) +"aKk" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics Mixing Room" + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "aKl" = ( /obj/structure/chair, /obj/machinery/airalarm/directional/north, @@ -2224,13 +2225,6 @@ dir = 5 }, /area/station/maintenance/radshelter/medical) -"aKA" = ( -/obj/structure/stairs/south, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) "aKB" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -2299,20 +2293,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/iron/white/textured, /area/station/science/genetics) -"aLz" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "E.V.A. Storage" - }, -/obj/effect/turf_decal/delivery, -/obj/structure/cable, -/obj/effect/landmark/navigate_destination, -/obj/effect/mapping_helpers/airlock/access/any/command/eva, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) "aLE" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/item/radio/intercom/directional/south, @@ -2462,14 +2442,6 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/central) -"aOb" = ( -/obj/machinery/light/directional/south, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "aOi" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/plating, @@ -2601,6 +2573,15 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) +"aRa" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/project) "aRf" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -2610,6 +2591,16 @@ /obj/structure/girder, /turf/open/floor/plating, /area/station/asteroid) +"aRq" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk/multiz, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/engineering/atmos) "aRs" = ( /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark, @@ -2670,6 +2661,13 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/service/chapel/office) +"aSF" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/lobby) "aSG" = ( /obj/machinery/computer/records/medical{ dir = 1 @@ -2803,6 +2801,14 @@ }, /turf/open/floor/iron/dark, /area/station/service/cafeteria) +"aVb" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "aVm" = ( /obj/machinery/door/airlock/maintenance_hatch, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, @@ -2826,6 +2832,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/textured, /area/station/science/genetics) +"aVG" = ( +/obj/structure/railing/corner/end{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/station/engineering/atmos) "aVY" = ( /obj/item/flashlight/flare{ icon_state = "flare-on"; @@ -2852,10 +2864,6 @@ "aWD" = ( /turf/closed/wall/r_wall, /area/station/engineering/main) -"aWF" = ( -/obj/structure/rack, -/turf/open/floor/plating, -/area/station/engineering/main) "aWJ" = ( /turf/open/misc/asteroid, /area/station/maintenance/central/greater) @@ -2887,13 +2895,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"aXA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) "aXD" = ( /obj/machinery/door/airlock/maintenance/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, @@ -2962,6 +2963,15 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrous_input, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) +"aZp" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "aZs" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3066,6 +3076,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/atmos) +"bbc" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/lobby) "bbe" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/engine, @@ -3114,6 +3133,11 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/engineering) +"bbE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/atmos/project) "bca" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/effect/landmark/start/bartender, @@ -3147,18 +3171,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"bcA" = ( -/obj/structure/plasticflaps/opaque, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=4"; - location = "Engineering" - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/maintenance/department/engine) "bcX" = ( /obj/machinery/duct, /obj/structure/cable, @@ -3167,6 +3179,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/service) +"bde" = ( +/obj/structure/sign/departments/aisat/directional/east, +/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/photobooth, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "bdk" = ( /obj/structure/table, /obj/structure/bedsheetbin, @@ -3235,6 +3256,16 @@ /obj/machinery/light/floor, /turf/open/floor/iron/textured, /area/station/command/heads_quarters/qm) +"beB" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/firealarm/directional/south, +/obj/machinery/light/directional/south, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "beE" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/iron/dark/textured_large, @@ -3328,6 +3359,15 @@ dir = 1 }, /area/station/service/chapel) +"bfE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "bfN" = ( /turf/open/floor/iron/dark, /area/station/maintenance/radshelter/civil) @@ -3383,12 +3423,6 @@ }, /turf/open/floor/iron, /area/station/commons/locker) -"bgY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) "bhk" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -3474,6 +3508,10 @@ /obj/effect/landmark/start/depsec/medical, /turf/open/floor/iron/dark, /area/station/security/checkpoint/medical) +"big" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid, +/area/station/maintenance/department/medical) "biC" = ( /obj/machinery/telecomms/broadcaster/preset_left, /turf/open/floor/circuit/green/telecomms/mainframe, @@ -3596,12 +3634,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/recharge_floor, /area/station/security/mechbay) -"blM" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "bme" = ( /obj/structure/sign/warning, /turf/closed/wall/r_wall, @@ -3639,11 +3671,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) -"bmu" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "bmy" = ( /obj/machinery/door/airlock/public/glass{ name = "Fore Primary Hallway" @@ -3928,29 +3955,12 @@ /obj/item/pai_card, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) -"btj" = ( -/obj/machinery/door/airlock/atmos{ - name = "Incinerator" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) "btl" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/main) -"btw" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "btJ" = ( /obj/structure/railing/corner{ dir = 8 @@ -4007,6 +4017,21 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"bur" = ( +/obj/machinery/light/directional/west, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer5{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"bus" = ( +/obj/machinery/light/dim/directional/west, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/minisat/directional/west, +/turf/open/floor/iron, +/area/station/command/bridge) "buu" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue{ @@ -4048,6 +4073,23 @@ /obj/machinery/defibrillator_mount/directional/south, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"buV" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) +"bvf" = ( +/obj/item/pickaxe/improvised, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/misc/asteroid, +/area/station/maintenance/department/medical) "bvl" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ @@ -4119,6 +4161,14 @@ /obj/machinery/light/dim/directional/west, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) +"bwi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "bwj" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 1 @@ -4135,6 +4185,17 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/station/security/detectives_office/private_investigators_office) +"bwv" = ( +/obj/machinery/door/airlock/research{ + glass = 1; + name = "Slime Euthanization Chamber"; + opacity = 0 + }, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron, +/area/station/science/xenobiology) "bwQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4205,6 +4266,19 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron, /area/station/command/bridge) +"bxR" = ( +/obj/structure/closet/preopen{ + icon_state = "bio"; + name = "level 3 biohazard gear closet" + }, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ + dir = 8 + }, +/obj/item/radio/intercom/directional/west, +/obj/effect/mapping_helpers/broken_floor, +/obj/item/tank/internals/oxygen, +/turf/open/floor/iron/white/textured, +/area/station/medical/treatment_center) "byb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ @@ -4252,6 +4326,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/warden) +"bzi" = ( +/obj/item/flashlight/flare/candle{ + pixel_x = -18; + pixel_y = -10 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) "bzj" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/small/broken/directional/north, @@ -4266,11 +4348,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"bzu" = ( -/obj/item/pickaxe/improvised, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) "bzB" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/machinery/recharger, @@ -4327,6 +4404,14 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"bAa" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/structure/cable, +/obj/machinery/duct, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "bAe" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/tile/neutral{ @@ -4945,27 +5030,12 @@ /obj/machinery/processor/slime, /turf/open/floor/iron/white/textured_large, /area/station/science/xenobiology) -"bLS" = ( -/obj/effect/turf_decal/stripes/box, -/obj/structure/cable/multilayer/multiz, -/obj/item/assembly/mousetrap/armed, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/plating, -/area/station/engineering/lobby) "bMb" = ( /obj/structure/lattice/catwalk, /obj/structure/ladder, /obj/machinery/light/directional/north, /turf/open/openspace, /area/station/engineering/supermatter/room) -"bMl" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "bMm" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=2"; @@ -4984,17 +5054,6 @@ /obj/structure/broken_flooring/corner, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"bMG" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, -/obj/machinery/meter, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "bMP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5104,6 +5163,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) +"bOJ" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "bOO" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/wood{ @@ -5135,21 +5206,17 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/cargo/miningoffice) -"bPH" = ( +"bPC" = ( +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 }, -/area/station/engineering/atmos/upper) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "bPP" = ( /obj/machinery/conveyor_switch/oneway{ dir = 8; @@ -5682,6 +5749,12 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark/textured_large, /area/station/ai_monitored/security/armory) +"cad" = ( +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/bridge) "caq" = ( /obj/effect/spawner/surgery_tray/full/deployed, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -5715,6 +5788,13 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) +"caJ" = ( +/obj/structure/closet/radiation, +/obj/effect/turf_decal/bot, +/obj/item/analyzer, +/obj/structure/cable, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/mix) "caP" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -5783,6 +5863,17 @@ }, /turf/open/floor/wood/tile, /area/station/service/chapel) +"cbD" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/checker{ + dir = 4 + }, +/area/station/engineering/atmos/project) "cbJ" = ( /turf/closed/wall, /area/station/engineering/atmos/pumproom) @@ -5860,22 +5951,6 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/science/cytology) -"cdo" = ( -/obj/machinery/elevator_control_panel/directional/south{ - linked_elevator_id = "aisat"; - pixel_x = 8; - pixel_y = -34 - }, -/obj/machinery/lift_indicator/directional/south{ - linked_elevator_id = "aisat"; - pixel_x = -6; - pixel_y = -40 - }, -/obj/machinery/light/small/dim/directional/north, -/obj/structure/cable/layer3, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) "cdI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5927,6 +6002,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured, /area/station/science/robotics/lab) +"ceh" = ( +/obj/machinery/newscaster/directional/east, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "cem" = ( /turf/closed/wall, /area/station/security/prison/safe) @@ -6155,16 +6237,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/engineering/main) -"ciF" = ( -/obj/machinery/shower/directional/south{ - name = "emergency shower" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/dark_blue/end, -/turf/open/floor/iron/textured, -/area/station/engineering/atmos) "ciR" = ( /obj/structure/transport/linear/public{ base_icon_state = "catwalk"; @@ -6324,16 +6396,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"cnd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/treatment_center) "cnm" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -6412,6 +6474,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/locker) +"coS" = ( +/obj/structure/railing/corner/end{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/station/engineering/atmos/project) "cpw" = ( /obj/structure/cable, /turf/open/floor/iron/white, @@ -6492,6 +6560,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal) +"cqY" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos) "crb" = ( /obj/machinery/door/poddoor/shutters/window{ id = "armory"; @@ -6620,28 +6697,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/break_room) -"csH" = ( -/obj/structure/railing/corner{ - dir = 1 +"csJ" = ( +/obj/structure/railing{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/box, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/upper) "csW" = ( /turf/open/floor/carpet/executive, /area/station/command/heads_quarters/captain/private) -"cti" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/space_heater, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/upper) "cts" = ( /turf/closed/wall/rock/porous, /area/station/medical/chemistry/minisat) @@ -6685,6 +6753,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/maintenance/central/lesser) +"cue" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/space/openspace, +/area/space/nearstation) "cuj" = ( /obj/item/trash/shrimp_chips, /turf/open/floor/plating, @@ -6727,6 +6802,15 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, /area/station/security/prison/safe) +"cuQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "cvn" = ( /obj/structure/closet/emcloset, /obj/machinery/light/small/dim/directional/east, @@ -6743,12 +6827,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"cvX" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "cvZ" = ( /obj/machinery/door/firedoor, /obj/structure/cable, @@ -6800,6 +6878,17 @@ /obj/structure/rack, /turf/open/floor/plating, /area/station/maintenance/central/lesser) +"cwI" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "cxg" = ( /turf/open/misc/asteroid/airless, /area/space/nearstation) @@ -6808,10 +6897,28 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/dark/textured_large, /area/station/security/interrogation) +"cxv" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/lobby) "cxz" = ( /obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) +"cxC" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/aft/upper) "cxD" = ( /mob/living/basic/cow{ name = "Betsy"; @@ -6858,6 +6965,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/lobby) +"cyj" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/main) "cyw" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white/smooth_large, @@ -6880,6 +6996,21 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"cyX" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) +"czb" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/engineering/lobby) "czh" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ dir = 1 @@ -6961,14 +7092,6 @@ }, /turf/open/floor/iron/white/smooth_edge, /area/station/science/research) -"cAv" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) "cAy" = ( /obj/structure/table/glass, /obj/item/flatpack{ @@ -7100,6 +7223,13 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark/textured_large, /area/station/science/xenobiology) +"cCJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "cCP" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 @@ -7112,14 +7242,33 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"cCQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +"cCZ" = ( +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -9; + pixel_y = 8 }, -/obj/machinery/space_heater, -/obj/machinery/camera/autoname/directional/south, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -9; + pixel_y = 0 + }, +/obj/item/stack/sheet/iron/fifty{ + pixel_x = 6; + pixel_y = 12 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 4; + pixel_y = 10 + }, +/obj/item/stack/sheet/plasteel/twenty{ + pixel_x = 4; + pixel_y = 7 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/light_switch/directional/north, /turf/open/floor/iron/large, -/area/station/engineering/atmos/upper) +/area/station/engineering/atmos/project) "cDl" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -7220,6 +7369,18 @@ }, /turf/open/floor/engine, /area/station/engineering/atmospherics_engine) +"cFF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/radio/intercom/command/directional/east, +/obj/machinery/suit_storage_unit/captain{ + req_access = list("captain") + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain/private) "cFH" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, /obj/structure/cable, @@ -7245,11 +7406,6 @@ dir = 1 }, /area/station/medical/pharmacy) -"cGs" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "cGP" = ( /obj/structure/closet/secure_closet/medical1, /obj/effect/turf_decal/bot{ @@ -7369,12 +7525,23 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/medical) +"cIl" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "cIx" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/mix_input{ dir = 4 }, /turf/open/floor/engine/vacuum, /area/station/engineering/atmos) +"cIz" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "cIE" = ( /obj/effect/turf_decal/siding/purple{ dir = 6 @@ -7469,6 +7636,10 @@ /mob/living/basic/mining/basilisk, /turf/open/misc/asteroid/airless, /area/space/nearstation) +"cKW" = ( +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/project) "cLd" = ( /obj/machinery/oven/range, /obj/machinery/light/directional/north, @@ -7569,20 +7740,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/station/maintenance/department/cargo) -"cMW" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/iron/checker{ - dir = 4 - }, -/area/station/engineering/atmos/upper) "cMZ" = ( /turf/closed/wall/r_wall, /area/station/science/auxlab/firing_range) @@ -7662,13 +7819,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/grass, /area/station/medical/chemistry) -"cOf" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/mapping_helpers/damaged_window{ - integrity_damage_max = 0.5 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "cOp" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -7737,16 +7887,6 @@ "cPt" = ( /turf/closed/wall/r_wall, /area/station/science/lab) -"cPx" = ( -/obj/structure/table, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/core, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) "cPE" = ( /obj/machinery/light/small/directional/west, /turf/open/misc/asteroid, @@ -7880,6 +8020,12 @@ dir = 1 }, /area/station/service/chapel) +"cRQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/lobby) "cRT" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -8024,6 +8170,18 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) +"cUB" = ( +/obj/effect/turf_decal/tile/dark_blue, +/obj/effect/mapping_helpers/mail_sorting/service/hop_office, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/red{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "cUD" = ( /obj/effect/turf_decal/stripes{ dir = 1 @@ -8070,15 +8228,6 @@ /obj/effect/spawner/random/structure/chair_flipped, /turf/open/floor/iron, /area/station/maintenance/department/cargo) -"cVn" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/main) "cVs" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Xenobiology Maintenance" @@ -8200,17 +8349,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/dark, /area/station/maintenance/department/engine) -"cXn" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "cXo" = ( /obj/structure/barricade/wooden/crude, /obj/structure/holosign/barrier/atmos, @@ -8227,6 +8365,12 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) +"cXu" = ( +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "cXy" = ( /obj/effect/turf_decal/stripes{ dir = 4 @@ -8255,10 +8399,53 @@ /obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating/airless, /area/station/maintenance/department/medical/central) -"cYa" = ( -/obj/effect/landmark/navigate_destination, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, +"cYk" = ( +/obj/structure/table, +/obj/item/electronics/airalarm{ + pixel_x = -5; + pixel_y = -5 + }, +/obj/item/electronics/airalarm{ + pixel_x = -5; + pixel_y = -5 + }, +/obj/item/electronics/airalarm{ + pixel_x = -5; + pixel_y = -5 + }, +/obj/item/electronics/firealarm{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/electronics/firealarm{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/electronics/firealarm{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/storage/toolbox/electrical{ + pixel_x = -5; + pixel_y = 12 + }, +/obj/item/multitool{ + pixel_x = 11; + pixel_y = 10 + }, +/obj/item/multitool{ + pixel_x = 11; + pixel_y = 10 + }, +/obj/item/multitool{ + pixel_x = 11; + pixel_y = 10 + }, +/obj/machinery/camera/autoname/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/iron/large, /area/station/engineering/atmos) "cYs" = ( /obj/effect/spawner/random/structure/crate, @@ -8270,14 +8457,6 @@ /obj/machinery/light/directional/south, /turf/open/openspace, /area/station/engineering/main) -"cYB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "cYC" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -8424,6 +8603,13 @@ /obj/effect/mapping_helpers/airlock/access/any/admin/general, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"dbL" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "dbN" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -8496,6 +8682,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/central) +"dcp" = ( +/obj/structure/table/wood, +/obj/item/storage/medkit{ + pixel_x = -10 + }, +/turf/open/floor/carpet/executive, +/area/station/command/meeting_room) "dct" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -8542,6 +8735,28 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"dcL" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/navigate_destination/atmos, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "dcO" = ( /obj/machinery/vending/wardrobe/science_wardrobe, /obj/effect/turf_decal/delivery, @@ -8602,13 +8817,6 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"deX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/machinery/door/window/brigdoor/left/directional/east, -/turf/open/floor/engine/airless, -/area/station/engineering/atmos) "deY" = ( /obj/effect/turf_decal/tile/neutral, /obj/machinery/firealarm/directional/east, @@ -8677,6 +8885,15 @@ }, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos) +"dgn" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/engineering/atmos) "dgp" = ( /turf/closed/wall, /area/station/medical/exam_room) @@ -8687,6 +8904,14 @@ }, /turf/open/floor/iron/white, /area/station/security/prison/mess) +"dgx" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) "dgy" = ( /obj/structure/plasticflaps/opaque, /obj/machinery/door/window/right/directional/south{ @@ -8786,13 +9011,6 @@ }, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"dhH" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) "dhN" = ( /obj/structure/rack, /obj/item/circuitboard/machine/exoscanner{ @@ -8838,6 +9056,13 @@ /obj/machinery/light/small/dim/directional/west, /turf/open/misc/asteroid, /area/station/hallway/secondary/entry) +"dik" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "diz" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -8858,13 +9083,6 @@ /obj/structure/detectiveboard/directional/north, /turf/open/floor/carpet, /area/station/security/detectives_office) -"diM" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) "diZ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, @@ -9127,10 +9345,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/storage) -"dmW" = ( -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/engineering/atmos/storage/gas) "dni" = ( /obj/machinery/door/airlock/external, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -9161,6 +9375,12 @@ dir = 1 }, /area/station/command/corporate_dock) +"dnD" = ( +/obj/structure/railing/corner/end/flip{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/station/engineering/atmos/project) "dnO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9189,11 +9409,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/white, /area/station/science/lobby) -"dog" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) "doh" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -9206,6 +9421,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/tile, /area/station/service/bar) +"doj" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "dor" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9228,15 +9455,17 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/wood/parquet, /area/station/service/theater) +"doM" = ( +/obj/structure/closet/l3closet, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/green/half/contrasted, +/turf/open/floor/iron/white/textured, +/area/station/medical/treatment_center) "doO" = ( /obj/item/stack/tile/iron/white, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/medical/chemistry/minisat) -"doZ" = ( -/obj/item/pickaxe/improvised, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) "dpc" = ( /obj/structure/table/wood, /obj/structure/railing{ @@ -9349,6 +9578,18 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w, /turf/open/space/basic, /area/space/nearstation) +"dqQ" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "dqW" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/stripes/asteroid/line{ @@ -9398,16 +9639,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"drK" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/multiz/dark/visible/layer5{ - name = "Port To Turbine" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) "drO" = ( /obj/item/retractor, /obj/item/hemostat{ @@ -9586,6 +9817,15 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, /area/station/security/prison) +"duE" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "duS" = ( /obj/machinery/duct, /obj/structure/cable, @@ -9593,11 +9833,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"duU" = ( -/obj/structure/cable, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "dvz" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -9895,54 +10130,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/main) -"dAo" = ( -/obj/structure/table, -/obj/item/electronics/airalarm{ - pixel_x = -5; - pixel_y = -5 - }, -/obj/item/electronics/airalarm{ - pixel_x = -5; - pixel_y = -5 - }, -/obj/item/electronics/airalarm{ - pixel_x = -5; - pixel_y = -5 - }, -/obj/item/electronics/firealarm{ - pixel_x = 5; - pixel_y = -5 - }, -/obj/item/electronics/firealarm{ - pixel_x = 5; - pixel_y = -5 - }, -/obj/item/electronics/firealarm{ - pixel_x = 5; - pixel_y = -5 - }, -/obj/item/storage/toolbox/electrical{ - pixel_x = -5; - pixel_y = 12 - }, -/obj/item/multitool{ - pixel_x = 11; - pixel_y = 10 - }, -/obj/item/multitool{ - pixel_x = 11; - pixel_y = 10 - }, -/obj/item/multitool{ - pixel_x = 11; - pixel_y = 10 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/large, -/area/station/engineering/atmos) "dAq" = ( /obj/machinery/door/airlock/security/glass{ name = "Permabrig" @@ -9996,6 +10183,15 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) +"dBb" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/light/dim/directional/west, +/turf/open/floor/iron, +/area/station/engineering/main) "dBj" = ( /obj/structure/cable/multilayer/multiz, /obj/effect/decal/cleanable/dirt, @@ -10007,24 +10203,6 @@ /obj/machinery/incident_display/bridge/directional/south, /turf/open/floor/iron, /area/station/command/bridge) -"dBp" = ( -/obj/machinery/button/door/directional/west{ - id = "atmos"; - name = "Atmospherics Lockdown"; - req_access = list("atmospherics") - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/vending/wardrobe/atmos_wardrobe, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos/upper) "dBu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -10070,15 +10248,6 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron, /area/station/service/hydroponics) -"dBX" = ( -/obj/structure/railing, -/obj/machinery/camera/autoname/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/engineering/main) "dCh" = ( /obj/machinery/gibber, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -10226,6 +10395,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/textured, /area/station/science/genetics) +"dEV" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/dark_blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_blue, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "dFb" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -10419,14 +10600,6 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) -"dHU" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "dHW" = ( /obj/effect/turf_decal/tile/brown/anticorner/contrasted, /obj/structure/extinguisher_cabinet/directional/south, @@ -10579,10 +10752,6 @@ /obj/structure/sign/warning/vacuum/external/directional/east, /turf/open/floor/plating, /area/station/maintenance/disposal) -"dKI" = ( -/obj/effect/turf_decal/box, -/turf/open/floor/iron/textured, -/area/station/engineering/atmos/upper) "dLf" = ( /obj/machinery/camera/directional/west{ c_tag = "Atmospherics Tank - Plasma" @@ -10801,6 +10970,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) +"dPn" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "dPq" = ( /obj/machinery/camera/autoname/directional/east, /turf/open/floor/grass, @@ -10962,6 +11136,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"dSo" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "dSp" = ( /obj/machinery/light/small/directional/north, /obj/effect/landmark/start/assistant, @@ -10981,14 +11164,6 @@ dir = 5 }, /area/station/command/corporate_showroom) -"dSN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) "dSQ" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood{ @@ -11051,14 +11226,6 @@ /obj/item/reagent_containers/cup/beaker/large, /turf/open/floor/iron/grimy, /area/station/maintenance/central/greater) -"dTz" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/reagent_dispensers/watertank/high, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/upper) "dTA" = ( /obj/item/wrench, /obj/effect/turf_decal/tile/purple/full, @@ -11190,13 +11357,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/space/basic, /area/space/nearstation) -"dVW" = ( -/obj/machinery/light/small/dim/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmospherics_engine) "dVX" = ( /obj/structure/table, /obj/item/storage/box/mousetraps{ @@ -11228,15 +11388,6 @@ }, /turf/open/floor/iron/dark, /area/station/cargo/storage) -"dWB" = ( -/obj/machinery/atmospherics/components/binary/pump/off/orange/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer5{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) "dWI" = ( /obj/machinery/door/airlock/command{ name = "Quartermaster's Office" @@ -11470,12 +11621,12 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/uppernorth) -"eaX" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, +"ebh" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 + dir = 9 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/main) "ebi" = ( @@ -11626,13 +11777,17 @@ "ecC" = ( /turf/closed/wall, /area/station/security/office) -"ecF" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/multiz/dark/visible/layer5{ - name = "Port To Turbine" +"ecV" = ( +/obj/structure/railing/corner{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "edv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -11697,6 +11852,11 @@ /obj/effect/turf_decal/trimline/yellow/filled/warning, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"efa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/main) "efb" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /obj/machinery/modular_computer/preset/id, @@ -11751,6 +11911,21 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark/textured, /area/station/hallway/secondary/exit/departure_lounge) +"egg" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "ego" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -11897,6 +12072,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) +"eiw" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "eiI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -11920,22 +12105,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/tile, /area/station/commons/dorms) -"eiZ" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/maintenance/central/greater) "ejb" = ( /turf/open/floor/carpet/green, /area/station/command/heads_quarters/hop) +"ejd" = ( +/obj/effect/spawner/random/structure/grille, +/obj/structure/cable, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "eje" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -11950,6 +12128,12 @@ }, /turf/open/floor/iron, /area/station/cargo/lobby) +"ejj" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "ejl" = ( /obj/machinery/holopad/secure, /turf/open/floor/carpet/red, @@ -11984,6 +12168,11 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/asteroid) +"ejN" = ( +/obj/machinery/holopad, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/engineering/atmos) "ejS" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/north, @@ -12036,6 +12225,17 @@ dir = 4 }, /area/station/service/chapel) +"ekK" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/project) "ekL" = ( /obj/effect/turf_decal/tile/neutral, /obj/structure/disposalpipe/segment{ @@ -12078,10 +12278,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"elz" = ( -/obj/structure/window/spawner, -/turf/open/floor/plating, -/area/station/engineering/main) "elE" = ( /obj/structure/door_assembly, /turf/open/misc/asteroid, @@ -12141,16 +12337,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) -"enL" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "enT" = ( /obj/structure/stairs/north, /turf/open/floor/iron, @@ -12215,6 +12401,15 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"eoW" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/project) "eph" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -12241,19 +12436,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/exam_room) -"epx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/dark_blue, -/obj/effect/landmark/start/hangover, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "epA" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12329,12 +12511,25 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured, /area/station/science/robotics/lab) -"eqX" = ( +"eqW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/engineering/atmos) +"eqY" = ( +/obj/structure/closet/secure_closet/hop, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) +/obj/item/storage/box/stickers, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hop) "era" = ( /obj/structure/cable, /obj/machinery/door/firedoor, @@ -12536,17 +12731,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/research) +"eue" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "euj" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) -"eus" = ( -/obj/structure/stairs/east, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/storage/gas) "euF" = ( /obj/structure/closet/wardrobe/white, /obj/effect/landmark/start/hangover/closet, @@ -12679,6 +12874,12 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/white/smooth_large, /area/station/science/robotics/lab) +"exp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "exz" = ( /obj/structure/chair/sofa/bench/left{ dir = 4 @@ -12993,15 +13194,17 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) -"eCd" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/obj/machinery/power/apc/auto_name/directional/west, +"eCe" = ( /obj/structure/cable, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) +/obj/machinery/light/directional/south, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos) "eCp" = ( /obj/machinery/power/terminal{ dir = 1 @@ -13189,9 +13392,6 @@ /obj/item/reagent_containers/cup/bucket, /turf/open/floor/plating, /area/station/science/robotics/storage) -"eES" = ( -/turf/open/openspace, -/area/station/engineering/atmospherics_engine) "eEV" = ( /obj/machinery/camera/autoname/directional/north{ network = list("ss13","rd","xeno") @@ -13247,18 +13447,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/prison) -"eFM" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "eFP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -13508,6 +13696,17 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/science/research) +"eLN" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "eLU" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -13556,6 +13755,11 @@ /obj/structure/closet/firecloset, /turf/open/floor/iron/textured, /area/station/hallway/primary/central) +"eNh" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/iron/dark, +/area/station/engineering/atmospherics_engine) "eNj" = ( /obj/effect/spawner/costume/sexyclown, /turf/open/floor/plating, @@ -13589,6 +13793,15 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"eOl" = ( +/obj/machinery/electrolyzer{ + anchored = 1 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/mix) "eOn" = ( /obj/effect/landmark/atmospheric_sanity/ignore_area, /turf/closed/wall/r_wall, @@ -13623,14 +13836,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/service/hydroponics) -"eOZ" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "ePC" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/effect/mapping_helpers/burnt_floor, @@ -13762,6 +13967,15 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/station/medical/chemistry/minisat) +"eSA" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/camera/autoname/directional/east, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/light/dim/directional/east, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "eSE" = ( /obj/structure/chair/sofa/corp/left{ desc = "Looks like someone threw it out. Covered in donut crumbs."; @@ -13789,12 +14003,6 @@ /obj/machinery/light/dim/directional/south, /turf/open/floor/iron/white, /area/station/medical/virology) -"eSL" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "eSR" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 @@ -13846,6 +14054,20 @@ /obj/machinery/portable_atmospherics/canister, /turf/open/floor/plating, /area/station/maintenance/department/science) +"eUz" = ( +/obj/item/circuitboard/machine/thermomachine, +/obj/item/circuitboard/machine/thermomachine, +/obj/item/storage/bag/construction, +/obj/item/storage/bag/construction, +/obj/item/storage/bag/construction, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/closet/crate, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/iron/large, +/area/station/engineering/atmos) "eUD" = ( /obj/effect/turf_decal/plaque{ icon_state = "L12" @@ -13913,6 +14135,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/lobby) +"eWp" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos) "eWB" = ( /obj/machinery/computer/prisoner/management{ dir = 4 @@ -14030,12 +14261,6 @@ /obj/item/book/manual/wiki/security_space_law, /turf/open/floor/wood, /area/station/security/detectives_office/private_investigators_office) -"eYM" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) "eYO" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 8 @@ -14104,6 +14329,15 @@ }, /turf/open/floor/iron/white, /area/station/medical/chemistry/minisat) +"eZz" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/engineering/main) +"eZI" = ( +/turf/open/floor/iron, +/area/station/engineering/atmos/project) "eZN" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, @@ -14218,14 +14452,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/grimy, /area/station/security/detectives_office/private_investigators_office) -"fcK" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "fcM" = ( /obj/effect/turf_decal/trimline/blue/arrow_ccw{ dir = 1 @@ -14298,6 +14524,17 @@ }, /turf/open/floor/iron/textured, /area/station/security/processing) +"feq" = ( +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/airlock/maintenance_hatch, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) "feu" = ( /obj/effect/landmark/start/janitor, /obj/effect/decal/cleanable/dirt, @@ -14798,6 +15035,10 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"foE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/misc/asteroid, +/area/station/maintenance/department/medical) "foL" = ( /obj/effect/spawner/structure/window/hollow/reinforced/middle, /turf/open/floor/plating, @@ -14806,16 +15047,6 @@ /obj/structure/grille, /turf/open/misc/asteroid, /area/station/maintenance/department/science) -"fpg" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/structure/ladder{ - icon_state = "ladder10" - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmospherics_engine) "fpi" = ( /obj/structure/railing{ dir = 1 @@ -14879,6 +15110,16 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"fpO" = ( +/obj/effect/turf_decal/tile/dark_blue, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "fpY" = ( /turf/open/openspace, /area/station/science/ordnance) @@ -15026,47 +15267,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) -"fst" = ( -/obj/machinery/light/dim/directional/west, -/obj/structure/cable, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/item/holosign_creator/atmos{ - pixel_y = 5 - }, -/obj/structure/table, -/obj/item/holosign_creator/atmos{ - pixel_y = 7 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos/upper) -"fsu" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/engineering/atmos/upper) "fsx" = ( /obj/machinery/door/airlock/security/glass, /obj/effect/turf_decal/tile/red/fourcorners, @@ -15266,24 +15466,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"fvF" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/cable, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"fvW" = ( -/obj/structure/cable, -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ +"fvB" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/textured, /area/station/engineering/atmos) "fwz" = ( /obj/effect/turf_decal/plaque{ @@ -15330,12 +15519,23 @@ }, /turf/open/floor/carpet/blue, /area/station/command/heads_quarters/cmo) -"fwV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"fxd" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) +"fxe" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) +/obj/machinery/vending/wardrobe/atmos_wardrobe, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/engineering/atmos) "fxg" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/disposalpipe/segment, @@ -15346,6 +15546,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/chemistry/minisat) +"fxn" = ( +/obj/structure/table, +/obj/effect/spawner/random/food_or_drink/donkpockets{ + pixel_x = 0; + pixel_y = -1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "fxo" = ( /obj/structure/tank_holder/extinguisher, /obj/machinery/light/small/dim/directional/north, @@ -15428,29 +15636,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) -"fyJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/door/airlock/command/glass{ - name = "Server Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/structure/cable, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/dark, -/area/station/science/server) "fyS" = ( /obj/structure/cable, /turf/open/floor/iron/dark/textured_corner{ dir = 4 }, /area/station/science/xenobiology) -"fze" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "fzg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -15796,19 +15987,6 @@ /obj/effect/turf_decal/stripes, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"fEu" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/requests_console/auto_name/directional/east, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/ore_update, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron, -/area/station/engineering/lobby) "fEI" = ( /obj/machinery/rnd/production/techfab/department/service, /obj/machinery/firealarm/directional/west, @@ -15844,16 +16022,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/command/corporate_showroom) -"fFb" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/station/engineering/main) "fFg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -16098,15 +16266,12 @@ dir = 1 }, /area/station/command/bridge) -"fIG" = ( -/obj/effect/turf_decal/tile/yellow{ +"fIF" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/storage/gas) +/turf/closed/wall/r_wall, +/area/station/engineering/atmos) "fIW" = ( /obj/structure/cable, /obj/item/radio/intercom/directional/west, @@ -16269,13 +16434,6 @@ }, /turf/open/floor/plating, /area/station/medical/patients_rooms/room_a) -"fMW" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/engineering/main) "fMY" = ( /obj/machinery/smartfridge/chemistry/virology/preloaded, /obj/effect/turf_decal/tile/green/half/contrasted{ @@ -16528,18 +16686,6 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/iron/freezer, /area/station/security/prison/shower) -"fQk" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/command/directional/east, -/obj/machinery/suit_storage_unit/captain{ - req_access = list("captain") - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "fQp" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -16608,13 +16754,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/exam_room) -"fRB" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "fRC" = ( /obj/effect/turf_decal/tile/brown/opposingcorners{ dir = 1 @@ -16854,12 +16993,34 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, /area/station/cargo/storage) +"fWo" = ( +/obj/machinery/suit_storage_unit/radsuit, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/engine) "fWp" = ( /obj/effect/turf_decal/siding/white{ dir = 10 }, /turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) +"fWz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/railing, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/light/dim/directional/north, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "fWD" = ( /obj/structure/railing{ dir = 4 @@ -16873,6 +17034,24 @@ /obj/item/sticker/clown, /turf/open/misc/asteroid, /area/station/asteroid) +"fWL" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/upper) +"fWQ" = ( +/obj/effect/landmark/start/chief_engineer, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "fWZ" = ( /obj/structure/girder, /obj/structure/lattice/catwalk, @@ -16890,28 +17069,10 @@ "fXn" = ( /turf/open/floor/wood/parquet, /area/station/cargo/boutique) -"fXo" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/item/pickaxe, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "fXt" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/engine, /area/station/engineering/supermatter) -"fXC" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) "fXD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -16986,13 +17147,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"fYX" = ( -/obj/machinery/power/solar{ - id = "foreport"; - name = "Fore-Port Solar Array" - }, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/port/fore) "fYZ" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -17006,6 +17160,20 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"fZd" = ( +/obj/machinery/pdapainter{ + pixel_y = 2 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/airalarm/directional/south, +/obj/item/toy/figure/ian{ + pixel_y = 15; + pixel_x = 7 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hop) "fZe" = ( /turf/closed/wall, /area/station/security/detectives_office) @@ -17120,6 +17288,19 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating/reinforced/airless, /area/station/asteroid) +"gbz" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/box, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos/upper) "gbF" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 @@ -17363,6 +17544,10 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"gfj" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron, +/area/station/engineering/lobby) "gft" = ( /obj/structure/transport/linear/public, /obj/effect/landmark/transport/transport_id{ @@ -17373,6 +17558,26 @@ }, /turf/open/floor/plating/elevatorshaft, /area/station/medical/treatment_center) +"gfy" = ( +/obj/machinery/door/airlock/engineering{ + name = "Engine Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"gfE" = ( +/turf/closed/wall, +/area/station/engineering/atmos) "gfF" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -17413,19 +17618,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"ggP" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/main) -"ggQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "ggY" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -17663,6 +17855,14 @@ /obj/effect/turf_decal/tile/dark_blue/opposingcorners, /turf/open/floor/iron, /area/station/command/bridge) +"glg" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/atmos) "gli" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 @@ -17697,12 +17897,6 @@ /obj/effect/turf_decal/tile/dark_blue/half/contrasted, /turf/open/floor/iron, /area/station/command/meeting_room) -"glC" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "glH" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -17788,6 +17982,12 @@ }, /turf/open/floor/iron, /area/station/cargo/warehouse/upper) +"gnJ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/checker, +/area/station/engineering/atmos/project) "gnO" = ( /obj/machinery/door/airlock/medical{ name = "Treatment Centre" @@ -17845,13 +18045,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"gpJ" = ( -/obj/machinery/shower/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/main) "gpR" = ( /obj/machinery/light/dim/directional/south, /obj/structure/closet/emcloset, @@ -17931,10 +18124,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark, /area/station/service/bar) -"grb" = ( -/obj/effect/turf_decal/siding/thinplating_new, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) "grl" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18037,6 +18226,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"gsH" = ( +/obj/machinery/light_switch/directional/north, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos/mix) "gsM" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -18509,6 +18705,9 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark/textured, /area/station/medical/morgue) +"gAo" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/atmos/mix) "gAv" = ( /obj/structure/table, /obj/item/storage/box/evidence, @@ -18674,19 +18873,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_white, /area/station/science/xenobiology) -"gCY" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 4 - }, -/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos/storage/gas) "gDl" = ( /obj/structure/sign/xenobio_guide/directional/south, /obj/structure/tank_holder/extinguisher, @@ -18701,6 +18887,14 @@ dir = 1 }, /area/station/security) +"gDo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "gDQ" = ( /obj/effect/turf_decal/tile/brown/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18832,6 +19026,9 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating/airless, /area/space/nearstation) +"gGg" = ( +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "gGh" = ( /obj/effect/landmark/start/cyborg, /obj/structure/window/reinforced/spawner/directional/east, @@ -18908,6 +19105,13 @@ /obj/machinery/light/small/broken/directional/east, /turf/open/floor/iron/freezer, /area/station/maintenance/department/medical/central) +"gHD" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/atmos) "gHL" = ( /obj/structure/table, /obj/effect/turf_decal/bot, @@ -19138,15 +19342,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/carpet, /area/station/service/chapel/funeral) -"gLQ" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/storage/gas) "gLZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -19155,6 +19350,22 @@ dir = 1 }, /area/station/command/corporate_dock) +"gMb" = ( +/obj/machinery/button/door/directional/west{ + id = "atmos"; + name = "Atmospherics Lockdown"; + req_access = list("atmospherics") + }, +/obj/machinery/light_switch/directional/west{ + pixel_x = -35 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/engineering/atmos) "gMk" = ( /turf/open/misc/asteroid, /area/station/asteroid) @@ -19193,6 +19404,13 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) +"gMF" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/closet/radiation, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "gMH" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/abandoned, @@ -19209,6 +19427,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/science) +"gMO" = ( +/obj/structure/displaycase/captain{ + pixel_y = 5 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/computer/security/telescreen/minisat/directional/west, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain/private) "gNd" = ( /obj/structure/rack, /obj/effect/decal/cleanable/dirt/dust, @@ -19271,30 +19502,17 @@ dir = 1 }, /area/station/science/research) -"gOB" = ( -/obj/structure/table, -/obj/item/storage/box/monkeycubes{ - pixel_x = 4 - }, -/obj/item/storage/box/monkeycubes{ - pixel_x = 6; - pixel_y = 9 - }, -/obj/item/storage/pill_bottle/mutadone{ - pixel_x = -9 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/siding/purple/corner{ +"gOw" = ( +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/flesh_shears{ - pixel_y = 10; - pixel_x = -5 +/obj/effect/turf_decal/arrows/red{ + dir = 1 }, -/turf/open/floor/iron/white/textured, -/area/station/science/genetics) +/obj/machinery/ticket_machine/directional/west, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "gOG" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -19331,6 +19549,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) +"gPQ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/engineering/lobby) "gPZ" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 @@ -19341,6 +19566,18 @@ }, /turf/open/floor/iron, /area/station/security/office) +"gQa" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/engineering/atmos) "gQe" = ( /obj/structure/lattice, /obj/effect/turf_decal/stripes/asteroid/line{ @@ -19506,6 +19743,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/paramedic) +"gTM" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/project) "gTS" = ( /obj/machinery/door/poddoor/shutters{ id = "warehouse"; @@ -19530,11 +19778,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/engineering/break_room) -"gTY" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "gUa" = ( /obj/machinery/conveyor{ dir = 8; @@ -19544,27 +19787,6 @@ /obj/item/mod/construction/broken_core, /turf/open/floor/plating, /area/station/maintenance/disposal) -"gUe" = ( -/obj/structure/table, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_y = 4 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage/gas) "gUl" = ( /obj/machinery/light/directional/west, /obj/machinery/button/door/directional/north{ @@ -19706,6 +19928,14 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"gWp" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "gWr" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning, /obj/structure/sign/warning/directional/west, @@ -19713,6 +19943,11 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"gWy" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos) "gWG" = ( /obj/structure/cable, /obj/machinery/door/airlock/security/glass{ @@ -20109,6 +20344,29 @@ /obj/item/stock_parts/capacitor, /turf/open/floor/iron/dark, /area/station/engineering/storage/tcomms) +"hcF" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/checker, +/area/station/engineering/atmos/upper) +"hcP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table, +/obj/item/storage/toolbox/drone{ + pixel_x = -1; + pixel_y = -1 + }, +/obj/item/storage/toolbox/drone{ + pixel_x = -1; + pixel_y = 11 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "hcQ" = ( /obj/structure/table/reinforced/rglass, /obj/item/paper_bin{ @@ -20127,15 +20385,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) -"hcU" = ( -/obj/machinery/door/airlock/atmos{ - name = "Incinerator" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/structure/cable/multilayer/connected, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/maintenance/disposal/incinerator) "hdd" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -20149,6 +20398,16 @@ dir = 1 }, /area/station/engineering/atmos) +"hdl" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "hdq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -20234,10 +20493,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/wood, /area/station/service/lawoffice) -"heO" = ( -/obj/structure/falsewall/reinforced, -/turf/open/floor/plating, -/area/station/engineering/lobby) "heP" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -20330,6 +20585,20 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"hgg" = ( +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "hgi" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 @@ -20557,6 +20826,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/station/service/library) +"hkC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "hle" = ( /obj/machinery/light/directional/south, /obj/structure/table/glass, @@ -20592,6 +20866,9 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"hlN" = ( +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "hmb" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -20672,14 +20949,6 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) -"hmA" = ( -/obj/structure/cable, -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "hmF" = ( /obj/structure/table/wood, /obj/effect/turf_decal/sand/plating, @@ -20873,20 +21142,6 @@ /obj/effect/turf_decal/stripes/full, /turf/open/floor/engine, /area/station/command/corporate_dock) -"hqj" = ( -/obj/machinery/door/airlock/atmos/glass{ - name = "Crystallizer Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "hqk" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -21030,15 +21285,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/morgue) -"hrA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/lobby) "hrI" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, @@ -21058,13 +21304,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood/parquet, /area/station/service/theater) -"hrS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmospherics_engine) "hsb" = ( /obj/structure/cable/multilayer/multiz, /obj/item/assembly/mousetrap/armed, @@ -21138,17 +21377,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"htx" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/shower/directional/south{ - name = "emergency shower" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/dark_blue/end, -/turf/open/floor/iron/textured, -/area/station/engineering/atmos) "htJ" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -21165,6 +21393,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet/purple, /area/station/service/library) +"htQ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/checker, +/area/station/engineering/atmos/mix) "htV" = ( /obj/machinery/door/airlock/external, /obj/effect/mapping_helpers/airlock/cyclelink_helper, @@ -21214,15 +21449,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood/parquet, /area/station/cargo/boutique) -"huP" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +"huO" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/engineering/main) +/area/station/maintenance/disposal/incinerator) "huX" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance/two, @@ -21251,20 +21484,6 @@ /obj/structure/railing/corner, /turf/open/openspace, /area/station/engineering/supermatter/room) -"hvt" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) -"hvw" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/trunk/multiz/down, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "hvA" = ( /obj/structure/transport/linear/public{ base_icon_state = "catwalk"; @@ -21349,6 +21568,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured_large, /area/station/service/kitchen) +"hwt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "hwP" = ( /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) @@ -21425,13 +21650,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"hzg" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing, -/obj/structure/cable/layer3, -/obj/machinery/door/firedoor/border_only, -/turf/open/openspace, -/area/station/engineering/atmos) "hzh" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/newscaster/directional/south, @@ -21609,6 +21827,12 @@ }, /turf/open/floor/iron, /area/station/service/bar) +"hCM" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "hCN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21777,6 +22001,14 @@ dir = 1 }, /area/station/service/chapel) +"hGm" = ( +/obj/structure/cable, +/obj/effect/turf_decal/sand/plating, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "hGo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21939,6 +22171,29 @@ }, /turf/open/floor/plating/airless, /area/station/maintenance/department/science) +"hJN" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/door/window/left/directional/east{ + name = "First Aid Supplies"; + req_access = list("medical") + }, +/obj/structure/table, +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/storage/medkit/o2{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/o2, +/obj/item/storage/medkit/o2{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/white, +/area/station/medical/storage) "hJU" = ( /obj/structure/chair/wood, /obj/effect/turf_decal/siding/wood{ @@ -21950,6 +22205,10 @@ /obj/structure/stairs/south, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"hKI" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron, +/area/station/engineering/atmos) "hKM" = ( /obj/machinery/door/airlock/security/glass{ name = "Prison Wing" @@ -22057,6 +22316,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/parquet, /area/station/service/library) +"hMX" = ( +/obj/structure/stairs/east, +/obj/structure/railing, +/turf/open/floor/iron, +/area/station/engineering/atmos) "hNg" = ( /obj/structure/chair, /obj/effect/turf_decal/stripes/line{ @@ -22067,6 +22331,14 @@ "hNh" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/bridge) +"hNq" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/any/science/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "hNC" = ( /obj/structure/transport/linear/public{ base_icon_state = "catwalk"; @@ -22277,6 +22549,13 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/iron, /area/station/cargo/storage) +"hQv" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "hQy" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -22361,13 +22640,14 @@ /obj/structure/sign/poster/random/directional/north, /turf/open/floor/iron/textured_large, /area/station/cargo/sorting) -"hRp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 9 +"hRt" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/turf/open/floor/iron, -/area/station/engineering/atmos) +/obj/item/pickaxe, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "hRv" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -22377,14 +22657,6 @@ "hRB" = ( /turf/closed/wall, /area/station/service/bar) -"hRE" = ( -/obj/structure/lattice/catwalk, -/obj/structure/ladder, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/openspace, -/area/station/engineering/atmospherics_engine) "hRH" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/purple/filled/arrow_ccw, @@ -22544,12 +22816,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/science/xenobiology) -"hUr" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) "hUw" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -22647,16 +22913,6 @@ /obj/machinery/telecomms/hub/preset, /turf/open/floor/circuit/green/telecomms/mainframe, /area/station/tcommsat/server) -"hWd" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/closet/secure_closet/captains, -/obj/machinery/firealarm/directional/north, -/obj/item/storage/lockbox/medal, -/obj/machinery/status_display/evac/directional/east, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "hWt" = ( /obj/effect/turf_decal/box/corners{ dir = 8 @@ -22688,6 +22944,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/tile, /area/station/service/bar) +"hWP" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 + }, +/turf/open/floor/iron, +/area/station/maintenance/department/engine) "hWW" = ( /obj/structure/cable, /obj/effect/landmark/start/atmospheric_technician, @@ -22711,20 +22975,21 @@ }, /turf/open/floor/wood, /area/station/security/detectives_office/private_investigators_office) +"hXi" = ( +/obj/machinery/light/directional/south, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/upper) "hXk" = ( /obj/structure/disposalpipe/segment{ dir = 8 }, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"hXo" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "hXu" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 @@ -22734,6 +22999,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"hXA" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "hXK" = ( /obj/structure/closet/cardboard, /obj/effect/turf_decal/stripes/line, @@ -22791,6 +23064,15 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"hYM" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/chair/sofa/bench/left{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "hYP" = ( /obj/machinery/modular_computer/preset/id{ dir = 1 @@ -22861,6 +23143,17 @@ "iaN" = ( /turf/closed/wall, /area/station/cargo/miningoffice) +"ibf" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "ibi" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue{ @@ -22956,6 +23249,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"icB" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "icC" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt/dust, @@ -23042,16 +23343,6 @@ /obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/iron/white/smooth_large, /area/station/science/ordnance/storage) -"iej" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/structure/rack, -/obj/item/wrench/medical, -/obj/item/food/strawberryicecreamsandwich, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "iel" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater/on, /obj/effect/turf_decal/tile/yellow{ @@ -23109,12 +23400,6 @@ }, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) -"ifc" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/firealarm/directional/south, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/engineering/lobby) "ifd" = ( /turf/open/floor/engine/airless, /area/space/nearstation) @@ -23272,6 +23557,11 @@ /obj/structure/cable, /turf/open/space/openspace, /area/space/nearstation) +"iiH" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/project) "iiM" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 4 @@ -23413,6 +23703,10 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/glass/reinforced, /area/station/service/bar) +"ilX" = ( +/obj/structure/cable, +/turf/closed/wall/r_wall, +/area/station/maintenance/department/engine) "iml" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/mapping_helpers/broken_floor, @@ -23456,6 +23750,15 @@ /obj/structure/girder/displaced, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"imW" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 9 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos) "imZ" = ( /obj/effect/landmark/atmospheric_sanity/ignore_area, /turf/closed/wall/r_wall, @@ -23466,18 +23769,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"ine" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "ini" = ( /obj/effect/turf_decal/stripes{ dir = 9 @@ -23497,17 +23788,6 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/teleporter) -"inz" = ( -/obj/machinery/door/airlock/research{ - glass = 1; - name = "Slime Euthanization Chamber"; - opacity = 0 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron, -/area/station/science/xenobiology) "inC" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -23533,6 +23813,13 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"ioc" = ( +/obj/structure/tank_holder/extinguisher/advanced, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/iron/large, +/area/station/engineering/atmos) "iol" = ( /turf/closed/wall/r_wall, /area/station/service/lawoffice) @@ -23588,6 +23875,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"ipd" = ( +/obj/structure/cable, +/obj/effect/turf_decal/sand/plating, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "ipq" = ( /obj/structure/table, /obj/item/reagent_containers/condiment/saltshaker{ @@ -23656,6 +23951,18 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"ipU" = ( +/obj/machinery/door/airlock/research{ + glass = 1; + name = "Slime Euthanization Chamber"; + opacity = 0 + }, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/plasticflaps/kitchen, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/glass/reinforced, +/area/station/science/xenobiology) "ipV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/trunk/multiz{ @@ -23725,6 +24032,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/textured, /area/station/science/genetics) +"iri" = ( +/obj/machinery/door/airlock/external{ + name = "Atmospherics External Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/decal/cleanable/dirt, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/station/engineering/atmos/project) "irx" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 @@ -23902,6 +24221,12 @@ "iuB" = ( /turf/open/floor/plating/elevatorshaft, /area/station/ai_monitored/turret_protected/aisat_interior) +"iuM" = ( +/obj/machinery/light_switch/directional/south, +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/dark, +/area/station/engineering/atmospherics_engine) "iuU" = ( /obj/structure/window/reinforced/spawner/directional/west, /mob/living/basic/bot/cleanbot, @@ -23974,19 +24299,6 @@ /obj/effect/mapping_helpers/mail_sorting/engineering/ce_office, /turf/open/floor/iron, /area/station/engineering/main) -"iwm" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/bot_red, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "iwu" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, @@ -24011,15 +24323,6 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"ixc" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) "ixm" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -24063,12 +24366,6 @@ "ixU" = ( /turf/closed/wall/r_wall, /area/station/science/research) -"ixY" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) "ixZ" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/stripes/asteroid/line, @@ -24126,6 +24423,19 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/science) +"iyV" = ( +/obj/effect/turf_decal/box, +/turf/open/floor/iron/textured, +/area/station/engineering/atmos/mix) +"iyY" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "iyZ" = ( /obj/machinery/camera/autoname/directional/east{ network = list("ss13","rd","xeno") @@ -24202,6 +24512,14 @@ /obj/machinery/computer/security/telescreen/rd/directional/south, /turf/open/floor/glass/reinforced/plasma, /area/station/command/heads_quarters/rd) +"iBc" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "iBe" = ( /obj/structure/chair/pew/right{ dir = 4 @@ -24219,6 +24537,18 @@ /obj/structure/sign/poster/contraband/missing_gloves, /turf/closed/wall, /area/station/commons/storage/primary) +"iBq" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/table, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "iBs" = ( /obj/structure/table, /obj/item/stack/spacecash/c100, @@ -24228,15 +24558,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/white/small, /area/station/science/lobby) -"iBH" = ( -/obj/effect/landmark/start/chief_engineer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "iBK" = ( /obj/machinery/door/airlock/research/glass{ name = "Chemistry Minisat" @@ -24389,16 +24710,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"iEr" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/main) "iEA" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/machinery/light/cold/directional/south, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"iEB" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/siding/thinplating_new, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) "iEK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -24577,6 +24903,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/asteroid) +"iHQ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos) "iHY" = ( /obj/structure/sign/warning/explosives/directional/east, /obj/effect/turf_decal/siding/purple/corner{ @@ -24585,6 +24917,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/research) +"iIk" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "iIo" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -24719,6 +25059,11 @@ }, /turf/open/floor/iron/dark, /area/station/security/lockers) +"iJI" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "iJP" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -24877,13 +25222,6 @@ /obj/item/plant_analyzer, /turf/open/floor/grass, /area/station/security/prison/garden) -"iNv" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/port/greater) "iNC" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/item/radio/intercom/directional/south, @@ -24916,6 +25254,10 @@ /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"iOd" = ( +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "iOE" = ( /obj/item/pickaxe/mini, /turf/open/misc/asteroid, @@ -24944,6 +25286,15 @@ /obj/effect/turf_decal/trimline/yellow/filled/corner, /turf/open/floor/iron, /area/station/engineering/lobby) +"iOT" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/main) "iPd" = ( /obj/machinery/firealarm/directional/north, /turf/open/floor/carpet/executive, @@ -24959,6 +25310,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_white, /area/station/science/xenobiology) +"iPg" = ( +/turf/closed/wall/rock/porous, +/area/station/maintenance/department/medical) "iPm" = ( /obj/structure/rack, /obj/effect/turf_decal/trimline/yellow/filled/line, @@ -25034,6 +25388,17 @@ dir = 8 }, /area/station/ai_monitored/turret_protected/aisat/foyer) +"iQH" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/light/dim/directional/north, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/engineering/atmos) "iQJ" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -25140,6 +25505,19 @@ }, /turf/open/floor/iron, /area/station/engineering/main) +"iTg" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 8 + }, +/obj/machinery/meter, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "iTA" = ( /obj/structure/railing/corner{ dir = 1 @@ -25181,6 +25559,17 @@ }, /turf/open/floor/iron, /area/station/commons/locker) +"iUA" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "iUF" = ( /obj/structure/lattice, /obj/effect/spawner/random/structure/grille, @@ -25330,6 +25719,16 @@ /obj/structure/sign/warning/biohazard/directional/east, /turf/open/floor/iron/white, /area/station/maintenance/aft/upper) +"iYc" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/project) "iYB" = ( /obj/machinery/door/airlock/command{ name = "Chief Medical Officer's Office" @@ -25542,6 +25941,16 @@ /obj/structure/cable, /turf/open/floor/carpet, /area/station/security/detectives_office) +"jcN" = ( +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "jcR" = ( /obj/structure/chair/sofa/bench/left{ dir = 4 @@ -25620,6 +26029,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) +"jef" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/checker, +/area/station/engineering/atmos/mix) "jer" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/landmark/event_spawn, @@ -25725,6 +26150,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/execution/transfer) +"jfQ" = ( +/obj/machinery/light/directional/south, +/obj/structure/disposalpipe/trunk/multiz/down{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "jge" = ( /obj/effect/spawner/random/structure/crate, /obj/item/clothing/glasses/meson, @@ -25831,14 +26266,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/chemistry/minisat) -"jir" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/misc/asteroid, -/area/station/maintenance/department/cargo) "jit" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/structure/table/wood, @@ -25936,19 +26363,6 @@ /obj/effect/spawner/random/entertainment/cigarette_pack, /turf/open/floor/wood/parquet, /area/station/cargo/boutique) -"jjX" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/components/binary/crystallizer{ - dir = 1 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "jka" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -26094,6 +26508,12 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/catwalk_floor/iron_dark, /area/station/command/corporate_dock) +"jlN" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/dim/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "jlW" = ( /turf/open/floor/iron/freezer, /area/station/security/prison/shower) @@ -26173,6 +26593,17 @@ /obj/machinery/light/directional/east, /turf/open/floor/catwalk_floor/iron_dark, /area/station/command/corporate_dock) +"jnM" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/obj/machinery/light/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/project) "jnP" = ( /obj/machinery/mech_bay_recharge_port{ dir = 8 @@ -26491,14 +26922,6 @@ /obj/structure/flora/bush/sunny/style_random, /turf/open/floor/grass, /area/station/hallway/primary/central) -"jtS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "juf" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/spawner/random/structure/table, @@ -26563,10 +26986,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/paramedic) -"jvn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "jvt" = ( /obj/structure/closet/secure_closet/chemical, /obj/effect/turf_decal/stripes/line{ @@ -26574,6 +26993,10 @@ }, /turf/open/floor/iron/textured_large, /area/station/medical/treatment_center) +"jvu" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/turf/open/floor/iron/dark, +/area/station/engineering/main) "jvA" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 10 @@ -26628,19 +27051,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/wood/tile, /area/station/security/courtroom) -"jws" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"jww" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/effect/mapping_helpers/mail_sorting/service/hop_office, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "jwI" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/tile/dark_red/opposingcorners, @@ -26896,13 +27306,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) -"jAE" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/openspace, -/area/station/engineering/atmospherics_engine) "jAG" = ( /turf/closed/wall, /area/station/service/lawoffice) @@ -26954,11 +27357,25 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"jBx" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/iron, +/area/station/engineering/atmos) "jBG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"jBI" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/main) "jBJ" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/stripes/line, @@ -26986,6 +27403,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"jCj" = ( +/obj/machinery/light/small/dim/directional/west, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/treatment_center) "jCm" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/layer2{ dir = 8 @@ -27100,6 +27524,11 @@ /obj/structure/transport/linear/public, /turf/open/floor/plating/elevatorshaft, /area/station/cargo/storage) +"jDj" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/iron/dark, +/area/station/engineering/atmospherics_engine) "jDs" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/table, @@ -27147,13 +27576,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"jDT" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "jEc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, @@ -27194,6 +27616,15 @@ }, /turf/open/floor/engine, /area/station/medical/chemistry) +"jEB" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "jED" = ( /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/freezer, @@ -27210,14 +27641,11 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"jFf" = ( -/obj/structure/closet/secure_closet/atmospherics, -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage/gas) +"jFs" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "jFP" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -27491,13 +27919,6 @@ dir = 6 }, /area/station/maintenance/radshelter/medical) -"jJp" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/incident_display/delam/directional/north, -/turf/open/floor/iron, -/area/station/engineering/main) "jJv" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/rubble, @@ -27620,6 +28041,11 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/cargo) +"jLB" = ( +/obj/machinery/light/small/dim/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/engineering/atmos/project) "jLC" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/parquet, @@ -27702,6 +28128,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, /area/station/service/lawoffice) +"jNI" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/central/greater) "jNJ" = ( /obj/effect/turf_decal/siding/green, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27922,6 +28351,16 @@ }, /turf/open/floor/carpet, /area/station/service/chapel/funeral) +"jRH" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "jRI" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/random/trash/hobo_squat, @@ -28236,14 +28675,6 @@ /obj/effect/turf_decal/bot_red, /turf/open/floor/iron/textured_large, /area/station/cargo/sorting) -"jXC" = ( -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen/minisat/directional/west, -/turf/open/floor/iron, -/area/station/command/bridge) "jXL" = ( /obj/effect/spawner/random/trash/garbage{ spawn_scatter_radius = 1 @@ -28282,6 +28713,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"jYw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) "jYy" = ( /obj/effect/turf_decal/tile/neutral/diagonal_centre, /turf/open/floor/iron/dark, @@ -28816,6 +29254,14 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron, /area/station/commons/storage/primary) +"khI" = ( +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/engineering/atmos) "khJ" = ( /obj/effect/decal/cleanable/blood/old{ icon_state = "gib5-old" @@ -28909,6 +29355,13 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"kiY" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "kjf" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -28958,10 +29411,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/science) -"kjv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "kjx" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/broken_flooring/singular, @@ -29168,11 +29617,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"kmB" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/main) "kmL" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/half{ @@ -29217,20 +29661,6 @@ /obj/effect/turf_decal/bot_white/right, /turf/open/floor/iron/dark, /area/station/command/gateway) -"knK" = ( -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/storage/gas) "knX" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -29312,11 +29742,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/command/heads_quarters/ce) -"koX" = ( -/obj/structure/cable/multilayer/multiz, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "koZ" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/broken_flooring/pile, @@ -29359,10 +29784,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"kpx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) "kpy" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/effect/landmark/event_spawn, @@ -29590,18 +30011,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"ksg" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "ksl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -29631,12 +30040,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark, /area/station/security/mechbay) -"ksR" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) "ksU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -29947,12 +30350,6 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron, /area/station/cargo/storage) -"kyE" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "kyP" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -30127,12 +30524,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"kBN" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) "kBX" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/north, @@ -30205,6 +30596,14 @@ }, /turf/open/floor/iron, /area/station/command/bridge) +"kCI" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/machinery/firealarm/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/project) "kCJ" = ( /obj/structure/toilet{ dir = 4 @@ -30243,6 +30642,16 @@ }, /turf/closed/wall/r_wall, /area/station/engineering/atmos) +"kDB" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "kDC" = ( /obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/tile/blue, @@ -30254,12 +30663,13 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) -"kDI" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 5 +"kDD" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/glass/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner, /area/station/engineering/atmos/upper) "kDJ" = ( /obj/effect/turf_decal/sand/plating, @@ -30268,19 +30678,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"kDY" = ( -/obj/structure/displaycase/captain{ - pixel_y = 5 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/computer/security/telescreen/minisat/directional/west, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "kEg" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -30472,17 +30869,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/maintenance/department/science) -"kHU" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable/layer3, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/openspace, -/area/station/engineering/atmos) "kIl" = ( /obj/machinery/recharge_station, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -30500,12 +30886,6 @@ /obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) -"kIx" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 - }, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) "kIB" = ( /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, @@ -30524,11 +30904,6 @@ /obj/item/shard, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"kIS" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/main) "kIY" = ( /obj/effect/turf_decal/siding/purple, /obj/structure/disposalpipe/segment{ @@ -30571,6 +30946,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"kJK" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "kJM" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/effect/turf_decal/tile/brown/half/contrasted, @@ -30643,9 +31026,29 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/aft/upper) +"kLe" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "kLi" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/station/maintenance/department/medical/central) +"kLu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/greenscreen_camera{ + dir = 8; + pixel_y = 6; + pixel_x = -4 + }, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/captain/private) "kLw" = ( /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/engine, @@ -30722,14 +31125,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/drone_bay) -"kNb" = ( -/obj/structure/closet/secure_closet/atmospherics, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage/gas) "kNk" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -30851,6 +31246,17 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"kPL" = ( +/obj/structure/cable, +/obj/effect/landmark/start/atmospheric_technician, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "kQa" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -30880,13 +31286,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/research) -"kQz" = ( -/obj/effect/spawner/random/trash/graffiti, -/obj/item/instrument/musicalmoth, -/obj/effect/spawner/random/entertainment/musical_instrument, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/engineering/lobby) "kQF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/engine, @@ -30995,6 +31394,13 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron/textured_large, /area/station/cargo/sorting) +"kRS" = ( +/obj/machinery/shower/directional/north, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 10 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/engine) "kRX" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /obj/structure/reagent_dispensers/fueltank, @@ -31115,6 +31521,15 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/cargo/storage) +"kTI" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) "kTL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31207,6 +31622,20 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"kUM" = ( +/obj/structure/cable, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/railing, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "kUW" = ( /obj/structure/chair/pew{ dir = 4 @@ -31228,15 +31657,6 @@ /obj/machinery/door/firedoor/heavy, /turf/open/floor/plating, /area/station/science/breakroom) -"kVV" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "kVX" = ( /obj/structure/closet/secure_closet/miner, /obj/effect/turf_decal/tile/brown/anticorner/contrasted{ @@ -31260,6 +31680,18 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron, /area/station/science/robotics/lab) +"kWq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/closet/secure_closet/atmospherics, +/obj/machinery/light/dim/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"kWs" = ( +/obj/effect/landmark/start/atmospheric_technician, +/turf/open/floor/iron, +/area/station/engineering/atmos) "kWI" = ( /obj/effect/turf_decal/stripes{ dir = 1 @@ -31282,6 +31714,18 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"kXn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/medical/treatment_center) "kXs" = ( /obj/structure/railing, /obj/machinery/door/firedoor/border_only, @@ -31346,6 +31790,17 @@ /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) +"kYo" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "kYs" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 @@ -31461,18 +31916,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/service/hydroponics) -"kZW" = ( -/obj/machinery/door/airlock/research{ - glass = 1; - name = "Slime Euthanization Chamber"; - opacity = 0 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/plasticflaps/kitchen, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/glass/reinforced, -/area/station/science/xenobiology) "laf" = ( /obj/effect/spawner/random/structure/chair_comfy{ dir = 4 @@ -31555,12 +31998,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/satellite) -"lbw" = ( -/obj/structure/closet/l3closet, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/tile/green/half/contrasted, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) "lbJ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line, @@ -31637,10 +32074,32 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"ldM" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/science/research, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/science) +"ldR" = ( +/obj/machinery/camera/autoname/directional/east, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/closet/radiation, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/project) "ldT" = ( /obj/machinery/portable_atmospherics/pump, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"leh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/west, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "les" = ( /obj/machinery/door/firedoor/border_only{ dir = 1 @@ -31763,13 +32222,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /turf/closed/wall/r_wall, /area/station/engineering/supermatter) -"lfR" = ( -/obj/structure/reagent_dispensers/fueltank/large, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/upper) "lgh" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, @@ -31799,6 +32251,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/parquet, /area/station/medical/psychology) +"lgB" = ( +/obj/machinery/door/airlock/external{ + name = "Atmospherics External Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/engineering/atmos/project) "lgG" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 @@ -31919,6 +32382,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"ljh" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/atmos/project) "ljk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32011,6 +32477,18 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"lkT" = ( +/obj/structure/railing/corner/end{ + dir = 8 + }, +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos) "lls" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 1 @@ -32266,6 +32744,15 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/drone_bay) +"lqZ" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, +/obj/machinery/door/poddoor/shutters{ + id = "boutique"; + name = "Countertheft Shutters" + }, +/turf/open/floor/wood/parquet, +/area/station/maintenance/department/medical/central) "lrc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32344,6 +32831,17 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/service/cafeteria) +"lsK" = ( +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/airlock/freezer{ + name = "Freezer" + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "lta" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -32503,6 +33001,38 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron, /area/station/security/prison) +"lwc" = ( +/obj/structure/tank_dispenser{ + pixel_x = -1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"lwd" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/components/binary/crystallizer{ + dir = 1 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/directional/west, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) +"lwe" = ( +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/checker, +/area/station/engineering/atmos/upper) "lwr" = ( /obj/structure/railing, /obj/structure/cable/layer3, @@ -32522,11 +33052,6 @@ /obj/item/clothing/glasses/meson/engine, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"lww" = ( -/obj/machinery/light/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/engineering/main) "lwB" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/sign/picture_frame/portrait/bar{ @@ -32628,15 +33153,6 @@ /obj/item/reagent_containers/syringe, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"lyy" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "lyF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32665,6 +33181,16 @@ /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"lyT" = ( +/obj/machinery/light/small/dim/directional/south, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/engineering/atmos) "lyY" = ( /obj/machinery/shower/directional/south, /obj/effect/turf_decal/stripes/line, @@ -32764,13 +33290,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) -"lAs" = ( -/obj/effect/decal/cleanable/glass, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/treatment_center) "lAt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -32818,14 +33337,6 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"lBB" = ( -/obj/machinery/suit_storage_unit/radsuit, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/main) "lBC" = ( /obj/effect/turf_decal/tile/brown/anticorner/contrasted, /obj/structure/sign/poster/random/directional/south, @@ -32980,15 +33491,12 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/aisat_interior) -"lED" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +"lEC" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/lobby) +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "lEM" = ( /obj/item/radio/intercom/directional/south{ frequency = 1423; @@ -33045,11 +33553,6 @@ "lFG" = ( /turf/open/floor/glass, /area/station/command/meeting_room) -"lFJ" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/item/flashlight/flare/candle, -/turf/open/floor/plating, -/area/station/engineering/lobby) "lFK" = ( /obj/structure/chair, /obj/effect/turf_decal/stripes/line{ @@ -33198,6 +33701,17 @@ /obj/structure/table/reinforced/rglass, /turf/open/floor/iron/dark, /area/station/security/office) +"lHE" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/firealarm/directional/south, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/iron, +/area/station/engineering/atmos) "lHX" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box/white{ @@ -33241,6 +33755,25 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"lIH" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/checker{ + dir = 4 + }, +/area/station/engineering/atmos/upper) +"lIR" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "lIW" = ( /obj/item/stack/cable_coil{ amount = 1 @@ -33318,18 +33851,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"lKE" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "lKF" = ( /obj/effect/turf_decal/box/corners{ dir = 1 @@ -33406,12 +33927,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"lMj" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 9 - }, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) "lMx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -33460,10 +33975,6 @@ /obj/structure/rack, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"lNr" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/engineering/atmos) "lNu" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -33554,6 +34065,11 @@ /obj/item/gun/ballistic/revolver/russian, /turf/open/floor/wood, /area/station/commons/lounge) +"lON" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/main) "lPe" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -33704,17 +34220,14 @@ }, /turf/open/floor/iron/white, /area/station/medical/exam_room) -"lSm" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, +"lSg" = ( +/obj/effect/turf_decal/sand/plating, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/main) +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/welded, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "lSz" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/south, @@ -33905,14 +34418,6 @@ /obj/item/storage/photo_album/chapel, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) -"lWd" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/science/research, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/science) "lWF" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -34030,15 +34535,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/hallway/primary/central) -"lYp" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "lYt" = ( /obj/structure/table/reinforced, /obj/machinery/microwave, @@ -34125,6 +34621,14 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/white/herringbone, /area/station/science/breakroom) +"lZt" = ( +/obj/machinery/shower/directional/south{ + name = "emergency shower" + }, +/obj/effect/turf_decal/box, +/obj/structure/fluff/shower_drain, +/turf/open/floor/iron/dark/small, +/area/station/engineering/atmos/project) "lZu" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -34132,6 +34636,24 @@ }, /turf/open/floor/iron/textured, /area/station/hallway/primary/starboard) +"lZx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/door/airlock/command/glass{ + name = "Server Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/rd, +/obj/structure/cable, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark, +/area/station/science/server) +"lZD" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/structure/closet/crate/freezer/blood, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "lZH" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 8 @@ -34154,6 +34676,15 @@ /obj/effect/turf_decal/tile/brown/anticorner/contrasted, /turf/open/floor/iron, /area/station/cargo/storage) +"lZR" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "mam" = ( /obj/structure/closet/secure_closet/personal, /obj/machinery/power/apc/auto_name/directional/east, @@ -34278,17 +34809,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark, /area/station/commons/locker) -"mdw" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos/storage/gas) "mee" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 8 @@ -34388,6 +34908,17 @@ /obj/effect/baseturf_helper/reinforced_plating/ceiling, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"mfE" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/engineering/atmos) "mfP" = ( /obj/machinery/atmospherics/components/tank/air/layer4, /obj/effect/turf_decal/tile/green/half/contrasted{ @@ -34422,20 +34953,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/commons/fitness/recreation) -"mhc" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"mhh" = ( -/turf/open/openspace, -/area/station/engineering/atmos) "mhi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -34463,11 +34980,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/cargo/storage) -"mhA" = ( -/obj/effect/turf_decal/siding/thinplating_new, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) "mhD" = ( /obj/structure/rack, /obj/effect/spawner/random/contraband/narcotics, @@ -34481,13 +34993,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/department/cargo) -"mhG" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "mhO" = ( /obj/structure/table/reinforced, /obj/item/storage/box/beakers{ @@ -34679,6 +35184,13 @@ }, /turf/open/floor/iron/freezer, /area/station/security/prison/shower) +"mkt" = ( +/obj/effect/turf_decal/stripes{ + dir = 6 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/atmospherics_engine) "mkE" = ( /obj/structure/table/glass, /obj/item/storage/box/lights/mixed, @@ -34691,14 +35203,6 @@ /obj/machinery/computer/records/security, /turf/open/floor/iron, /area/station/security/checkpoint/supply) -"mkL" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/engineering/main) "mkN" = ( /obj/machinery/door/airlock/command{ name = "Head of Security's Tactical Shower" @@ -34722,13 +35226,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) -"mkX" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/openspace, -/area/station/engineering/atmospherics_engine) "mkZ" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, @@ -34977,6 +35474,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, /area/station/service/lawoffice) +"moA" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/maintenance/department/engine) "moH" = ( /obj/machinery/computer/records/security, /obj/machinery/airalarm/directional/east, @@ -34992,11 +35501,6 @@ /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"moU" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/main) "mpc" = ( /turf/closed/wall/rock/porous, /area/station/hallway/primary/starboard) @@ -35046,6 +35550,17 @@ /obj/structure/sign/departments/chemistry/directional/west, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"mqn" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "mqz" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc/auto_name/directional/east, @@ -35086,6 +35601,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"mrc" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "mrq" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 8 @@ -35131,6 +35652,13 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/department/bridge) +"msa" = ( +/obj/machinery/incident_display/delam/directional/north, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "msf" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/effect/spawner/random/bedsheet/any, @@ -35483,18 +36011,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/bar) -"mxL" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/green/visible{ - dir = 1 - }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "myg" = ( /obj/structure/cable, /obj/item/radio/intercom/directional/north, @@ -35546,10 +36062,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/construction/mining/aux_base) -"mzb" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) "mzB" = ( /obj/machinery/firealarm/directional/west, /obj/structure/closet/firecloset/full, @@ -35565,13 +36077,6 @@ }, /turf/open/floor/iron, /area/station/command/bridge) -"mzJ" = ( -/obj/structure/stairs/south, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) "mzU" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/door/airlock/maintenance_hatch, @@ -35628,6 +36133,27 @@ }, /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"mAW" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/button/door/directional/south{ + id = "capshut"; + name = "shutter control"; + pixel_x = -8 + }, +/obj/machinery/fax{ + fax_name = "Captain's Office"; + name = "Captain's Fax Machine" + }, +/obj/structure/table/reinforced, +/obj/machinery/keycard_auth/wall_mounted/directional/south{ + pixel_x = 8; + pixel_y = -24 + }, +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain/private) "mAX" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 @@ -35705,14 +36231,19 @@ }, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/qm) -"mCb" = ( +"mCc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/tile/yellow{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/project) "mCm" = ( /obj/effect/turf_decal/stripes, /obj/item/radio/intercom/directional/south, @@ -35787,6 +36318,13 @@ /obj/effect/spawner/random/structure/closet_empty/crate, /turf/open/floor/iron, /area/station/cargo/warehouse) +"mDf" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron, +/area/station/engineering/main) "mDr" = ( /obj/effect/landmark/event_spawn, /obj/machinery/holopad, @@ -35866,6 +36404,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security) +"mEB" = ( +/obj/effect/landmark/start/atmospheric_technician, +/turf/open/floor/glass/reinforced, +/area/station/engineering/atmos/project) "mEN" = ( /obj/item/computer_disk/maintenance/spectre_meter, /turf/open/misc/asteroid/airless, @@ -35994,6 +36536,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/smooth_large, /area/station/science/xenobiology/hallway) +"mHo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "mHu" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -36001,12 +36550,6 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/central) -"mHG" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "mHL" = ( /obj/structure/closet/secure_closet/security/sec, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -36201,11 +36744,6 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/white, /area/station/science/lab) -"mKJ" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/camera/autoname/directional/south, -/turf/open/openspace, -/area/station/engineering/atmospherics_engine) "mKM" = ( /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ dir = 8 @@ -36473,6 +37011,12 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"mPZ" = ( +/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "mQk" = ( /obj/effect/spawner/random/vending/colavend, /obj/effect/turf_decal/trimline/yellow/filled/line, @@ -36535,10 +37079,6 @@ /obj/effect/mob_spawn/corpse/human/clown, /turf/open/misc/asteroid, /area/station/asteroid) -"mRU" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/engineering/main) "mSe" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 10 @@ -36646,30 +37186,10 @@ "mUs" = ( /turf/open/floor/iron/white, /area/station/medical/storage) -"mUz" = ( -/obj/structure/table, -/obj/machinery/door/window/left/directional/east{ - name = "First Aid Supplies"; - req_access = list("medical") - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 6 - }, -/obj/item/storage/medkit/fire{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/fire, -/obj/item/storage/medkit/fire{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/white, -/area/station/medical/storage) +"mUu" = ( +/obj/item/pickaxe/improvised, +/turf/open/misc/asteroid, +/area/station/maintenance/department/medical) "mUA" = ( /obj/machinery/light/small/dim/directional/west, /obj/effect/mapping_helpers/broken_floor, @@ -36689,6 +37209,17 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/engineering/gravity_generator) +"mUH" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/port/lesser) "mUP" = ( /obj/effect/turf_decal/siding/purple{ dir = 1 @@ -36724,6 +37255,14 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos) +"mVt" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/project) "mVU" = ( /obj/effect/spawner/random/maintenance/two, /obj/effect/spawner/random/structure/crate, @@ -36774,6 +37313,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"mWk" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/engineering/atmos) "mWB" = ( /obj/machinery/requests_console/auto_name/directional/south, /obj/effect/mapping_helpers/requests_console/supplies, @@ -36881,16 +37435,6 @@ }, /turf/open/floor/iron/stairs/left, /area/station/command/corporate_showroom) -"mYb" = ( -/obj/effect/landmark/start/chief_engineer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/event_spawn, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "mYd" = ( /obj/structure/railing{ dir = 8 @@ -36925,6 +37469,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/auxlab/firing_range) +"mYS" = ( +/obj/machinery/door/airlock/atmos/glass{ + name = "Crystallizer Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "mYU" = ( /obj/machinery/requests_console/directional/west{ department = "Hydroponics"; @@ -37219,17 +37777,24 @@ /obj/machinery/door/window/brigdoor/security/cell/left/directional/east, /turf/open/floor/glass/reinforced, /area/station/security/checkpoint/science) +"ndA" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "ndB" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 }, /turf/closed/wall, /area/station/service/bar) -"ndE" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/turf/open/floor/plating, -/area/station/maintenance/department/science) "ndI" = ( /obj/structure/table, /obj/item/hand_labeler, @@ -37357,11 +37922,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter) -"neM" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/main) "neT" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/plating/reinforced/airless, @@ -37529,15 +38089,6 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"nhS" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer5{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) "nii" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37614,6 +38165,13 @@ /obj/item/storage/fancy/egg_box, /turf/open/floor/iron/white, /area/station/security/prison/mess) +"nju" = ( +/obj/structure/stairs/east, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "njM" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/wood/parquet, @@ -37751,10 +38309,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/research) -"nmr" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "nmD" = ( /obj/structure/cable/multilayer/multiz, /turf/open/floor/plating, @@ -37899,6 +38453,14 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/security/brig) +"noC" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/misc/asteroid, +/area/station/maintenance/department/cargo) "noF" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -37921,6 +38483,14 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/white, /area/station/science/auxlab/firing_range) +"noQ" = ( +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "npg" = ( /obj/structure/table/wood, /obj/item/toy/plush/carpplushie{ @@ -38031,18 +38601,22 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"nqR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 9 +"nrm" = ( +/obj/machinery/elevator_control_panel/directional/south{ + linked_elevator_id = "aisat"; + pixel_x = 8; + pixel_y = -34 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/machinery/lift_indicator/directional/south{ + linked_elevator_id = "aisat"; + pixel_x = -6; + pixel_y = -40 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) +/obj/machinery/light/small/dim/directional/north, +/obj/structure/cable/layer3, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server) "nrp" = ( /obj/machinery/door/airlock/public/glass{ name = "Fore Primary Hallway" @@ -38053,6 +38627,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"nrB" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 + }, +/obj/structure/closet/radiation, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "nrL" = ( /obj/structure/cable, /obj/structure/window/reinforced/spawner/directional/west, @@ -38073,6 +38655,12 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark, /area/station/medical/chemistry/minisat) +"nsj" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "nso" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -38104,6 +38692,13 @@ }, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) +"nsZ" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "ntd" = ( /turf/open/floor/iron/showroomfloor, /area/station/command/heads_quarters/qm) @@ -38215,6 +38810,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/hallway/secondary/command) +"nvP" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "nvQ" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 @@ -38226,6 +38828,12 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/glass/reinforced, /area/station/security/prison) +"nwa" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos) "nwc" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/camera/autoname/directional/south, @@ -38252,6 +38860,18 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"nwA" = ( +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + location = "Engineering" + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/main) "nwF" = ( /obj/structure/reagent_dispensers/fueltank, /obj/machinery/airalarm/directional/south, @@ -38275,6 +38895,11 @@ /obj/item/storage/box/bandages, /turf/open/floor/plating, /area/station/cargo/miningoffice) +"nxi" = ( +/obj/structure/cable/multilayer/multiz, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "nxG" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -38283,6 +38908,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) +"nxP" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/bot_red, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "nxY" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/glass, @@ -38356,9 +38995,6 @@ }, /turf/open/floor/iron, /area/station/engineering/main) -"nzk" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/central/greater) "nzn" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -38415,16 +39051,6 @@ /obj/effect/mapping_helpers/apc/cell_5k, /turf/open/floor/circuit/green/telecomms/mainframe, /area/station/ai_monitored/turret_protected/ai) -"nAa" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/structure/sign/poster/contraband/singletank_bomb/directional/south, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) "nAb" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/station/maintenance/department/cargo) @@ -38684,6 +39310,17 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"nEM" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/light/dim/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "nEY" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -38741,14 +39378,15 @@ }, /turf/open/floor/engine/co2, /area/station/engineering/atmos) -"nGv" = ( +"nGr" = ( /obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) "nGO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -38858,14 +39496,6 @@ }, /turf/open/floor/wood/parquet, /area/station/cargo/boutique) -"nJD" = ( -/obj/structure/cable, -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "nJF" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/left/directional/east{ @@ -38990,10 +39620,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"nKO" = ( -/obj/structure/railing/corner, -/turf/open/floor/plating, -/area/station/engineering/main) "nLb" = ( /obj/structure/closet/wardrobe/grey, /obj/effect/landmark/start/hangover/closet, @@ -39225,6 +39851,11 @@ "nPW" = ( /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"nPX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "nQm" = ( /obj/machinery/camera/motion/directional/west{ c_tag = "Secure - AI Upper External East"; @@ -39248,6 +39879,12 @@ /obj/machinery/light/warm/directional/east, /turf/open/floor/iron/dark, /area/station/medical/chemistry/minisat) +"nQK" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "nQQ" = ( /obj/effect/spawner/random/decoration/statue{ spawn_loot_chance = 50 @@ -39276,6 +39913,18 @@ /obj/machinery/light/small/dim/directional/north, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) +"nRu" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/main) "nRw" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, @@ -39298,6 +39947,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/tile, /area/station/service/bar) +"nSA" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating, +/area/station/engineering/atmos/project) "nSC" = ( /turf/closed/wall, /area/station/security/prison/shower) @@ -39341,17 +39994,6 @@ /obj/effect/spawner/random/decoration/material, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"nTA" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/structure/closet/crate/freezer/blood, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","medbay") - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "nTT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39416,6 +40058,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/checkpoint/supply) +"nVs" = ( +/obj/machinery/camera/autoname/directional/west, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "nVz" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 10 @@ -39426,6 +40078,19 @@ "nVT" = ( /turf/closed/wall, /area/station/service/cafeteria) +"nVX" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 1 + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/machinery/light/dim/directional/south, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "nWd" = ( /obj/machinery/airalarm/directional/east, /obj/structure/table, @@ -39576,27 +40241,6 @@ /obj/item/radio/intercom/command/directional/west, /turf/open/floor/catwalk_floor/iron_dark, /area/station/command/corporate_dock) -"nZw" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 5 - }, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) -"nZH" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/engineering/atmos/storage/gas) -"nZI" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos/storage/gas) "nZW" = ( /obj/structure/barricade/wooden, /obj/machinery/atmospherics/components/binary/pump/on/green/visible{ @@ -39617,6 +40261,16 @@ /obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/dark/textured, /area/station/science/robotics/lab) +"oae" = ( +/obj/item/instrument/musicalmoth, +/obj/effect/spawner/random/entertainment/musical_instrument, +/obj/item/flashlight/flare/candle{ + pixel_x = -9; + pixel_y = 12 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) "oag" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -39729,6 +40383,16 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, /area/station/maintenance/department/science) +"ocg" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance_hatch, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "ocl" = ( /obj/structure/rack, /obj/effect/spawner/random/armory/e_gun, @@ -39967,6 +40631,14 @@ "ohk" = ( /turf/open/misc/asteroid, /area/station/maintenance/disposal/incinerator) +"ohs" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "ohu" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/table, @@ -40201,6 +40873,13 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"omk" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/structure/sign/poster/official/random/directional/east, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/engineering/atmos) "omv" = ( /obj/structure/rack, /obj/effect/spawner/random/clothing/backpack, @@ -40293,10 +40972,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) -"oow" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/engineering/lobby) "ooy" = ( /obj/machinery/rnd/production/circuit_imprinter/department/science, /obj/machinery/newscaster/directional/south, @@ -40312,15 +40987,6 @@ }, /turf/open/floor/iron, /area/station/commons/locker) -"opq" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) "opG" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -40541,18 +41207,6 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) -"ost" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 6 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "osK" = ( /obj/machinery/light/cold/dim/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40587,6 +41241,12 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) +"otP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "otY" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/random/structure/closet_empty/crate, @@ -40628,23 +41288,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) -"ouG" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/cable/multilayer/connected, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "ouH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc/auto_name/directional/west, @@ -40712,6 +41355,17 @@ /obj/structure/table/wood, /turf/open/floor/carpet, /area/station/service/theater) +"owf" = ( +/obj/machinery/door/airlock/atmos{ + name = "Incinerator" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos/project) "owj" = ( /obj/structure/weightmachine, /obj/structure/window/spawner/directional/west, @@ -40863,6 +41517,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security/office) +"ozf" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/light/dim/directional/south, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "ozr" = ( /obj/effect/turf_decal/box/corners{ dir = 4 @@ -40887,29 +41549,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/security/lockers) -"oAc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/main) -"oAn" = ( -/obj/machinery/door/airlock/engineering{ - name = "Engine Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/main) "oAo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt/dust, @@ -40918,6 +41557,13 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/bridge) +"oAp" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/port/greater) "oAs" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -41155,6 +41801,16 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"oEu" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/engineering/atmos) "oEy" = ( /obj/structure/sink/directional/west, /obj/structure/mirror/directional/east, @@ -41224,6 +41880,9 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"oFp" = ( +/turf/open/floor/glass/reinforced, +/area/station/engineering/atmos/mix) "oFu" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -41313,6 +41972,25 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/commons/lounge) +"oHc" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/meter, +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 6 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "oHd" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/cable/layer3, @@ -41338,13 +42016,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"oHA" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/main) "oHC" = ( /obj/machinery/light/small/dim/directional/west, /obj/effect/mapping_helpers/broken_floor, @@ -41399,6 +42070,11 @@ /obj/machinery/light/cold/dim/directional/west, /turf/open/floor/iron/dark, /area/station/command/bridge) +"oIW" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/fence, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "oJt" = ( /obj/structure/lattice, /obj/structure/disposaloutlet{ @@ -41452,6 +42128,12 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/department/medical) +"oJP" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "oJQ" = ( /obj/item/food/grown/poppy, /obj/structure/table/wood, @@ -41538,6 +42220,14 @@ }, /turf/open/floor/iron/dark/airless, /area/station/science/ordnance) +"oLx" = ( +/obj/effect/turf_decal/siding/white{ + dir = 10 + }, +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "oLy" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/machinery/duct, @@ -41616,6 +42306,10 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white/smooth_large, /area/station/science/explab) +"oNj" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/turf/open/floor/iron, +/area/station/engineering/main) "oNo" = ( /obj/machinery/camera/autoname/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -41920,6 +42614,15 @@ "oSk" = ( /turf/closed/wall/rock/porous, /area/station/maintenance/central/greater) +"oSv" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/engineering/lobby) "oSB" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 @@ -41958,10 +42661,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/commons/locker) -"oTe" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "oTv" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, @@ -41983,15 +42682,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/lobby) -"oUb" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "oUd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42266,6 +42956,11 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/hallway/primary/starboard) +"oXJ" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/turf/open/floor/iron, +/area/station/engineering/main) "oXW" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -42321,22 +43016,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) -"oYM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"oYX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) "oZb" = ( /obj/machinery/light/dim/directional/south, /obj/structure/disposalpipe/segment{ @@ -42418,14 +43097,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"pah" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "pat" = ( /obj/effect/turf_decal/siding/red{ dir = 8 @@ -42462,6 +43133,27 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"pbe" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/main) +"pbk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/green/visible{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "pbn" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 @@ -42525,10 +43217,29 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/storage/tech) +"pcm" = ( +/obj/structure/ladder, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "pco" = ( /obj/machinery/biogenerator, /turf/closed/wall, /area/station/service/hydroponics) +"pcw" = ( +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos) "pcN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -42632,13 +43343,6 @@ /obj/structure/chair/sofa/bench/tram/solo, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"peW" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) "pfg" = ( /obj/structure/barricade/wooden, /turf/open/misc/asteroid, @@ -42801,6 +43505,15 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron, /area/station/cargo/storage) +"pie" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/checker, +/area/station/engineering/atmos/mix) "pih" = ( /obj/machinery/power/solar{ id = "forestarboard"; @@ -42825,12 +43538,6 @@ /obj/structure/table/reinforced, /turf/open/floor/iron, /area/station/cargo/storage) -"piu" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "piE" = ( /obj/structure/ladder, /turf/open/floor/plating, @@ -42887,6 +43594,9 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) +"pjz" = ( +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "pjE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -42911,22 +43621,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/space/basic, /area/space/nearstation) -"pjY" = ( -/obj/machinery/button/door/directional/west{ - id = "atmos"; - name = "Atmospherics Lockdown"; - req_access = list("atmospherics") - }, -/obj/machinery/light_switch/directional/west{ - pixel_x = -35 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/storage/gas) "pkl" = ( /turf/closed/wall, /area/station/maintenance/solars/starboard/fore) @@ -43021,6 +43715,16 @@ }, /turf/open/floor/iron/white/textured_large, /area/station/science/research) +"plD" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/wrench/medical, +/obj/item/food/strawberryicecreamsandwich, +/obj/machinery/light/dim/directional/south, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "plH" = ( /obj/machinery/button/door/directional/west{ id = "cmoshower"; @@ -43081,6 +43785,13 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hop) +"pmM" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "pmT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt/dust, @@ -43099,6 +43810,17 @@ /obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"pnJ" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics Project Room" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos/project) "pnK" = ( /obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, @@ -43229,6 +43951,12 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"ppy" = ( +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/engineering/atmos) "ppz" = ( /obj/effect/turf_decal/tile/red/diagonal_edge, /obj/structure/disposalpipe/segment{ @@ -43254,6 +43982,13 @@ dir = 1 }, /area/station/engineering/atmos/pumproom) +"ppY" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/main) "pql" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, /obj/effect/mapping_helpers/airlock/locked, @@ -43415,6 +44150,15 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"psN" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/project) "psQ" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt/dust, @@ -43479,12 +44223,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) -"ptX" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/command/bridge) "pui" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/bot_white, @@ -43564,13 +44302,16 @@ dir = 1 }, /area/station/science/research) -"pve" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +"pvh" = ( +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 8 }, -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/structure/railing, /turf/open/floor/iron, -/area/station/engineering/lobby) +/area/station/hallway/secondary/command) "pvo" = ( /obj/machinery/firealarm/directional/north, /obj/structure/table, @@ -43584,27 +44325,6 @@ }, /turf/open/floor/iron/white, /area/station/science/auxlab/firing_range) -"pvp" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/button/door/directional/south{ - id = "capshut"; - name = "shutter control"; - pixel_x = -8 - }, -/obj/machinery/fax{ - fax_name = "Captain's Office"; - name = "Captain's Fax Machine" - }, -/obj/structure/table/reinforced, -/obj/machinery/keycard_auth/wall_mounted/directional/south{ - pixel_x = 8; - pixel_y = -24 - }, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "pvy" = ( /obj/structure/window/spawner/directional/north, /turf/open/floor/iron/dark, @@ -43613,6 +44333,15 @@ /obj/machinery/telecomms/server/presets/science, /turf/open/floor/circuit/green/telecomms/mainframe, /area/station/tcommsat/server) +"pvK" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "pvT" = ( /obj/structure/flora/rock/style_random, /turf/open/misc/asteroid/airless, @@ -43650,6 +44379,12 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"pwo" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos/mix) "pwt" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/broken_flooring/pile{ @@ -43704,6 +44439,13 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"pxl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/suit_storage_unit/atmos, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "pxo" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrogen_output{ dir = 8 @@ -44210,21 +44952,12 @@ }, /turf/open/misc/asteroid/airless, /area/station/asteroid) -"pFF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/main) "pFP" = ( /obj/structure/chair/office, /obj/effect/landmark/start/lawyer, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, /area/station/service/lawoffice) -"pFZ" = ( -/turf/open/floor/plating, -/area/station/engineering/main) "pGf" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44594,14 +45327,6 @@ dir = 1 }, /area/station/service/chapel) -"pMV" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/coldroom{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "pNa" = ( /obj/machinery/door/window/left/directional/east, /turf/open/floor/grass, @@ -44813,24 +45538,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/warden) -"pRm" = ( -/obj/structure/cable/layer3, -/obj/machinery/button/elevator/directional/south{ - id = "aisat"; - pixel_x = 8; - pixel_y = -25 - }, -/obj/machinery/lift_indicator/directional/south{ - linked_elevator_id = "aisat"; - pixel_x = -6; - pixel_y = -40 - }, -/obj/machinery/camera/autoname/directional/south{ - network = list("aicore") - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/turret_protected/ai) "pRq" = ( /obj/effect/turf_decal/trimline/yellow/arrow_cw{ dir = 9 @@ -44901,13 +45608,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/wood, /area/station/service/lawoffice) -"pSH" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 4 - }, -/obj/machinery/door/window/brigdoor/right/directional/east, -/turf/open/floor/engine/airless, -/area/station/engineering/atmos) "pSK" = ( /obj/machinery/door/airlock/external{ name = "Departure Lounge Airlock"; @@ -44941,14 +45641,6 @@ }, /turf/open/floor/plating/airless, /area/station/maintenance/department/science) -"pSV" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/welded, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "pTn" = ( /obj/structure/kitchenspike, /obj/machinery/light/directional/west, @@ -45008,6 +45700,21 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/plating, /area/station/maintenance/disposal) +"pTW" = ( +/obj/machinery/door/airlock/medical{ + name = "Medical Cold Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/effect/turf_decal/siding/white, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/iron/white, +/area/station/medical/coldroom) "pTZ" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 @@ -45065,6 +45772,15 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"pUI" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos) "pUJ" = ( /obj/machinery/light/warm/directional/north, /obj/effect/landmark/event_spawn, @@ -45511,10 +46227,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark, /area/station/security/lockers) -"qcU" = ( -/obj/structure/flora/rock/pile/style_random, -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) "qdc" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -45548,6 +46260,26 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"qdE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/firealarm/directional/west, +/obj/item/analyzer{ + pixel_x = -4; + pixel_y = 8 + }, +/obj/item/analyzer{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/wrench{ + pixel_x = 6; + pixel_y = 15 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "qdR" = ( /obj/structure/table/wood, /obj/item/flashlight/flare/candle{ @@ -45661,6 +46393,15 @@ /obj/item/flashlight/lamp, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/qm) +"qfU" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "qgd" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/dark_blue, @@ -45791,6 +46532,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/circuit/green, /area/station/ai_monitored/command/nuke_storage) +"qib" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "qic" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -45882,6 +46627,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) +"qje" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/engineering/atmos) "qjk" = ( /obj/structure/broken_flooring/singular/directional/south, /turf/open/space/openspace, @@ -46058,14 +46812,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/storage/primary) -"qmJ" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/sign/poster/greenscreen/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "qmU" = ( /obj/item/radio/intercom/command/directional/west, /turf/open/floor/glass, @@ -46112,6 +46858,14 @@ }, /turf/open/floor/iron/white/smooth_half, /area/station/science/robotics/lab) +"qnX" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/coldroom{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "qob" = ( /obj/structure/table, /obj/item/stock_parts/micro_laser{ @@ -46257,6 +47011,12 @@ }, /turf/open/floor/iron/half, /area/station/security/breakroom) +"qqw" = ( +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmospherics_engine) "qqy" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/tcomms_all, @@ -46412,6 +47172,22 @@ }, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) +"qsB" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/closet{ + anchored = 1; + name = "Cold protection gear" + }, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/clothing/suit/hooded/wintercoat/science, +/turf/open/floor/iron/white/smooth_corner{ + dir = 1 + }, +/area/station/science/xenobiology) "qsI" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -46562,17 +47338,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"qwd" = ( -/obj/structure/table/wood, -/obj/item/storage/medkit{ - pixel_x = -10 - }, -/obj/item/toy/figure/ian{ - pixel_x = 5; - pixel_y = 12 - }, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) "qwu" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -46613,18 +47378,6 @@ /obj/structure/cable, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"qxE" = ( -/obj/structure/frame/computer, -/obj/item/shard, -/obj/item/shard, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) "qxG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46655,6 +47408,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/processing) +"qyd" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/iron/dark, +/area/station/engineering/atmospherics_engine) "qyg" = ( /obj/structure/railing{ dir = 5 @@ -47081,15 +47838,6 @@ }, /turf/open/floor/catwalk_floor/iron_dark/telecomms, /area/station/ai_monitored/turret_protected/ai) -"qHl" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) "qHp" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 6 @@ -47182,6 +47930,20 @@ /obj/machinery/light/cold/dim/directional/south, /turf/open/floor/iron/dark/textured, /area/station/command/heads_quarters/cmo) +"qJp" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "qJs" = ( /obj/structure/cable, /obj/structure/railing{ @@ -47300,6 +48062,15 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/lockers) +"qLt" = ( +/obj/machinery/door/airlock/atmos{ + name = "Incinerator" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/maintenance/disposal/incinerator) "qMd" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/effect/landmark/start/bartender, @@ -47312,10 +48083,6 @@ /obj/structure/bodycontainer/morgue, /turf/open/floor/iron/dark/textured, /area/station/medical/morgue) -"qMw" = ( -/obj/structure/chair/plastic, -/turf/open/floor/plating, -/area/station/engineering/main) "qMA" = ( /obj/machinery/door/airlock/maintenance_hatch, /obj/effect/mapping_helpers/airlock/access/all/supply/general, @@ -47348,24 +48115,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"qMX" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/engineering/atmos/upper) "qNo" = ( /turf/open/floor/circuit/green, /area/station/ai_monitored/command/nuke_storage) @@ -47391,6 +48140,22 @@ /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /turf/open/floor/engine/co2, /area/station/engineering/atmos) +"qNO" = ( +/obj/machinery/button/door/directional/west{ + id = "atmos"; + name = "Atmospherics Lockdown"; + req_access = list("atmospherics") + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "qNS" = ( /obj/structure/bookcase/random/fiction, /turf/open/floor/wood, @@ -47448,6 +48213,17 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/station/medical/chemistry/minisat) +"qPl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/medical/treatment_center) "qPp" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -47544,10 +48320,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/service/theater) -"qQW" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) "qRb" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, @@ -47652,6 +48424,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) +"qSM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "qTe" = ( /obj/structure/railing{ dir = 8 @@ -47947,6 +48723,16 @@ dir = 8 }, /area/station/ai_monitored/turret_protected/aisat/foyer) +"qYc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/closet/secure_closet/captains, +/obj/machinery/firealarm/directional/north, +/obj/item/storage/lockbox/medal, +/obj/machinery/status_display/evac/directional/east, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain/private) "qYe" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -48055,9 +48841,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/iron/white, /area/station/medical/chemistry/minisat) -"rat" = ( -/turf/open/floor/iron, -/area/station/engineering/atmos/storage/gas) "ray" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -48089,6 +48872,17 @@ /obj/item/restraints/handcuffs, /turf/open/floor/iron/textured_large, /area/station/command/bridge) +"raD" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/engineering/atmos) "raR" = ( /obj/effect/landmark/event_spawn, /obj/structure/cable, @@ -48120,6 +48914,13 @@ /obj/structure/cable, /turf/open/misc/asteroid, /area/station/science/research) +"rbd" = ( +/obj/structure/stairs/west, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos) "rbe" = ( /obj/effect/spawner/random/structure/grille{ spawn_loot_chance = 76 @@ -48150,17 +48951,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/ai_monitored/turret_protected/ai_upload_foyer) -"rbt" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/freezer{ - name = "Freezer" - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "rbw" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, @@ -48184,6 +48974,12 @@ dir = 8 }, /area/station/hallway/secondary/exit/departure_lounge) +"rbU" = ( +/obj/effect/landmark/navigate_destination, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos) "rce" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green{ @@ -48268,6 +49064,14 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"rdf" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "rdm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -48422,14 +49226,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/service/hydroponics) -"rfd" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) "rfi" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -48493,6 +49289,10 @@ }, /turf/open/floor/iron, /area/station/engineering/storage) +"rgK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "rgT" = ( /obj/machinery/seed_extractor, /obj/effect/turf_decal/tile/blue, @@ -48552,10 +49352,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/maintenance/port/greater) -"rhB" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/atmos/storage/gas) "rhK" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 10 @@ -48769,15 +49565,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/security/brig/entrance) -"rjO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/greenscreen_camera{ - dir = 8; - pixel_y = 6; - pixel_x = -4 - }, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/captain/private) "rjX" = ( /turf/closed/wall, /area/station/security/courtroom) @@ -48826,6 +49613,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/evidence) +"rkv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/misc/asteroid, +/area/station/maintenance/department/medical) "rkw" = ( /obj/structure/chair/office{ dir = 1 @@ -48925,17 +49717,6 @@ "rlw" = ( /turf/closed/wall, /area/station/science/xenobiology/hallway) -"rlH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) -"rlU" = ( -/obj/structure/railing/corner, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "rmi" = ( /obj/structure/table, /obj/effect/turf_decal/stripes/line, @@ -48995,6 +49776,12 @@ "rnk" = ( /turf/closed/wall, /area/station/maintenance/department/medical/central) +"rnp" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos) "rnB" = ( /obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/tile/neutral{ @@ -49018,27 +49805,12 @@ /obj/effect/turf_decal/box, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) -"roc" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/main) "rox" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "Pure to Port" }, /turf/open/floor/iron, /area/station/engineering/atmos) -"roB" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "roG" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /obj/structure/cable, @@ -49191,6 +49963,15 @@ }, /turf/open/floor/wood/parquet, /area/station/service/theater) +"rre" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "rri" = ( /turf/open/openspace, /area/station/security/prison/garden) @@ -49206,15 +49987,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/lab) -"rry" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "rrz" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -49226,6 +49998,14 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/plating, /area/station/security/prison/work) +"rrO" = ( +/obj/machinery/airalarm/directional/north, +/obj/structure/sign/poster/greenscreen/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain/private) "rrR" = ( /obj/machinery/mass_driver/trash{ dir = 8 @@ -49237,12 +50017,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/engine, /area/station/science/explab) -"rsd" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 6 - }, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) "rsk" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -49422,13 +50196,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/lobby) -"rvo" = ( -/obj/machinery/light/small/dim/directional/west, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) "rwf" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -49486,6 +50253,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/atmos) +"rwS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "rwU" = ( /obj/structure/sign/painting/large/library{ dir = 4 @@ -49559,12 +50332,6 @@ /obj/machinery/modular_computer/preset/command, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/qm) -"rxU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/storage/gas) "rxW" = ( /obj/structure/railing/corner{ dir = 1 @@ -49761,25 +50528,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"rAW" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/machinery/electrolyzer{ - anchored = 1 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/engine/airless, -/area/station/engineering/atmos) -"rAZ" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "rBb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -49887,17 +50635,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"rCD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/treatment_center) "rCL" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -49920,18 +50657,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"rCT" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable/layer3, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/openspace, -/area/station/engineering/atmos) "rCW" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -50006,6 +50731,10 @@ }, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/qm) +"rDH" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/engineering/atmos/mix) "rDI" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -50257,18 +50986,21 @@ }, /turf/open/floor/iron, /area/station/security/office) -"rIH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "rIJ" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/catwalk_floor/iron_white, /area/station/science/ordnance/testlab) +"rIZ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/table, +/obj/effect/spawner/random/food_or_drink/refreshing_beverage{ + pixel_x = 5; + pixel_y = 9 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "rJb" = ( /obj/machinery/power/smes/engineering, /obj/structure/cable, @@ -50297,11 +51029,6 @@ }, /turf/open/floor/iron, /area/station/engineering/main) -"rJy" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/storage/gas) "rJz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/engine, @@ -50382,6 +51109,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/qm) +"rLm" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) +"rLp" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/bot, +/obj/machinery/light_switch/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/mix) "rLw" = ( /obj/structure/cable/multilayer/multiz, /turf/open/floor/plating, @@ -50461,9 +51199,36 @@ }, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/station/service/kitchen/coldroom) -"rNJ" = ( -/turf/open/misc/asteroid, -/area/station/maintenance/department/medical) +"rNV" = ( +/obj/structure/table, +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_y = 4 + }, +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_x = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"rNZ" = ( +/obj/machinery/atmospherics/pipe/multiz/dark/visible/layer5{ + name = "Port To Turbine" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/camera/autoname/directional/west, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "rOq" = ( /obj/structure/chair{ dir = 1 @@ -50577,11 +51342,17 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/science/ordnance) -"rQb" = ( -/obj/effect/turf_decal/siding/thinplating_new/end, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/glass, -/area/station/engineering/main) +"rPZ" = ( +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 8 + }, +/obj/machinery/light_switch/directional/west, +/obj/effect/turf_decal/arrows/red{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "rQg" = ( /obj/structure/chair{ dir = 1 @@ -50928,6 +51699,12 @@ }, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"rVC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/project) "rVD" = ( /obj/effect/turf_decal/tile/neutral, /obj/structure/sign/directions/supply/directional/east{ @@ -51093,6 +51870,22 @@ }, /turf/open/floor/cult, /area/station/service/chapel/office) +"rXi" = ( +/obj/structure/table, +/obj/item/clothing/head/utility/welding{ + pixel_x = 6; + pixel_y = 10 + }, +/obj/item/clothing/head/utility/welding{ + pixel_y = 7 + }, +/obj/item/clothing/head/utility/welding{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "rXj" = ( /obj/structure/railing/corner{ dir = 1 @@ -51156,33 +51949,6 @@ /obj/effect/mapping_helpers/requests_console/information, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) -"rXT" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) -"rXU" = ( -/obj/structure/table, -/obj/item/clothing/head/utility/welding{ - pixel_x = 6; - pixel_y = 10 - }, -/obj/item/clothing/head/utility/welding{ - pixel_y = 7 - }, -/obj/item/clothing/head/utility/welding{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage/gas) "rXZ" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -51216,21 +51982,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"rYs" = ( -/obj/machinery/door/airlock/medical{ - name = "Medical Cold Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/effect/turf_decal/siding/white, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/white, -/area/station/medical/coldroom) "rYy" = ( /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -51239,6 +51990,20 @@ dir = 8 }, /area/station/medical/storage) +"rYI" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/iron/checker{ + dir = 4 + }, +/area/station/engineering/atmos/mix) "rYJ" = ( /obj/structure/closet/emcloset/anchored, /turf/open/floor/plating, @@ -51334,11 +52099,6 @@ }, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) -"rZX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "sab" = ( /obj/effect/landmark/start/research_director, /turf/open/floor/glass/reinforced/plasma, @@ -51476,28 +52236,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/gravity_generator) -"scd" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/poddoor/preopen{ - id = "atmos"; - name = "Atmospherics Blast Door" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/navigate_destination/atmos, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/checker, -/area/station/engineering/atmos/storage/gas) "scg" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/glass/reinforced, @@ -51601,6 +52339,14 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/security/prison/mess) +"seZ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "sfh" = ( /obj/structure/closet/secure_closet/security/sec, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -51629,6 +52375,9 @@ }, /turf/open/floor/iron, /area/station/security/office) +"sfo" = ( +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "sfu" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 @@ -51693,11 +52442,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/commons/vacant_room/commissary) -"sgw" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) "sgz" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/hop) @@ -51737,13 +52481,6 @@ }, /turf/open/floor/plating, /area/station/cargo/boutique) -"shb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "shc" = ( /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ dir = 4 @@ -51961,6 +52698,16 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) +"skS" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/any/service/general, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/department/cargo) "skV" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -52131,6 +52878,13 @@ /obj/structure/chair/sofa/bench/right, /turf/open/floor/iron, /area/station/hallway/primary/central) +"snp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "sns" = ( /obj/structure/table/wood, /obj/structure/railing{ @@ -52184,6 +52938,12 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/showroomfloor, /area/station/science/research) +"soV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "soW" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52300,17 +53060,21 @@ }, /turf/open/floor/iron/dark, /area/station/service/bar/backroom) -"sqA" = ( -/obj/machinery/door/airlock/atmos{ - name = "Hypertorus Fusion Reactor" +"sqG" = ( +/obj/machinery/door/airlock/virology/glass{ + name = "Biohazard Gear" }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmospherics_engine) +/obj/effect/mapping_helpers/airlock/access/any/medical/surgery, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "sqJ" = ( /obj/machinery/portable_atmospherics/canister/plasma, /obj/structure/window/reinforced/spawner/directional/west, @@ -52350,17 +53114,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) -"srq" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/turf_decal/siding/green/corner{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "srs" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/foyer) @@ -52756,6 +53509,14 @@ /obj/item/plant_analyzer, /turf/open/floor/grass, /area/station/security/prison/garden) +"syI" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "syL" = ( /obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron, @@ -52772,6 +53533,14 @@ "szc" = ( /turf/open/floor/engine/air, /area/station/engineering/atmos) +"szd" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/engineering/atmos) "szi" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/engine, @@ -52782,15 +53551,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/science/server) -"szp" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) "szq" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -52839,6 +53599,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /turf/open/floor/iron/dark/smooth_edge, /area/station/science/xenobiology) +"sAl" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "sAr" = ( /obj/machinery/door/airlock/medical/glass{ name = "Treatment Centre" @@ -52975,13 +53742,6 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/catwalk_floor/iron_dark, /area/station/command/corporate_dock) -"sCf" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/engineering/lobby) "sCp" = ( /obj/structure/lattice, /turf/open/openspace, @@ -53100,6 +53860,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos) +"sEX" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "sEY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/chair/comfy{ @@ -53156,6 +53923,20 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"sGb" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "E.V.A. Storage" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/effect/landmark/navigate_destination, +/obj/effect/mapping_helpers/airlock/access/any/command/eva, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron, +/area/station/ai_monitored/command/storage/eva) "sGj" = ( /obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, /obj/effect/mapping_helpers/airlock/unres{ @@ -53222,11 +54003,6 @@ "sGV" = ( /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) -"sHa" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "sHg" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -53361,6 +54137,12 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"sIR" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "sIV" = ( /turf/open/misc/asteroid, /area/station/maintenance/department/cargo) @@ -53396,16 +54178,32 @@ }, /turf/open/floor/iron/white/textured, /area/station/science/genetics) -"sJh" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/storage/gas) +"sJj" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "sJo" = ( /obj/structure/table/glass, /obj/effect/spawner/random/food_or_drink/donkpockets, /turf/open/floor/iron, /area/station/engineering/lobby) +"sJv" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "sJG" = ( /obj/effect/turf_decal/stripes{ dir = 8 @@ -53430,13 +54228,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/cargo/storage) -"sKn" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) "sKs" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -53578,13 +54369,6 @@ }, /turf/open/floor/grass, /area/station/service/hydroponics/garden) -"sNc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmospherics_engine) "sNi" = ( /obj/machinery/light/directional/north, /obj/effect/mapping_helpers/broken_floor, @@ -53697,14 +54481,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/checkpoint/science) -"sPS" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "sPV" = ( /obj/machinery/atmospherics/components/binary/passive_gate{ on = 1; @@ -53926,10 +54702,24 @@ }, /turf/open/floor/engine, /area/station/hallway/secondary/entry) +"sTJ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "sUc" = ( /obj/item/bodypart/arm/left, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) +"sUi" = ( +/obj/structure/stairs/east, +/turf/open/floor/iron, +/area/station/engineering/atmos) "sUn" = ( /obj/structure/table, /obj/item/papercutter, @@ -53949,18 +54739,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/central/lesser) -"sUI" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/freezer{ - name = "Freezer" - }, -/obj/structure/plasticflaps/kitchen, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "sUM" = ( /obj/item/radio/intercom/directional/west, /turf/open/openspace, @@ -53975,6 +54753,18 @@ /obj/effect/spawner/random/maintenance, /turf/open/misc/asteroid, /area/station/maintenance/department/cargo) +"sVp" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "sVv" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/atmospherics/components/unary/portables_connector/visible, @@ -54175,6 +54965,21 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"sYA" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "sYB" = ( /obj/machinery/door/airlock/security/glass{ name = "Engineering Security Post" @@ -54294,11 +55099,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/plating, /area/station/commons/vacant_room/commissary) -"taj" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/barricade/wooden, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "tar" = ( /obj/effect/mapping_helpers/airlock/access/all/service/kitchen, /obj/machinery/door/airlock{ @@ -54369,14 +55169,22 @@ }, /turf/open/misc/asteroid, /area/station/asteroid) -"tbv" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 +"tbx" = ( +/obj/machinery/camera/autoname/directional/west{ + network = list("ss13","medbay") }, -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) +/obj/effect/decal/cleanable/glass, +/obj/structure/broken_flooring/pile, +/obj/structure/rack, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ + dir = 1 + }, +/obj/item/storage/box/masks{ + pixel_y = 4 + }, +/obj/item/storage/box/bodybags, +/turf/open/floor/iron/white/textured, +/area/station/medical/treatment_center) "tbH" = ( /turf/open/floor/iron, /area/station/command/bridge) @@ -54397,6 +55205,13 @@ }, /turf/open/floor/carpet/executive, /area/station/command/meeting_room) +"tcj" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "tcx" = ( /obj/machinery/door/airlock/command, /obj/effect/mapping_helpers/airlock/access/all/science/rd, @@ -54600,15 +55415,6 @@ /obj/structure/closet/secure_closet/security/sec, /turf/open/floor/iron/dark, /area/station/security/lockers) -"thI" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/main) "thT" = ( /turf/open/openspace, /area/station/security/warden) @@ -54751,6 +55557,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/central) +"tjU" = ( +/obj/effect/landmark/start/chief_engineer, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "tka" = ( /obj/effect/turf_decal/tile/brown/half/contrasted, /obj/machinery/power/apc/auto_name/directional/south, @@ -54779,6 +55596,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"tkt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "tkD" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning, /obj/structure/railing, @@ -54819,6 +55643,17 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/commons/vacant_room/commissary) +"tlA" = ( +/obj/effect/turf_decal/arrows{ + dir = 4; + pixel_x = -15 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos/mix) "tlC" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -54839,10 +55674,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark/telecomms, /area/station/ai_monitored/turret_protected/ai) -"tlY" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/turf/open/floor/iron, -/area/station/engineering/lobby) "tmk" = ( /obj/machinery/door/airlock/grunge{ name = "Prison Workshop" @@ -55151,23 +55982,6 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) -"trg" = ( -/obj/machinery/firealarm/directional/south, -/obj/structure/closet{ - anchored = 1; - can_be_unanchored = 1; - name = "Cold protection gear" - }, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/clothing/suit/hooded/wintercoat/science, -/turf/open/floor/iron/white/smooth_corner{ - dir = 1 - }, -/area/station/science/xenobiology) "trs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt/dust, @@ -55295,6 +56109,9 @@ /obj/structure/grille, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"ttq" = ( +/turf/open/openspace, +/area/station/engineering/atmos/mix) "ttt" = ( /turf/closed/wall/r_wall, /area/station/command/emergency_closet) @@ -55461,6 +56278,18 @@ }, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/station/service/kitchen/coldroom) +"txb" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/trunk/multiz/down, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "txo" = ( /obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/engine, @@ -55524,6 +56353,18 @@ }, /turf/open/floor/iron/textured_large, /area/station/command/bridge) +"tys" = ( +/obj/structure/frame/computer, +/obj/item/shard, +/obj/item/shard, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 1 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/white/textured, +/area/station/medical/treatment_center) "tyu" = ( /obj/effect/turf_decal/siding/purple/corner{ dir = 1 @@ -55733,21 +56574,20 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"tBL" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "tCb" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/trimline/yellow/filled/line, /turf/open/floor/iron, /area/station/engineering/lobby) +"tCf" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/iron/checker{ + dir = 4 + }, +/area/station/engineering/atmos/mix) "tCm" = ( /obj/effect/landmark/event_spawn, /obj/structure/chair/wood{ @@ -56053,6 +56893,11 @@ }, /turf/open/floor/iron/chapel, /area/station/service/chapel) +"tHb" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/disposalpipe/trunk/multiz/down, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "tHh" = ( /obj/effect/spawner/random/structure/closet_empty/crate, /obj/effect/spawner/random/maintenance/three, @@ -56219,6 +57064,17 @@ }, /turf/open/floor/iron, /area/station/maintenance/solars/starboard/fore) +"tKG" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/structure/closet/crate/freezer/blood, +/obj/machinery/camera/autoname/directional/east{ + network = list("ss13","medbay") + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "tKX" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical{ @@ -56230,15 +57086,6 @@ }, /turf/open/floor/iron, /area/station/command/bridge) -"tLa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "tLg" = ( /turf/closed/indestructible/reinforced, /area/space/nearstation) @@ -56374,12 +57221,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"tMP" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "tMT" = ( /obj/effect/turf_decal/siding/purple/corner{ dir = 4 @@ -56608,14 +57449,6 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"tQC" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "tQF" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/mapping_helpers/broken_floor, @@ -56876,10 +57709,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"tUV" = ( -/obj/structure/cable, -/turf/closed/wall/r_wall, -/area/station/maintenance/department/engine) "tVF" = ( /obj/effect/spawner/structure/window/hollow/reinforced/middle, /obj/structure/cable, @@ -57084,18 +57913,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/command/bridge) -"tZp" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) "tZt" = ( /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/white, @@ -57427,15 +58244,6 @@ }, /turf/open/openspace, /area/station/science/xenobiology) -"ueK" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/storage/gas) "ueX" = ( /obj/machinery/exodrone_launcher, /turf/open/floor/iron/dark, @@ -57494,18 +58302,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/smooth_edge, /area/station/science/lab) -"ugo" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "ugs" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron, @@ -57556,6 +58352,17 @@ "uhc" = ( /turf/open/floor/grass, /area/station/science/genetics) +"uhd" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Office" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos/project) "uhe" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -57563,9 +58370,25 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"uhh" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/misc/asteroid, +/area/station/maintenance/department/medical) "uhi" = ( /turf/closed/wall/r_wall, /area/station/maintenance/radshelter/civil) +"uhl" = ( +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos) "uhs" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/grimy, @@ -57603,20 +58426,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) -"uhW" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/iron/checker{ - dir = 4 - }, -/area/station/engineering/atmos/upper) "uif" = ( /obj/structure/flora/rock/style_random, /turf/open/misc/asteroid/airless, @@ -57837,6 +58646,20 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/brig/entrance) +"ulw" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/iron/dark, +/area/station/engineering/atmospherics_engine) +"ulz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "ulA" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -57891,6 +58714,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"umz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 9 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos) "umA" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/east, @@ -57919,6 +58752,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos) +"umY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/atmos/project) "una" = ( /obj/structure/chair/comfy/shuttle/tactical{ name = "tactical head of security chair" @@ -57932,6 +58769,31 @@ "unk" = ( /turf/closed/wall/rock/porous, /area/station/asteroid) +"unr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) +"unt" = ( +/obj/machinery/airalarm/directional/west, +/obj/machinery/atmospherics/pipe/multiz/dark/visible/layer5{ + name = "Port To Turbine" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "unA" = ( /obj/machinery/air_sensor/nitrogen_tank, /turf/open/floor/engine/n2, @@ -57956,15 +58818,6 @@ /obj/structure/chair/office, /turf/open/floor/iron, /area/station/cargo/storage) -"unH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer5{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) "unL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/random/directional/south, @@ -58213,11 +59066,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science/robotics/lab) -"usm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) "usq" = ( /obj/effect/turf_decal/tile/red, /obj/structure/disposalpipe/junction{ @@ -58301,6 +59149,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/prison/safe) +"utE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "utH" = ( /obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -58341,12 +59195,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/wood/parquet, /area/station/service/theater) -"uuq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "uuu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -58385,21 +59233,6 @@ }, /turf/open/floor/engine, /area/station/command/corporate_dock) -"uvl" = ( -/obj/machinery/door/airlock/virology/glass{ - name = "Biohazard Gear" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/surgery, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "uvn" = ( /obj/structure/table, /obj/item/flashlight/lamp, @@ -58410,25 +59243,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) -"uvH" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 8 - }, -/obj/machinery/meter, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "uvN" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"uvY" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/engineering/atmos) "uww" = ( /obj/structure/table/reinforced, /obj/structure/desk_bell{ @@ -58947,17 +59776,6 @@ }, /turf/closed/wall, /area/station/science/ordnance/bomb) -"uFL" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 9 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos) "uFN" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/decal/cleanable/dirt/dust, @@ -58992,6 +59810,17 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) +"uHk" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/turf_decal/siding/green/corner{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "uHA" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 @@ -59094,6 +59923,13 @@ /obj/structure/cable, /turf/open/floor/plating/airless, /area/station/solars/port) +"uJp" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/iron, +/area/station/engineering/main) "uJq" = ( /obj/machinery/computer/records/medical, /obj/effect/turf_decal/tile/red/fourcorners, @@ -59104,11 +59940,6 @@ /obj/effect/mapping_helpers/engraving, /turf/closed/wall, /area/station/maintenance/department/science) -"uJA" = ( -/obj/effect/turf_decal/sand/plating, -/obj/item/rack_parts, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "uJH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59177,6 +60008,30 @@ }, /turf/open/openspace, /area/station/ai_monitored/turret_protected/aisat_interior) +"uKN" = ( +/obj/structure/table, +/obj/item/multitool{ + pixel_x = -8; + pixel_y = 11 + }, +/obj/item/multitool{ + pixel_x = -3; + pixel_y = 9 + }, +/obj/item/holosign_creator/atmos{ + pixel_y = 11; + pixel_x = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/pipe_dispenser, +/obj/item/pipe_dispenser{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/project) "uLh" = ( /obj/structure/cable, /obj/machinery/camera/autoname/directional/north, @@ -59220,6 +60075,30 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/lobby) +"uLG" = ( +/obj/structure/table, +/obj/machinery/door/window/left/directional/east{ + name = "First Aid Supplies"; + req_access = list("medical") + }, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/storage/medkit/fire{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/fire, +/obj/item/storage/medkit/fire{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/camera/autoname/directional/west, +/obj/effect/mapping_helpers/airlock/red_alert_access, +/turf/open/floor/iron/white, +/area/station/medical/storage) "uLP" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 6 @@ -59274,9 +60153,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/exam_room) -"uMq" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/storage/gas) "uMz" = ( /obj/structure/chair/office{ dir = 4 @@ -59524,12 +60400,29 @@ /obj/effect/turf_decal/trimline/blue/filled/mid_joiner, /turf/open/floor/iron/white/smooth_large, /area/station/medical/medbay/central) -"uPR" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 10 - }, +"uQa" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/iron, -/area/station/engineering/atmos/upper) +/area/station/maintenance/disposal/incinerator) +"uQh" = ( +/obj/structure/cable/layer3, +/obj/machinery/button/elevator/directional/south{ + id = "aisat"; + pixel_x = 8; + pixel_y = -25 + }, +/obj/machinery/lift_indicator/directional/south{ + linked_elevator_id = "aisat"; + pixel_x = -6; + pixel_y = -40 + }, +/obj/machinery/camera/autoname/directional/south{ + network = list("aicore") + }, +/obj/structure/plasticflaps/kitchen, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/ai_monitored/turret_protected/ai) "uQl" = ( /obj/item/flashlight/flare/candle/infinite{ pixel_x = 16; @@ -59639,6 +60532,15 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, /area/station/science/server) +"uSY" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/camera/autoname/directional/east, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos) "uTk" = ( /obj/machinery/light/warm/dim/directional/north, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -59660,13 +60562,23 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security) -"uTU" = ( -/obj/structure/tank_holder/extinguisher/advanced, -/obj/effect/turf_decal/stripes/line{ - dir = 9 +"uTz" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 8 }, -/turf/open/floor/iron/large, -/area/station/engineering/atmos) +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) +"uTP" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/main) "uUj" = ( /obj/machinery/door/airlock/highsecurity{ name = "AI Chamber" @@ -59755,12 +60667,30 @@ }, /turf/open/floor/iron/white/textured_large, /area/station/science/xenobiology) +"uVg" = ( +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/arrows/red{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "uVi" = ( /obj/structure/stairs/east, /turf/open/floor/iron/stairs/left{ dir = 8 }, /area/station/medical/storage) +"uVj" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + dir = 8; + id = "atmoshfr" + }, +/turf/open/floor/plating, +/area/station/engineering/atmos) "uVk" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/red/opposingcorners, @@ -59784,6 +60714,13 @@ }, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos) +"uVT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/atmos/project) "uVU" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 @@ -59794,15 +60731,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/storage) -"uWg" = ( -/obj/structure/closet/secure_closet/hop, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) "uWj" = ( /obj/effect/landmark/start/chaplain, /obj/machinery/holopad, @@ -59826,6 +60754,15 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/white/smooth_half, /area/station/science/research) +"uWw" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "uWy" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law{ @@ -59842,18 +60779,6 @@ dir = 1 }, /area/station/command/heads_quarters/qm) -"uWX" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1 - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) "uXe" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -60026,19 +60951,21 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/security/detectives_office) +"uZV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "vaf" = ( /obj/effect/turf_decal/tile/red{ dir = 8 }, /turf/open/floor/iron, /area/station/security) -"vas" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "vau" = ( /obj/structure/table/glass, /obj/item/storage/box/beakers{ @@ -60092,6 +61019,15 @@ /obj/machinery/light/dim/directional/west, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) +"vbA" = ( +/obj/effect/turf_decal/siding/white{ + dir = 6 + }, +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/kitchen_coldroom, +/area/station/medical/coldroom) "vbF" = ( /obj/effect/spawner/random/structure/grille, /obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4, @@ -60115,6 +61051,12 @@ }, /turf/open/floor/wood/tile, /area/station/service/bar) +"vcj" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "vck" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer5{ dir = 1 @@ -60146,22 +61088,6 @@ /obj/effect/mapping_helpers/airlock/access/all/service/crematorium, /turf/open/floor/iron/dark, /area/station/service/chapel/office) -"vcZ" = ( -/obj/item/circuitboard/machine/thermomachine, -/obj/item/circuitboard/machine/thermomachine, -/obj/item/storage/bag/construction, -/obj/item/storage/bag/construction, -/obj/item/storage/bag/construction, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/closet/crate, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/iron/large, -/area/station/engineering/atmos) "vdb" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -60187,6 +61113,12 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) +"vdS" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "vdZ" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -60269,6 +61201,17 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"vfH" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/project) "vfJ" = ( /turf/closed/wall, /area/station/maintenance/department/science) @@ -60292,6 +61235,11 @@ /obj/structure/fluff/minepost, /turf/open/misc/asteroid, /area/station/maintenance/department/science) +"vfZ" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "vgd" = ( /obj/structure/chair/office/light{ dir = 1 @@ -60320,6 +61268,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security/brig/entrance) +"vgm" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/misc/asteroid, +/area/station/maintenance/department/medical) "vgq" = ( /obj/structure/railing{ dir = 6 @@ -60433,18 +61389,6 @@ /obj/structure/flora/bush/grassy/style_random, /turf/open/floor/grass, /area/station/science/research) -"vji" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/trunk/multiz, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/storage/gas) "vjm" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -60512,6 +61456,18 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/disposal) +"vkf" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "vkn" = ( /obj/machinery/firealarm/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -60560,11 +61516,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/textured, /area/station/commons/storage/art) -"vkN" = ( -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "vkO" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/tank_dispenser/oxygen, @@ -60601,6 +61552,13 @@ }, /turf/open/floor/carpet/green, /area/station/command/heads_quarters/hop) +"vlH" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "vlJ" = ( /obj/machinery/door/airlock/security{ name = "Interrogation" @@ -60629,18 +61587,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"vlX" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/storage/gas) "vmf" = ( /obj/structure/closet/wardrobe/orange, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ @@ -60784,13 +61730,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) -"vpf" = ( -/obj/machinery/suit_storage_unit/atmos, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage/gas) "vpn" = ( /obj/machinery/power/emitter/welded{ dir = 8 @@ -60805,6 +61744,13 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/white/smooth_half, /area/station/science/robotics/lab) +"vpt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "vpz" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -60880,15 +61826,6 @@ dir = 8 }, /area/station/science/research) -"vqB" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/storage/gas) -"vqC" = ( -/obj/effect/turf_decal/stripes/line, -/turf/closed/wall, -/area/station/maintenance/department/medical/central) "vqH" = ( /obj/structure/chair/sofa/bench, /obj/effect/turf_decal/tile/neutral, @@ -60914,29 +61851,6 @@ dir = 8 }, /area/station/service/theater) -"vrN" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/window/left/directional/east{ - name = "First Aid Supplies"; - req_access = list("medical") - }, -/obj/structure/table, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 6 - }, -/obj/item/storage/medkit/o2{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/o2, -/obj/item/storage/medkit/o2{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/effect/mapping_helpers/airlock/red_alert_access, -/turf/open/floor/iron/white, -/area/station/medical/storage) "vrR" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/wood, @@ -60996,6 +61910,12 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/morgue) +"vtD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "vtN" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners{ dir = 1 @@ -61046,6 +61966,14 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal) +"vvs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/suit_storage_unit/atmos, +/obj/machinery/light/small/dim/directional/south, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "vvC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, @@ -61186,6 +62114,17 @@ /obj/structure/railing, /turf/open/floor/iron/dark/textured_large, /area/station/science/xenobiology) +"vym" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/engineering/atmos) "vyp" = ( /obj/effect/spawner/random/vending/colavend, /obj/effect/turf_decal/siding/purple{ @@ -61218,6 +62157,15 @@ dir = 8 }, /area/station/medical/pharmacy) +"vyS" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "vyZ" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt/dust, @@ -61370,6 +62318,15 @@ /obj/effect/turf_decal/box, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) +"vBv" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "vBD" = ( /obj/structure/chair/office/light{ dir = 1 @@ -61399,6 +62356,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"vCg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "vCw" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -61451,6 +62413,14 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"vDx" = ( +/obj/machinery/airalarm/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/mapping_helpers/airalarm/tlv_cold_room, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/medical/coldroom) "vDK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61550,11 +62520,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/central) -"vFq" = ( -/obj/structure/ladder, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "vFr" = ( /obj/machinery/light/dim/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -61765,6 +62730,12 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"vId" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/mix) "vIi" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, /obj/effect/turf_decal/tile/yellow{ @@ -61880,11 +62851,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/grass, /area/station/science/research) -"vLs" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/fence, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "vLx" = ( /obj/structure/rack, /obj/item/reagent_containers/cup/bottle/iodine{ @@ -62006,27 +62972,11 @@ /obj/effect/mapping_helpers/requests_console/announcement, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hop) -"vNd" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/atmos/upper) "vNg" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/uppernorth) -"vNk" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/engineering/main) "vNB" = ( /obj/machinery/vending/tool, /obj/effect/decal/cleanable/dirt, @@ -62296,14 +63246,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"vRP" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/science/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/science) "vRZ" = ( /obj/effect/turf_decal/siding/red{ dir = 4 @@ -62379,13 +63321,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"vTp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/medical/coldroom) "vTt" = ( /obj/structure/marker_beacon/burgundy, /turf/open/floor/fakebasalt, @@ -62420,11 +63355,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/janitor) -"vUb" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/large, -/area/station/engineering/atmos/storage/gas) "vUh" = ( /turf/open/floor/engine, /area/station/engineering/supermatter) @@ -62460,12 +63390,6 @@ /obj/structure/cable, /turf/open/floor/carpet, /area/station/medical/psychology) -"vUr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/storage/gas) "vUJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -62559,6 +63483,10 @@ }, /turf/open/floor/engine, /area/station/hallway/secondary/entry) +"vVU" = ( +/obj/effect/spawner/random/vending/colavend, +/turf/open/floor/iron, +/area/station/engineering/atmos/upper) "vVW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/airlock/maintenance, @@ -62566,10 +63494,6 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"vWh" = ( -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/engineering/atmospherics_engine) "vWo" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -62608,6 +63532,16 @@ /obj/item/wrench, /turf/open/misc/asteroid, /area/station/maintenance/department/science) +"vWU" = ( +/obj/machinery/light_switch/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "vWY" = ( /obj/effect/turf_decal/siding, /obj/structure/table, @@ -62632,15 +63566,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/service/cafeteria) -"vXG" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "vXS" = ( /obj/structure/broken_flooring/side, /obj/effect/decal/cleanable/dirt/dust, @@ -62813,6 +63738,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/chemistry/minisat) +"wbe" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/main) "wbf" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted, /turf/open/floor/iron/dark, @@ -62978,16 +63911,6 @@ /obj/structure/cable, /turf/open/space/basic, /area/station/solars/port/aft) -"wex" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/light/small/dim/directional/south, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos/storage/gas) "weB" = ( /obj/structure/railing/corner{ dir = 8 @@ -63086,14 +64009,6 @@ /obj/machinery/air_sensor/ordnance_burn_chamber, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) -"wgK" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) "whn" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/mess, @@ -63248,6 +64163,16 @@ }, /turf/open/floor/iron/white, /area/station/medical/chemistry/minisat) +"wkx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4 + }, +/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics, +/turf/open/floor/iron, +/area/station/engineering/atmos) "wkA" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -63383,12 +64308,6 @@ }, /turf/open/floor/iron, /area/station/security/brig) -"wmj" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/storage/gas) "wmr" = ( /obj/effect/turf_decal/stripes, /turf/open/floor/iron/dark, @@ -63452,14 +64371,6 @@ "wnY" = ( /turf/open/floor/carpet/executive, /area/station/command/corporate_showroom) -"woe" = ( -/obj/structure/tank_dispenser{ - pixel_x = -1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage/gas) "woo" = ( /obj/effect/turf_decal/stripes, /obj/machinery/portable_atmospherics/canister, @@ -63597,6 +64508,14 @@ /obj/machinery/light/small/dim/directional/north, /turf/open/floor/iron/white/smooth_large, /area/station/science/robotics/lab) +"wqP" = ( +/obj/machinery/shower/directional/south{ + name = "emergency shower" + }, +/obj/effect/turf_decal/box, +/obj/structure/fluff/shower_drain, +/turf/open/floor/iron/dark/small, +/area/station/engineering/atmos) "wqW" = ( /obj/effect/mapping_helpers/apc/full_charge, /obj/effect/mapping_helpers/apc/cell_5k, @@ -63619,14 +64538,6 @@ }, /turf/open/floor/iron/white, /area/station/security/prison/safe) -"wrQ" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) "wrU" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -63661,6 +64572,15 @@ dir = 8 }, /area/station/service/chapel) +"wsF" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/engineering/lobby) "wsI" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 @@ -63704,14 +64624,6 @@ }, /turf/open/floor/catwalk_floor/iron_white, /area/station/science/ordnance/testlab) -"wtr" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_large, -/area/station/maintenance/department/science) "wts" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners{ dir = 1 @@ -63738,6 +64650,16 @@ }, /turf/open/floor/iron/dark/side, /area/station/maintenance/radshelter/medical) +"wtC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "wtF" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold, @@ -63835,21 +64757,21 @@ /obj/effect/mapping_helpers/mail_sorting/service/hydroponics, /turf/open/floor/wood/tile, /area/station/service/bar) +"wvm" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "wvs" = ( /obj/structure/chair/sofa/bench, /obj/effect/landmark/start/prisoner, /obj/structure/cable, /turf/open/floor/iron, /area/station/security/prison) -"wvt" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/obj/machinery/door/poddoor/shutters{ - id = "boutique"; - name = "Countertheft Shutters" - }, -/turf/open/floor/wood/parquet, -/area/station/maintenance/department/medical/central) "wvC" = ( /obj/machinery/vending/wardrobe/medi_wardrobe, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -64101,6 +65023,13 @@ /obj/structure/cable, /turf/open/floor/iron/white/smooth_edge, /area/station/science/research) +"wAA" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/engineering/atmos/mix) "wAB" = ( /obj/structure/chair/stool/bar/directional/west, /obj/effect/turf_decal/siding/wood{ @@ -64200,15 +65129,6 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/service/hydroponics) -"wBU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) "wBV" = ( /obj/effect/decal/cleanable/dirt, /mob/living/carbon/human/species/monkey/angry, @@ -64260,6 +65180,10 @@ /obj/effect/spawner/random/trash/mopbucket, /turf/open/floor/plating, /area/station/maintenance/central/lesser) +"wCF" = ( +/obj/effect/turf_decal/stripes/line, +/turf/closed/wall, +/area/station/maintenance/department/medical/central) "wCG" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -64325,14 +65249,6 @@ }, /turf/open/floor/catwalk_floor/iron_white, /area/station/science/lab) -"wDe" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/structure/closet/crate/freezer/blood, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/kitchen_coldroom, -/area/station/medical/coldroom) "wDo" = ( /obj/structure/cable, /obj/effect/landmark/event_spawn, @@ -64386,11 +65302,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"wDP" = ( -/obj/effect/turf_decal/siding/thinplating_new, -/obj/effect/landmark/event_spawn, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) "wDW" = ( /obj/machinery/modular_computer/preset/id{ dir = 1 @@ -64520,13 +65431,6 @@ }, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos) -"wFC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/atmos/storage/gas) "wFG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/effect/turf_decal/stripes{ @@ -64567,6 +65471,14 @@ /obj/structure/table/wood, /turf/open/floor/carpet, /area/station/commons/dorms) +"wGE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "wGZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ dir = 8 @@ -64612,6 +65524,13 @@ "wHJ" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat_interior) +"wHN" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/project) "wIn" = ( /obj/structure/table/optable, /obj/machinery/camera/autoname/directional/west{ @@ -64621,6 +65540,14 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/white, /area/station/medical/surgery) +"wIo" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "wIr" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/cable, @@ -64676,6 +65603,19 @@ }, /turf/open/floor/iron/dark, /area/station/medical/chemistry/minisat) +"wJn" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/maintenance/central/greater) "wJy" = ( /turf/closed/wall, /area/station/medical/storage) @@ -64693,16 +65633,6 @@ /obj/effect/spawner/random/entertainment/deck, /turf/open/floor/wood, /area/station/commons/lounge) -"wKE" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) "wKO" = ( /turf/open/floor/glass, /area/station/maintenance/department/medical) @@ -64789,6 +65719,15 @@ }, /turf/open/floor/iron/dark, /area/station/medical/chemistry/minisat) +"wMm" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/atmos) "wMn" = ( /obj/structure/table, /obj/item/storage/box/prisoner{ @@ -64879,6 +65818,22 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"wNt" = ( +/obj/machinery/airalarm/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/upper) "wNK" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/stripes, @@ -64890,19 +65845,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/storage/primary) -"wNN" = ( -/obj/structure/cable, -/obj/effect/landmark/start/atmospheric_technician, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos/storage/gas) "wNZ" = ( /obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -64991,6 +65933,15 @@ /obj/effect/landmark/atmospheric_sanity/ignore_area, /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/ai_upload_foyer) +"wPD" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/mix) "wPU" = ( /obj/machinery/light/small/directional/west, /turf/open/misc/asteroid, @@ -65034,6 +65985,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/station/service/theater) +"wQQ" = ( +/obj/machinery/light/small/dim/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/checker{ + dir = 4 + }, +/area/station/engineering/atmos/project) "wQW" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral, @@ -65095,6 +66058,13 @@ "wSc" = ( /turf/open/openspace, /area/station/security/prison) +"wSe" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/turf/open/floor/iron, +/area/station/engineering/lobby) "wSf" = ( /turf/open/floor/iron/white, /area/station/medical/exam_room) @@ -65175,31 +66145,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/prison) -"wUg" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) "wUH" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/medical/chemistry/minisat) -"wUK" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/storage/gas) "wUM" = ( /obj/machinery/nuclearbomb/beer, /obj/machinery/airalarm/directional/north, @@ -65233,6 +66182,17 @@ }, /turf/open/floor/wood, /area/station/service/theater) +"wVl" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/south, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron/dark/corner, +/area/station/engineering/atmos/upper) "wVz" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/effect/decal/cleanable/dirt/dust, @@ -65259,6 +66219,9 @@ /obj/effect/mapping_helpers/airlock/access/all/science/general, /turf/open/floor/iron/white, /area/station/science/research) +"wVS" = ( +/turf/open/misc/asteroid, +/area/station/maintenance/department/medical) "wWk" = ( /obj/effect/turf_decal/stripes{ dir = 1 @@ -65295,12 +66258,6 @@ }, /turf/open/floor/wood/parquet, /area/station/medical/psychology) -"wWv" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/central) "wWy" = ( /obj/machinery/power/terminal{ dir = 8 @@ -65328,10 +66285,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"wWJ" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "wWY" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/blood/old, @@ -65356,6 +66309,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/warehouse/upper) +"wXK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/closet/secure_closet/atmospherics, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "wXO" = ( /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, @@ -65512,17 +66472,6 @@ /obj/machinery/telecomms/message_server/preset, /turf/open/floor/circuit/green/telecomms/mainframe, /area/station/tcommsat/server) -"xad" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/port/lesser) "xao" = ( /obj/structure/railing{ dir = 5 @@ -65596,6 +66545,16 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"xaK" = ( +/obj/effect/turf_decal/tile/dark_blue, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "xaM" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -65799,6 +66758,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/hallway/secondary/command) +"xer" = ( +/obj/machinery/airalarm/directional/west, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos/mix) +"xex" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/barricade/wooden, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "xey" = ( /obj/machinery/camera/autoname/directional/west, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -65888,14 +66858,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) -"xfS" = ( -/obj/structure/sign/departments/aisat/directional/east, -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ - dir = 4 - }, -/obj/machinery/photobooth, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "xgn" = ( /obj/structure/mannequin/skeleton{ starting_items = list() @@ -65944,6 +66906,19 @@ "xhy" = ( /turf/open/floor/wood/parquet, /area/station/service/theater) +"xhG" = ( +/obj/structure/table, +/obj/item/hfr_box/corner, +/obj/item/hfr_box/corner, +/obj/item/hfr_box/corner, +/obj/item/hfr_box/corner, +/obj/item/hfr_box/core, +/obj/machinery/light_switch/directional/south, +/obj/effect/turf_decal/stripes{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmospherics_engine) "xhJ" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/cmo) @@ -66227,13 +67202,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"xmH" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "xmM" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/machinery/power/apc/auto_name/directional/west, @@ -66343,16 +67311,6 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central) -"xoR" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/structure/table, -/obj/item/stack/rods/twentyfive, -/obj/item/stack/cable_coil, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/engineering/main) "xoT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66468,6 +67426,15 @@ /obj/structure/closet/crate/freezer, /turf/open/floor/plating, /area/station/maintenance/department/science) +"xry" = ( +/obj/effect/turf_decal/tile/dark_blue, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/railing, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "xrG" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/asteroid/line, @@ -66579,6 +67546,13 @@ /obj/machinery/light/directional/north, /turf/open/floor/engine, /area/station/medical/chemistry) +"xte" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/effect/mapping_helpers/damaged_window{ + integrity_damage_max = 0.5 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/central) "xtp" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 @@ -66589,6 +67563,9 @@ /obj/structure/cable/multilayer/multiz, /turf/open/floor/iron, /area/station/security) +"xts" = ( +/turf/open/floor/glass/reinforced, +/area/station/engineering/atmos/project) "xtA" = ( /obj/effect/turf_decal/tile/neutral/diagonal_centre, /obj/structure/cable, @@ -66634,6 +67611,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"xuz" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/requests_console/auto_name/directional/east, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/supplies, +/turf/open/floor/iron, +/area/station/engineering/lobby) "xuD" = ( /obj/structure/cable, /obj/machinery/button/door/directional/south{ @@ -66677,18 +67665,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"xuZ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos/storage/gas) "xvg" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ dir = 4 @@ -66784,12 +67760,23 @@ /obj/structure/cable/layer1, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"xwN" = ( +/obj/structure/cable, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "xwO" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/disposalpipe/segment, /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"xwT" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "xxe" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, @@ -66880,6 +67867,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"xxZ" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "xyG" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/power/apc/auto_name/directional/south, @@ -67354,19 +68352,6 @@ /obj/item/storage/box/monkeycubes, /turf/open/floor/iron/white/textured_large, /area/station/science/xenobiology) -"xGX" = ( -/obj/machinery/pdapainter{ - pixel_y = 2 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south, -/obj/item/storage/box/stickers{ - pixel_y = 16 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) "xGY" = ( /obj/item/radio/intercom/directional/south, /turf/open/floor/engine, @@ -67404,12 +68389,6 @@ "xHY" = ( /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"xIh" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) "xIl" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/siding/purple{ @@ -67528,19 +68507,6 @@ "xKo" = ( /turf/closed/wall, /area/station/maintenance/port/greater) -"xKp" = ( -/obj/structure/closet/preopen{ - icon_state = "bio"; - name = "level 3 biohazard gear closet" - }, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 8 - }, -/obj/item/radio/intercom/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/obj/item/tank/internals/oxygen, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) "xKx" = ( /mob/living/basic/mothroach, /turf/open/misc/asteroid, @@ -67672,6 +68638,14 @@ /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"xNw" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/smooth_large, +/area/station/maintenance/department/science) "xNy" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -67887,6 +68861,15 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"xRV" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/atmos/mix) "xSE" = ( /obj/machinery/door/poddoor/lift/preopen{ transport_linked_id = "cargo" @@ -67935,12 +68918,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/storage) -"xTP" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/upper) "xTZ" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood/tile, @@ -68004,14 +68981,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/smooth_large, /area/station/science/research) -"xVk" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/atmos/upper) "xVt" = ( /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/engine, @@ -68085,6 +69054,13 @@ }, /turf/open/floor/iron, /area/station/command/gateway) +"xWP" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "xWQ" = ( /obj/structure/cable, /obj/effect/landmark/start/bitrunner, @@ -68189,6 +69165,13 @@ /obj/effect/spawner/random/engineering/flashlight, /turf/open/floor/wood/parquet, /area/station/cargo/boutique) +"xYh" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos) "xYn" = ( /obj/machinery/door/airlock/engineering{ name = "Engineer AI Satellite Access" @@ -68512,12 +69495,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"ydX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmospherics_engine) "yec" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -68608,11 +69585,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, /area/station/command/gateway) -"ygc" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "ygh" = ( /obj/structure/disposaloutlet{ dir = 4 @@ -68723,6 +69695,30 @@ }, /turf/open/floor/iron/dark, /area/station/security/warden) +"yhJ" = ( +/obj/structure/table, +/obj/item/storage/box/monkeycubes{ + pixel_x = 4 + }, +/obj/item/storage/box/monkeycubes{ + pixel_x = 6; + pixel_y = 9 + }, +/obj/item/storage/pill_bottle/mutadone{ + pixel_x = -9 + }, +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/flesh_shears{ + pixel_y = 10; + pixel_x = -5 + }, +/turf/open/floor/iron/white/textured, +/area/station/science/genetics) "yhV" = ( /obj/effect/turf_decal/siding/purple, /obj/effect/turf_decal/stripes/line{ @@ -68914,13 +69910,11 @@ dir = 8 }, /area/station/command/meeting_room) -"ylQ" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/glass/reinforced, -/area/station/engineering/atmos/upper) +"ylI" = ( +/obj/effect/turf_decal/sand/plating, +/obj/item/rack_parts, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "ylR" = ( /obj/structure/table, /obj/item/aicard, @@ -77576,7 +78570,7 @@ cLf cLf rGO rGO -nMk +sKL rGO nMk rGO @@ -77833,7 +78827,7 @@ cLf rGO opZ opZ -fYX +opZ urS opZ opZ @@ -78347,7 +79341,7 @@ cLf opZ opZ opZ -fYX +opZ rGO opZ opZ @@ -78861,7 +79855,7 @@ dUc opZ opZ opZ -fYX +opZ rGO opZ opZ @@ -80963,9 +81957,9 @@ awi fpK ilk rnk -alW -rvo -xKp +tbx +jCj +bxR rnk dnO rnk @@ -81220,9 +82214,9 @@ ina fpK hoD rnk -qxE -lAs -lbw +tys +aDO +doM rnk dnO rnk @@ -81478,7 +82472,7 @@ rnk rnk rnk dKw -uvl +sqG dKw rnk fjC @@ -81725,7 +82719,7 @@ tRf lLk lLk lLk -wWv +hCM koZ mPX szK @@ -81964,7 +82958,7 @@ fZg bVs ycz bVs -cAv +dgx uAW xfN icM @@ -81988,7 +82982,7 @@ iFU bSX qPN xwO -mHG +sIR ecy sme rCz @@ -82011,9 +83005,9 @@ xOQ wwj hvP fma -eCd -dHU -wDe +vbA +vDx +lZD rnk bAr rnk @@ -82267,10 +83261,10 @@ gdf rnb tTl jOH -rYs -vTp -vTp -iej +pTW +dik +dik +plD rnk gtK stE @@ -82525,9 +83519,9 @@ amK ckH sMO fma -eOZ -rIH -nTA +oLx +icB +tKG rnk gtK vlR @@ -82718,7 +83712,7 @@ hMa cpB eSS eSS -abw +nGr eSS esl ggY @@ -82775,15 +83769,15 @@ fvo jPO ojS kvW -rCD +kXn xaC dKw dKw dKw dKw rnk -vqC -hXo +wCF +bAa rnk rnk gtK @@ -83032,7 +84026,7 @@ fvo pwn isy hSB -cnd +qPl uPg bui yit @@ -83531,9 +84525,9 @@ vXS rnk rnk rnk -vrN +hJN rkL -mUz +uLG uAt ehs wkK @@ -83783,7 +84777,7 @@ mhz kTC nnL ylf -cOf +xte bfc tiI rnk @@ -86355,7 +87349,7 @@ fXn fXn cQm huK -wvt +lqZ oUd rnk mrr @@ -86897,7 +87891,7 @@ xuK uNd mTs hLw -gTY +jFs gvk pEZ qaV @@ -87616,7 +88610,7 @@ iPp aSZ jwb tzs -fXC +skS xoT ycG kib @@ -90229,7 +91223,7 @@ prW tOm jLr rnk -srq +uHk rnk rnk kic @@ -93501,9 +94495,9 @@ axD axD axD axD -qmJ +rrO jxq -kDY +gMO axD axD dUc @@ -93758,7 +94752,7 @@ hrM aGz ien csW -rjO +kLu toJ dGh jqu @@ -93802,7 +94796,7 @@ mMT mMT twW pTn -pMV +qnX mMT hwk hRB @@ -94060,7 +95054,7 @@ uZg byb fBA nlz -rbt +lsK cXL enu tGt @@ -94528,11 +95522,11 @@ cLf uuN uuN axD -hWd -fQk +qYc +cFF ruc jcW -pvp +mAW axD eKR sgz @@ -94828,7 +95822,7 @@ bcu pPy mMT mMT -sUI +amu mMT mMT mMT @@ -95046,8 +96040,8 @@ eYO mrq eBK bQc -ptX -jXC +cad +bus fCY loC ejb @@ -95059,7 +96053,7 @@ sRP qgn wsS eXM -xGX +fZd sgz dFM lUp @@ -95307,7 +96301,7 @@ nlQ nlQ lQD sgz -uWg +eqY cdX pLO sFB @@ -95827,11 +96821,11 @@ dhl fbC qms auM -hvt -iwm -aBy -mhG -jDT +pvh +nxP +uVg +rPZ +gOw uDE ahw nvK @@ -96084,11 +97078,11 @@ nAx kaz dbJ mMH -sPS -jww -btw -btw -btw +xry +cUB +xaK +fpO +fpO iow cEf oMr @@ -96344,7 +97338,7 @@ rEp qgd xaI bzE -epx +dEV teT fpm cas @@ -97117,7 +98111,7 @@ vOe vOe pBu juw -xfS +bde dLx qGk kmu @@ -99946,7 +100940,7 @@ utM utM utM swP -aLz +sGb tuA sGs wOi @@ -101796,7 +102790,7 @@ iin iin iin rtL -wKE +ocg gxM cmZ osX @@ -104548,7 +105542,7 @@ wze aby hGZ wZz -cdo +nrm wZz ipR kYu @@ -104594,7 +105588,7 @@ azv nMI kAw pyi -szp +kTI hRd sBm bAE @@ -105113,7 +106107,7 @@ jOq jZV sgu tlp -aXA +jYw ajQ nMI cLf @@ -105594,7 +106588,7 @@ vxX vfJ oBP raz -wtr +xNw rrq wFb irJ @@ -105614,7 +106608,7 @@ xOU nMI nMI nMI -xad +mUH nMI nMI nMI @@ -106640,7 +107634,7 @@ lhx vVk kcB wMZ -rXT +feq kNk bwQ mEs @@ -106672,7 +107666,7 @@ hUw qjw mUg gTV -piu +aBf gEJ jEc sJo @@ -107445,13 +108439,13 @@ msV eyg dUi myg -sCf -svf -svf +gfj +jxd +jxd svf svf pTJ -rfd +iIk ulc dbn uFb @@ -107702,10 +108696,10 @@ gTV eyg wpn cFc -tlY -vEZ -nPM -tQC +svf +svf +cRQ +wSe fQO eqp ruZ @@ -107953,16 +108947,16 @@ duo jMa dpU fQp -pve -lKE +oSv +wsF gsM tFW mZc -cFc -ifc -ruZ -ruZ -ruZ +aSF +xuz +aBo +moA +hWP ruZ ruZ ruZ @@ -108210,18 +109204,18 @@ pUt dHL dpU bnK -lED -tLa +bbc ocB ocB -hrA -enL -aOb +czb +czb +gPQ +aWD ruZ +xDn +aWD +aWD heP -apK -apK -apK bTt svK ulc @@ -108469,16 +109463,16 @@ dpU jco oss vEZ -fEu +cxv +vEZ vEZ -ine hmz -bLS -ruZ -bcA -ruZ -ruZ +aWD +fWo +qcQ +kRS ruZ +soV ruZ ugJ mIY @@ -108721,24 +109715,24 @@ eLV sbf cbJ giD -uMq -uMq -uMq -scd -uMq -uMq +fTX +fTX +fTX +dcL +fTX +fTX +hfp +fTX +fTX aWD -xDn +epE +hnu +jvu aWD -aWD -aWD -wuS -aWD -chV -rDD +soV ruZ ruZ -tUV +ilX ruZ ruZ chV @@ -108978,21 +109972,21 @@ arB pvX pvX rJD -rhB -woe -pjY -xuZ -jFf -uMq -lBB -qcQ -gpJ +hfp +lwc +gMb +mWk +wXK +kWq +hcP +qdE +fIF aWD -xoR -huP -dBX -ahl -hQm +tMD +nRu +cCj +aWD +nwA aWD rZb rJb @@ -109235,28 +110229,28 @@ jak tnp mSN oQp -rhB -rXU -gLQ -xuZ -vpf -uMq -epE -hnu -neM -kmB -roc -btl -lyy -rhS -sqw +hfp +rXi +szd +vym +oEu +oEu +oEu +uvY +vvs +aWD +aWD +gfy +aWD +aWD +wuS aWD iTa wWy jzJ aWD -cNM -rhS +nsj +ugV jeY dCM btl @@ -109489,35 +110483,35 @@ rpS rpS wGZ dow -sgw +bzC bzC oAO -rhB -gUe -ueK -xuZ -vpf -uMq -tMD -lSm -cCj +hfp +rNV +dgn +iyY +hQv +otP +cqY +omk +pxl aWD -jJp -btl -oAc -moU -ggP -eaX -kVV +msa +aHO +pbe +dBb +cyj +bPC +xfi mjf sNU -aer +nVs xfi wBH -ggQ +rhS mLN btl -kIS +wIo ryC mnU lpe @@ -109746,21 +110740,21 @@ wfN gVx cLs bND -cYa +rbU bND -fvW -uMq -wUK -wmj -gCY -kNb -uMq -aWD -oAn -aWD +eCe +fTX +iQH +xYh +wkx +gfE +wqP +raD +fTX +fTX aWD cNM -mCb +wGE xCf urc xCf @@ -110004,20 +110998,20 @@ cKo gza hFF lfn -oYM -nqR -knK -vji -wFC -wNN -nZI -mdw -aWD -cXn -vNk -oHA -xfi -jtS +gHD +umz +pcw +mfE +nwa +kPL +gfE +wqP +raD +uhl +iOT +jBI +wbe +efa rhS rhS equ @@ -110028,9 +111022,9 @@ dAe rhS rhS rhS -rhS -gaN nHr +gaN +rhS sqw ryC kqC @@ -110252,29 +111246,29 @@ jSu cnS rwF fCG -wgK -uTU +lHE +aVG fTX -wUg -wrQ -tbv +fvB +eWp +uSY fTX -htx -hUr -wBU -aKA -uMq -fIG -dmW -rxU -rat -wex -aWD -eFM -xCf -xCf -xCf -cYB +ioc +glg +dbL +iHQ +fTX +aRq +ejN +ulz +vdS +rwS +lyT +fTX +uJp +rhS +rhS +efa rhS rhS rhS @@ -110509,29 +111503,29 @@ oEZ rFZ bND mjR -bND -vcZ +jBx +rbd fTX fTX fTX fTX fTX -aDJ -hUr -wBU -mzJ -uMq -vlX -vUr -vUr -vUr -eus -aWD -qWG -vas -fMW -cfJ +eUz +glg +dbL +iHQ +fTX +fxe +gQa +eqW +aFt +qje +ppy +khI +eZz ybD +cfJ +vyS ybD ybD ybD @@ -110766,26 +111760,26 @@ jSu cnS gvR bND -bND -dAo +hKI +lkT fTX -deX -rAW -pSH +gWy +rnp +gWy fTX -ciF -hUr -wBU +cYk +glg +dbL dYx -uMq -vqB -sJh -rJy -vUb -uMq -aWD -mkL -qHp +fTX +fTX +nju +sUi +hMX +fTX +fTX +fTX +uFC uFC uFC jnY @@ -111023,26 +112017,26 @@ nqK cnS bND bND -lNr -bND -ecF -dWB +sAl +rwS +unt +vck +vck vck -nhS vck flQ -hRp -wBU -diM -uMq -vqB -sJh -rJy -vUb -nZH +wMm +dbL +iHQ +aoM +fTX +uVj +uVj +uVj +fTX +oae +uFC uFC -jnY -oUb uFC lNk sJG @@ -111283,24 +112277,24 @@ bND bND gvR bND -eYM +bND +fIZ fIZ -oYX umT mjP jZN -uFL -azs -uMq -vqB -sJh -rJy -vUb -uMq +imW +pUI +iuM +kUX +eNh +jDj +ulw +kUX +bzi uFC boT djU -wFG lLU utV cPG @@ -111540,25 +112534,25 @@ bND trz bND bND -qQW -mzb -kBN +kWs +bND +bND mVf kUX lXI mRu eeo kUX -mRu -mRu -mRu -mRu kUX +eNh +jDj +ulw +kUX +uFC uFC jsL kpn nPW -nPW auj cPG oDn @@ -111810,13 +112804,13 @@ jfo jfo jfo jfo +qqw xxi uFC eBZ kpn pxu pxu -pxu oyV axQ yho @@ -112067,11 +113061,11 @@ kGZ kGZ kGZ tbk +kGZ rkp uFC boT kAh -wCm qWs utV gea @@ -112324,8 +113318,8 @@ pdR kzk qRF kGZ -cPx -uFC +qyd +xhG uFC uFC uFC @@ -112583,7 +113577,7 @@ cEh kGZ woo kUX -vxX +uFC vxX uFC cUD @@ -113055,7 +114049,7 @@ aku xAd upd upd -ndE +iJI mkV dcc uvx @@ -113866,7 +114860,7 @@ nLd nLd nLd owL -fpg +mkt bBr dUc dUc @@ -121556,7 +122550,7 @@ jQS mbA jQS tMz -inz +bwv fUp jQS poF @@ -146747,10 +147741,10 @@ xtB xRj hSM kYT -vLs -aCv -vLs -aCv +oIW +iPg +oIW +iPg qoN qoN kGS @@ -147004,12 +147998,12 @@ fLe qlE hXL kYT -cGs -wWJ -wWJ -aCv -hvw -fXo +dPn +rLm +rLm +iPg +tHb +hRt fnh eOA jSE @@ -147260,14 +148254,14 @@ oOV fLe xRj dWl -ygc -wWJ -wWJ -wWJ -fvF -duU -hmA -nJD +fxd +rLm +rLm +rLm +ejd +xwN +hGm +ipd hyL kJW kYT @@ -147521,10 +148515,10 @@ kYT qoN qoN qoN -aCv -wWJ +iPg +rLm qoN -aCv +iPg ygt dXH kYT @@ -147779,7 +148773,7 @@ wOU wOU kYT qoN -wWJ +rLm qoN bGk bGk @@ -148036,7 +149030,7 @@ fxF fxF kYT qoN -taj +xex qoN bGk mqc @@ -148292,8 +149286,8 @@ tMu fxF fxF kYT -wWJ -wWJ +rLm +rLm qoN bGk sHo @@ -148311,7 +149305,7 @@ bVY lgA nDF fnh -mhc +ibf fnh fnh fnh @@ -148549,7 +149543,7 @@ bHg mYd uUP kYT -wWJ +rLm qoN qoN bGk @@ -148806,7 +149800,7 @@ eqv udi oTW kYT -wWJ +rLm kYT bGk bGk @@ -149041,7 +150035,7 @@ vxX vxX poi xeh -jir +noC sBb pic gli @@ -149063,7 +150057,7 @@ wOU wOU wOU kYT -taj +xex kYT ogL cPZ @@ -149320,7 +150314,7 @@ wOU vxX vxX qoN -wWJ +rLm kYT auB waT @@ -149577,7 +150571,7 @@ wOU vxX vxX qoN -wWJ +rLm kYT xtb fwJ @@ -149834,7 +150828,7 @@ wOU vxX vxX qoN -wWJ +rLm kYT auB auB @@ -150091,7 +151085,7 @@ epK fnh qoN qoN -taj +xex kYT jEu oYC @@ -150347,8 +151341,8 @@ xMY aDW fnh qoN -rNJ -rNJ +wVS +wVS kYT kYT bGk @@ -150602,11 +151596,11 @@ gBu pWL kra kra -nGv -bgY -bgY -bgY -bgY +vgm +uhh +uhh +uhh +uhh qoN fnh wnL @@ -150861,9 +151855,9 @@ jpx aLE fnh qoN -rNJ -koX -bgY +wVS +nxi +uhh qoN fnh igq @@ -151117,10 +152111,10 @@ iKn gcD msE fnh -aCv -cGs -vFq -dog +iPg +dPn +pcm +rkv qoN fnh evQ @@ -151375,9 +152369,9 @@ xeA otY fnh qoN -rNJ -blM -dog +wVS +mPZ +rkv qoN fnh evQ @@ -151633,8 +152627,8 @@ otY fnh qoN qoN -rNJ -kpx +wVS +foE qoN fnh gWX @@ -151890,9 +152884,9 @@ vOu fnh qoN qoN -rNJ -kpx -qcU +wVS +foE +big fnh jbG ubo @@ -152146,11 +153140,11 @@ vxX vxX vxX qoN -rNJ -rNJ -kpx -rNJ -eSL +wVS +wVS +foE +wVS +xwT mDT cyw uSN @@ -152403,9 +153397,9 @@ fnh fnh fnh fnh -qcU -kpx -kpx +big +foE +foE qoN fnh sxa @@ -152656,13 +153650,13 @@ vxX vxX vxX fnh -bmu -tMP -sHa -pSV -kpx -bzu -qcU +vfZ +jlN +cIl +lSg +foE +bvf +big qoN fnh igq @@ -152913,13 +153907,13 @@ vxX vxX vxX fnh -bmu -bMl -uJA +vfZ +ohs +ylI fnh qoN -rNJ -doZ +wVS +mUu qoN vxX vxX @@ -153175,9 +154169,9 @@ fnh fnh fnh qoN -aCv -tBL -aCv +iPg +vBv +iPg lDQ lDQ lDQ @@ -155985,7 +156979,7 @@ gYW gYW gYW wjI -oTe +qib aLN aLN aLN @@ -156242,7 +157236,7 @@ jVk fuk tFf xiM -oTe +qib aLN aLN aLN @@ -156499,7 +157493,7 @@ gYW gYW gYW wjI -oTe +qib aLN aLN aLN @@ -156751,7 +157745,7 @@ jCD gYW gYW gYW -eiZ +wJn gYW bXD gYW @@ -157273,7 +158267,7 @@ vFg gYW gYW gYW -nzk +jNI jJb jJb jJb @@ -157530,7 +158524,7 @@ wjI wjI wjI eHU -nzk +jNI dRq bfN uhi @@ -157787,7 +158781,7 @@ wPn gYW cjp wjI -nzk +jNI qAh mwx ktr @@ -158044,7 +159038,7 @@ sbp wPn xJd xiM -nzk +jNI pDs wFZ uhi @@ -158301,7 +159295,7 @@ gYW gYW sKs jBh -nzk +jNI lIp jAR tZL @@ -158558,11 +159552,11 @@ tAa gYW gYW wjI -nzk -nzk -nzk -nzk -nzk +jNI +jNI +jNI +jNI +jNI rMj jIK sDd @@ -161865,7 +162859,7 @@ lFG oDK qIJ fHX -qwd +dcp ppb jwL nDR @@ -161904,7 +162898,7 @@ uSe cjp wjI wjI -azV +aVb hPk mnP xFT @@ -163705,7 +164699,7 @@ tAa aWJ dTe dTe -roB +kJK iGa fKo xUy @@ -170084,7 +171078,7 @@ kWb lWW kBh upw -pRm +uQh kWb lWW lWW @@ -171130,7 +172124,7 @@ uif fYe lJq xeJ -vRP +hNq bWi bWi iHH @@ -172221,7 +173215,7 @@ dFB vUO xnl nfP -ixc +cxC cvT cKc dsJ @@ -172713,7 +173707,7 @@ bkk bkk bkk bkk -fcK +syI bkk bkk bkk @@ -172966,14 +173960,14 @@ qic xKo joo bkk -ost -bMG -vXG -jjX -ugo -uvH -uhW -eyg +xer +oHc +pvK +lwd +vkf +iTg +rYI +gAo eyg isT isT @@ -173223,14 +174217,14 @@ oxB xKo joo bkk -ksg -ktL -ktL -dKI -anN -fRB -opq -iZa +pwo +hgg +gGg +iyV +hwt +wAA +lZR +gAo dUi dUi dUi @@ -173480,14 +174474,14 @@ vFM uqr joo bkk -mxL -xTP -jgs -jws -anN -uPR -uWX -iZa +gsH +pbk +snp +nPX +hwt +nQK +nVX +gAo lyN lyN lyN @@ -173701,7 +174695,7 @@ fYe lJq jmY obA -gOB +yhJ yiW gFg pQz @@ -173737,14 +174731,14 @@ xKo xKo lVx bkk -rAZ -glC -ktL -jvn -anN -anN -vNd -iZa +sYA +mqn +cIz +rgK +hwt +gGg +gMF +gAo dRs lyN lyN @@ -173755,11 +174749,11 @@ fqs tCb fjt gij -cVn -thI -pFF -pFF -pFF +uTP +iEr +ppY +ppY +ppY iwk pzC eUW @@ -173994,14 +174988,14 @@ dDG lVx cie bkk -cMW -tZp -aaY -aaY -aaY -aaY -qHl -iZa +tCf +buV +buV +ejj +wPD +ejj +nrB +gAo pSb qJs jHn @@ -174012,18 +175006,18 @@ aqu nvw aWD wCG -alv +lON guO rhS -kyE +rhS rhS bWl -rhS -alv -rhS -nHr -lYp -pah +guO +oXJ +ybD +bfE +dqQ +jfQ aWD eNj uYG @@ -174251,28 +175245,28 @@ bkk bkk bkk bkk -ewM -ewM -ewM -ewM -ewM -ewM -hqj +gAo +gAo +rDH +rDH +mYS +rDH +iZa iZa iZa uyj -dUi -dUi -heO -dUi +iZa +iZa +iZa +iZa +iZa +iZa aWD -aWD -aWD -vzC -aWD -mog -mog -fFb +cNM +lON +rhS +oNj +ceh ybD cSd ybD @@ -174504,31 +175498,31 @@ ent cIN lVx bkk -axv -kHU -kHU -rCT -kHU -kHU -kHU -kHU -kHU -kHU -ouG -fst -dBp -bPH -dUi -lFJ -oow -lFJ -aWD -mRU -sCp -sCp -aWD -mog -iNj +doj +xRV +pie +caJ +eOl +rLp +vId +egg +xRV +htQ +iZa +iBq +qNO +qJp +nEM +bOJ +cwI +lIR +hcF +jcN +ebh +avN +lON +oNj +qHp wtH wtH jNL @@ -174760,31 +175754,31 @@ vxX gMk vWx dor -bkk -hzg -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -fsu -fze -lMj -ylQ -dUi -oow -kQz -oow -aWD -rQb -mog -sCp -aWD -aWD +xWP +eLN +utE +duE +xxZ +xxZ +xxZ +xxZ +iBc +qSM +gWp +ovD +jRH +cXu +anN +ktL +ktL +ktL +ktL +ozf +iZa +qWG +nHr +rhS +sqw wtH wtH rsw @@ -175018,31 +176012,31 @@ gMk cIN lVx bkk -hzg -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -fsu -nmr -ixY -mhA -dUi -lFJ -oow -lFJ -aWD -mRU -mog -sCp -sCp -sCp -wje +kYo +gGg +gGg +oFp +oFp +oFp +oFp +gGg +gGg +beB +iZa +hXA +cCJ +anN +vCg +vCg +uIj +sfo +wvm +noQ +eZz +mDf +ybD +qHp +wtH anX mGP jjI @@ -175275,34 +176269,34 @@ xKo xKo bjy bkk -hzg -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -fsu -shb -ixY -iEB -dUi -dUi -dUi +ndA +gGg +oFp +oFp +oFp +oFp +oFp +oFp +gGg +jEB +aKk +kLe +uZV +anN +ktL +vCg +vVU +eue +iZa aWD aWD -lww -mog -mog -mog -sCp -wje +aWD +aWD +aWD +wtH uca eVA -mYb +tjU oZC aKj wje @@ -175532,34 +176526,34 @@ wlR lNe lVx bkk -hzg -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -qMX -xmH -ixY -wDP -xVk -lfR +aCu +sTJ +oFp +oFp +oFp +oFp +oFp +oFp +gGg +rdf iZa -aWF -elz -mog -mog -mog +kDB +cuQ +sJj +exp +gDo +nsZ +hdl +ewM mog sCp +sCp +sCp +mog wje cSC jPb -iBH +fWQ eVA qqh wje @@ -175789,30 +176783,30 @@ jBG oEN aCL bkk -hzg -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -csH -nmr -nZw -rsd -rlU -dTz -iZa -pFZ -nKO -mog -mog -mog +tlA +unr +gGg +oFp +oFp +oFp +oFp +gGg +rgK +kiY +ovD +txb +gbz +aeX +csJ +cyX +fxn +rIZ +ewM +sCp +sCp mog sCp +sCp wje vno lAE @@ -176042,34 +177036,34 @@ gMk vxX vPt woL -iNv +oAp xKo tpz bkk -hzg -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -mhh -rry -rZX -kjv -fwV -vkN -qdV +ttq +jef +ejj +ejj +eSA +nvP +qfU +ejj +ejj +rre iZa -qMw -aJz +fWz +qdV +qdV +qdV +sJv +uTz +hYM +ewM +mog mog mog mog mog -sCp wje wtH kjR @@ -176276,7 +177270,7 @@ cYs obA obA obA -lWd +ldM vfJ jxa jxa @@ -176303,25 +177297,25 @@ uab qhG qhG qhG -hcU -qhG +qhG +qLt qhG qhG iZa +iZa ovD ovD ovD -ovD -ovD iZa -lMj -ksR -ksR -kIx -nAa iZa -aWD -aWD +kUM +qdV +qdV +qdV +sJv +vtD +eiw +iZa uFC uFC tel @@ -176559,11 +177553,11 @@ ohk uab qhG awM -eqX -efQ -drK -unH -sKn +leh +hkC +rNZ +bur +uQa ovD btZ djW @@ -176571,14 +177565,14 @@ oas muw dLW iZa -dhH -pMG -pMG -grb -peW +wNt +oJP +oJP +oJP +ecV +wVl +iZa iZa -vxX -vxX uFC xlG tGb @@ -176820,7 +177814,7 @@ qpt rbw rbw cZf -bDk +hlN ovD mio jgs @@ -176828,14 +177822,14 @@ nep pMG pCF iZa -kDI -xIh -xIh -rsd -cti +vWU +pMG +pMG +pMG +bwi +hXi iZa vxX -vxX uFC xlG tGb @@ -177077,22 +178071,22 @@ fUL kwh ylm vEE -dSN +huO iZa -cvX -uuq -rlH +vcj +vCg +tkt uIj jgs -adP -aaY -aaY -aaY -aaY -cCQ +lwe +lIH +seZ +ajp +kDD +iUA +fWL iZa vxX -vxX uFC xlG tGb @@ -177334,21 +178328,21 @@ diZ fvq psi smn -nUS -qhG -sqA -kUX -mRu -mRu -mRu -kUX -mRu -mRu -mRu -mRu -mRu -kUX -vxX +vpt +ljh +uhd +ljh +nSA +nSA +nSA +ljh +ljh +nSA +pnJ +nSA +ljh +ljh +ljh vxX uFC xlG @@ -177591,20 +178585,20 @@ ipu qhG evO sIQ -usm -qhG -ydX -hrS -vWh -eES -eES -eES -eES -eES -eES -eES -vWh -kUX +iOd +ljh +mCc +mVt +psN +psN +psN +iYc +jnM +psN +ekK +mVt +gnJ +ljh vxX vxX uFC @@ -177830,7 +178824,7 @@ sab sdn iFN aXl -fyJ +lZx aXl iFN vxX @@ -177848,20 +178842,20 @@ tNK vkp qgD smn -rbw -btj -dVW -sNc -vWh -eES -eES -eES -eES -eES -eES -eES -vWh -kUX +mHo +owf +wQQ +wtC +dSo +aRa +eZI +xts +xts +xts +bbE +uVT +lEC +ljh vxX vxX uFC @@ -178106,19 +179100,19 @@ qhG qhG sjR xmZ -qhG -qhG -qhG -vWh -eES -eES -eES -eES -eES -eES -eES -vWh -kUX +ljh +ljh +ljh +eoW +vfH +xts +xts +xts +xts +xts +umY +wHN +ljh vxX vxX uFC @@ -178365,17 +179359,17 @@ smn keJ keJ qdl -qhG -vWh -eES -eES -eES -eES -eES -eES -eES -mKJ -kUX +ljh +kCI +vfH +xts +xts +mEB +xts +xts +umY +vlH +ljh fYe vxX uFC @@ -178622,17 +179616,17 @@ stS bDk bqz tXf -qhG -vWh -eES -eES -eES -eES -eES -eES -eES -vWh -kUX +ljh +uKN +vfH +xts +xts +xts +xts +xts +umY +tcj +ljh fYe fYe uFC @@ -178879,17 +179873,17 @@ mra rhi bDk eju -qhG -vWh -eES -eES -eES -eES -eES -eES -eES -vWh -kUX +ljh +cCZ +vfH +eZI +xts +xts +xts +eZI +rVC +lEC +ljh fYe fYe uFC @@ -179136,17 +180130,17 @@ vwh nUS bDk eJi -qhG -vWh -eES -eES -eES -eES -eES -eES -eES -mkX -kUX +ljh +gTM +vfH +pjz +sEX +mrc +pmM +aZp +aZp +sVp +ljh hen hen uFC @@ -179393,17 +180387,17 @@ ofx tEu bDk eJi -qhG -vWh -vWh -vWh -vWh -vWh -vWh -vWh -jAE -hRE -kUX +ljh +lZt +cbD +uWw +ljh +lgB +ljh +ldR +cKW +iiH +ljh hen hen uFC @@ -179650,17 +180644,17 @@ llW llW llW feQ -qhG -kUX -kUX -kUX -kUX -kUX -kUX -kUX -kUX -kUX -kUX +ljh +ljh +ljh +ljh +ljh +jLB +ljh +ljh +ljh +ljh +ljh hen fYe uFC @@ -179910,11 +180904,11 @@ vbd fYe vxX vxX -vxX -vxX -vxX -vxX -vxX +hhX +dnD +iri +coS +hhX vxX vxX vxX @@ -180167,11 +181161,11 @@ uLR tAo vxX vxX -vxX -vxX -vxX -vxX -vxX +hhX +akH +mxt +cue +hhX vxX vxX vxX @@ -180425,8 +181419,8 @@ fYe fYe vxX vxX -vxX -vxX +hhX +mxt hhX hhX vxX @@ -180683,7 +181677,7 @@ uVI mUQ hhX hhX -hhX +mxt hhX hhX vxX @@ -182485,10 +183479,10 @@ hhX hhX hhX hhX -hhX -hhX -hhX -hhX +cLf +cLf +cLf +cLf hhX hhX hhX @@ -182742,10 +183736,10 @@ hhX hhX hhX hhX -hhX -hhX -hhX -hhX +cLf +cLf +cLf +cLf hhX hhX hhX @@ -182999,10 +183993,10 @@ hhX hhX hhX hhX -hhX -hhX -hhX -hhX +cLf +cLf +cLf +cLf hhX hhX hhX @@ -187092,7 +188086,7 @@ cWL tMz jQS wmO -kZW +ipU jgA jQS tMz @@ -188123,7 +189117,7 @@ rxC awy jpe wnA -trg +qsB jQS jQS jQS diff --git a/_maps/map_files/CTF/classic.dmm b/_maps/minigame/CTF/classic.dmm similarity index 100% rename from _maps/map_files/CTF/classic.dmm rename to _maps/minigame/CTF/classic.dmm diff --git a/_maps/map_files/CTF/cruiser.dmm b/_maps/minigame/CTF/cruiser.dmm similarity index 100% rename from _maps/map_files/CTF/cruiser.dmm rename to _maps/minigame/CTF/cruiser.dmm diff --git a/_maps/map_files/CTF/downtown.dmm b/_maps/minigame/CTF/downtown.dmm similarity index 100% rename from _maps/map_files/CTF/downtown.dmm rename to _maps/minigame/CTF/downtown.dmm diff --git a/_maps/map_files/CTF/fourSide.dmm b/_maps/minigame/CTF/fourSide.dmm similarity index 100% rename from _maps/map_files/CTF/fourSide.dmm rename to _maps/minigame/CTF/fourSide.dmm diff --git a/_maps/map_files/CTF/limbo.dmm b/_maps/minigame/CTF/limbo.dmm similarity index 100% rename from _maps/map_files/CTF/limbo.dmm rename to _maps/minigame/CTF/limbo.dmm diff --git a/_maps/map_files/CTF/turbine.dmm b/_maps/minigame/CTF/turbine.dmm similarity index 100% rename from _maps/map_files/CTF/turbine.dmm rename to _maps/minigame/CTF/turbine.dmm diff --git a/_maps/map_files/Basketball/ash_gladiators.dmm b/_maps/minigame/basketball/ash_gladiators.dmm similarity index 100% rename from _maps/map_files/Basketball/ash_gladiators.dmm rename to _maps/minigame/basketball/ash_gladiators.dmm diff --git a/_maps/map_files/Basketball/ass_blast_usa.dmm b/_maps/minigame/basketball/ass_blast_usa.dmm similarity index 100% rename from _maps/map_files/Basketball/ass_blast_usa.dmm rename to _maps/minigame/basketball/ass_blast_usa.dmm diff --git a/_maps/map_files/Basketball/beach_bums.dmm b/_maps/minigame/basketball/beach_bums.dmm similarity index 100% rename from _maps/map_files/Basketball/beach_bums.dmm rename to _maps/minigame/basketball/beach_bums.dmm diff --git a/_maps/map_files/Basketball/greytide_worldwide.dmm b/_maps/minigame/basketball/greytide_worldwide.dmm similarity index 100% rename from _maps/map_files/Basketball/greytide_worldwide.dmm rename to _maps/minigame/basketball/greytide_worldwide.dmm diff --git a/_maps/map_files/Basketball/lusty_xenomorphs.dmm b/_maps/minigame/basketball/lusty_xenomorphs.dmm similarity index 100% rename from _maps/map_files/Basketball/lusty_xenomorphs.dmm rename to _maps/minigame/basketball/lusty_xenomorphs.dmm diff --git a/_maps/map_files/Basketball/soviet_bear.dmm b/_maps/minigame/basketball/soviet_bear.dmm similarity index 100% rename from _maps/map_files/Basketball/soviet_bear.dmm rename to _maps/minigame/basketball/soviet_bear.dmm diff --git a/_maps/map_files/Basketball/space_surfers.dmm b/_maps/minigame/basketball/space_surfers.dmm similarity index 100% rename from _maps/map_files/Basketball/space_surfers.dmm rename to _maps/minigame/basketball/space_surfers.dmm diff --git a/_maps/map_files/Basketball/stadium.dmm b/_maps/minigame/basketball/stadium.dmm similarity index 100% rename from _maps/map_files/Basketball/stadium.dmm rename to _maps/minigame/basketball/stadium.dmm diff --git a/_maps/deathmatch/OSHA_Violator.dmm b/_maps/minigame/deathmatch/OSHA_Violator.dmm similarity index 99% rename from _maps/deathmatch/OSHA_Violator.dmm rename to _maps/minigame/deathmatch/OSHA_Violator.dmm index 7d30951a4f0..114bb695c47 100644 --- a/_maps/deathmatch/OSHA_Violator.dmm +++ b/_maps/minigame/deathmatch/OSHA_Violator.dmm @@ -764,7 +764,7 @@ /area/deathmatch) "Js" = ( /obj/structure/table/reinforced, -/obj/item/reagent_containers/pill/patch/aiuri, +/obj/item/reagent_containers/applicator/patch/aiuri, /turf/open/indestructible, /area/deathmatch) "JF" = ( diff --git a/_maps/deathmatch/arena_station.dmm b/_maps/minigame/deathmatch/arena_station.dmm similarity index 99% rename from _maps/deathmatch/arena_station.dmm rename to _maps/minigame/deathmatch/arena_station.dmm index 8009387c502..1e2b1b57be7 100644 --- a/_maps/deathmatch/arena_station.dmm +++ b/_maps/minigame/deathmatch/arena_station.dmm @@ -476,7 +476,7 @@ /area/deathmatch) "rX" = ( /obj/structure/table/glass, -/obj/item/reagent_containers/pill/patch/synthflesh, +/obj/item/reagent_containers/applicator/patch/synthflesh, /turf/open/indestructible/white, /area/deathmatch) "sk" = ( diff --git a/_maps/deathmatch/backalley.dmm b/_maps/minigame/deathmatch/backalley.dmm similarity index 100% rename from _maps/deathmatch/backalley.dmm rename to _maps/minigame/deathmatch/backalley.dmm diff --git a/_maps/deathmatch/finaldestination.dmm b/_maps/minigame/deathmatch/finaldestination.dmm similarity index 100% rename from _maps/deathmatch/finaldestination.dmm rename to _maps/minigame/deathmatch/finaldestination.dmm diff --git a/_maps/deathmatch/instagib.dmm b/_maps/minigame/deathmatch/instagib.dmm similarity index 100% rename from _maps/deathmatch/instagib.dmm rename to _maps/minigame/deathmatch/instagib.dmm diff --git a/_maps/deathmatch/lattice_battles.dmm b/_maps/minigame/deathmatch/lattice_battles.dmm similarity index 100% rename from _maps/deathmatch/lattice_battles.dmm rename to _maps/minigame/deathmatch/lattice_battles.dmm diff --git a/_maps/deathmatch/maint_mania.dmm b/_maps/minigame/deathmatch/maint_mania.dmm similarity index 98% rename from _maps/deathmatch/maint_mania.dmm rename to _maps/minigame/deathmatch/maint_mania.dmm index 5b23ac38feb..914006c3cb8 100644 --- a/_maps/deathmatch/maint_mania.dmm +++ b/_maps/minigame/deathmatch/maint_mania.dmm @@ -47,7 +47,7 @@ /turf/closed/indestructible/fakedoor, /area/deathmatch) "ih" = ( -/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, /turf/open/indestructible, /area/deathmatch) "iC" = ( @@ -132,7 +132,7 @@ /area/deathmatch) "qK" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, /turf/open/indestructible, /area/deathmatch) "sk" = ( @@ -235,7 +235,7 @@ /area/deathmatch) "Ew" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, /turf/open/indestructible, /area/deathmatch) "EK" = ( @@ -254,7 +254,7 @@ /area/deathmatch) "Fp" = ( /obj/structure/rack, -/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, /obj/item/spear, /turf/open/indestructible, /area/deathmatch) @@ -289,7 +289,7 @@ /turf/open/indestructible, /area/deathmatch) "Hp" = ( -/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, /obj/structure/sign/poster/random/directional/north, /obj/structure/table/reinforced, /turf/open/indestructible, diff --git a/_maps/deathmatch/meat_tower.dmm b/_maps/minigame/deathmatch/meat_tower.dmm similarity index 100% rename from _maps/deathmatch/meat_tower.dmm rename to _maps/minigame/deathmatch/meat_tower.dmm diff --git a/_maps/deathmatch/mech_madness.dmm b/_maps/minigame/deathmatch/mech_madness.dmm similarity index 98% rename from _maps/deathmatch/mech_madness.dmm rename to _maps/minigame/deathmatch/mech_madness.dmm index 3f804d2ee54..fa1d99fb222 100644 --- a/_maps/deathmatch/mech_madness.dmm +++ b/_maps/minigame/deathmatch/mech_madness.dmm @@ -469,7 +469,7 @@ /turf/open/floor/light/colour_cycle/dancefloor_a, /area/deathmatch) "cB" = ( -/obj/item/reagent_containers/pill/stimulant, +/obj/item/reagent_containers/applicator/pill/stimulant, /turf/open/floor/light/colour_cycle/dancefloor_b, /area/deathmatch) "cC" = ( @@ -515,7 +515,7 @@ /turf/open/floor/engine, /area/deathmatch) "cM" = ( -/obj/item/reagent_containers/pill/happinesspsych, +/obj/item/reagent_containers/applicator/pill/happinesspsych, /turf/open/floor/light/colour_cycle/dancefloor_b, /area/deathmatch) "cN" = ( @@ -533,11 +533,11 @@ /turf/open/floor/noslip, /area/deathmatch) "cQ" = ( -/obj/item/reagent_containers/pill/lsd, +/obj/item/reagent_containers/applicator/pill/lsd, /turf/open/floor/light/colour_cycle/dancefloor_a, /area/deathmatch) "cR" = ( -/obj/item/reagent_containers/pill/probital, +/obj/item/reagent_containers/applicator/pill/probital, /turf/open/floor/light/colour_cycle/dancefloor_b, /area/deathmatch) "cS" = ( diff --git a/_maps/deathmatch/meta_brig.dmm b/_maps/minigame/deathmatch/meta_brig.dmm similarity index 100% rename from _maps/deathmatch/meta_brig.dmm rename to _maps/minigame/deathmatch/meta_brig.dmm diff --git a/_maps/deathmatch/ragecage.dmm b/_maps/minigame/deathmatch/ragecage.dmm similarity index 100% rename from _maps/deathmatch/ragecage.dmm rename to _maps/minigame/deathmatch/ragecage.dmm diff --git a/_maps/deathmatch/ragin_mages.dmm b/_maps/minigame/deathmatch/ragin_mages.dmm similarity index 100% rename from _maps/deathmatch/ragin_mages.dmm rename to _maps/minigame/deathmatch/ragin_mages.dmm diff --git a/_maps/deathmatch/ragnarok.dmm b/_maps/minigame/deathmatch/ragnarok.dmm similarity index 100% rename from _maps/deathmatch/ragnarok.dmm rename to _maps/minigame/deathmatch/ragnarok.dmm diff --git a/_maps/deathmatch/secu_ring.dmm b/_maps/minigame/deathmatch/secu_ring.dmm similarity index 100% rename from _maps/deathmatch/secu_ring.dmm rename to _maps/minigame/deathmatch/secu_ring.dmm diff --git a/_maps/deathmatch/shooting_range.dmm b/_maps/minigame/deathmatch/shooting_range.dmm similarity index 100% rename from _maps/deathmatch/shooting_range.dmm rename to _maps/minigame/deathmatch/shooting_range.dmm diff --git a/_maps/deathmatch/sniper_elite.dmm b/_maps/minigame/deathmatch/sniper_elite.dmm similarity index 100% rename from _maps/deathmatch/sniper_elite.dmm rename to _maps/minigame/deathmatch/sniper_elite.dmm diff --git a/_maps/deathmatch/species_warfare.dmm b/_maps/minigame/deathmatch/species_warfare.dmm similarity index 100% rename from _maps/deathmatch/species_warfare.dmm rename to _maps/minigame/deathmatch/species_warfare.dmm diff --git a/_maps/deathmatch/sunrise.dmm b/_maps/minigame/deathmatch/sunrise.dmm similarity index 100% rename from _maps/deathmatch/sunrise.dmm rename to _maps/minigame/deathmatch/sunrise.dmm diff --git a/_maps/deathmatch/train.dmm b/_maps/minigame/deathmatch/train.dmm similarity index 100% rename from _maps/deathmatch/train.dmm rename to _maps/minigame/deathmatch/train.dmm diff --git a/_maps/deathmatch/underground_arena.dmm b/_maps/minigame/deathmatch/underground_arena.dmm similarity index 100% rename from _maps/deathmatch/underground_arena.dmm rename to _maps/minigame/deathmatch/underground_arena.dmm diff --git a/_maps/map_files/Mafia/mafia_ayylmao.dmm b/_maps/minigame/mafia/mafia_ayylmao.dmm similarity index 100% rename from _maps/map_files/Mafia/mafia_ayylmao.dmm rename to _maps/minigame/mafia/mafia_ayylmao.dmm diff --git a/_maps/map_files/Mafia/mafia_ball.dmm b/_maps/minigame/mafia/mafia_ball.dmm similarity index 100% rename from _maps/map_files/Mafia/mafia_ball.dmm rename to _maps/minigame/mafia/mafia_ball.dmm diff --git a/_maps/map_files/Mafia/mafia_gothic.dmm b/_maps/minigame/mafia/mafia_gothic.dmm similarity index 100% rename from _maps/map_files/Mafia/mafia_gothic.dmm rename to _maps/minigame/mafia/mafia_gothic.dmm diff --git a/_maps/map_files/Mafia/mafia_lavaland.dmm b/_maps/minigame/mafia/mafia_lavaland.dmm similarity index 100% rename from _maps/map_files/Mafia/mafia_lavaland.dmm rename to _maps/minigame/mafia/mafia_lavaland.dmm diff --git a/_maps/map_files/Mafia/mafia_snow.dmm b/_maps/minigame/mafia/mafia_snow.dmm similarity index 100% rename from _maps/map_files/Mafia/mafia_snow.dmm rename to _maps/minigame/mafia/mafia_snow.dmm diff --git a/_maps/map_files/Mafia/mafia_spiderclan.dmm b/_maps/minigame/mafia/mafia_spiderclan.dmm similarity index 100% rename from _maps/map_files/Mafia/mafia_spiderclan.dmm rename to _maps/minigame/mafia/mafia_spiderclan.dmm diff --git a/_maps/map_files/Mafia/mafia_syndie.dmm b/_maps/minigame/mafia/mafia_syndie.dmm similarity index 100% rename from _maps/map_files/Mafia/mafia_syndie.dmm rename to _maps/minigame/mafia/mafia_syndie.dmm diff --git a/_maps/map_files/Mafia/mafia_unit_test.dmm b/_maps/minigame/mafia/mafia_unit_test.dmm similarity index 100% rename from _maps/map_files/Mafia/mafia_unit_test.dmm rename to _maps/minigame/mafia/mafia_unit_test.dmm diff --git a/_maps/shuttles/emergency_humpback.dmm b/_maps/shuttles/emergency_humpback.dmm index 89ab755acbf..d93055c1e83 100644 --- a/_maps/shuttles/emergency_humpback.dmm +++ b/_maps/shuttles/emergency_humpback.dmm @@ -484,9 +484,9 @@ "CA" = ( /obj/effect/spawner/random/structure/crate_loot, /obj/effect/spawner/random/maintenance/seven, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) "CH" = ( diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm index 1e1ae99d2ea..01a873d8731 100644 --- a/_maps/shuttles/emergency_luxury.dmm +++ b/_maps/shuttles/emergency_luxury.dmm @@ -44,14 +44,14 @@ /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/medical, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, /turf/open/floor/iron, /area/shuttle/escape) "dN" = ( diff --git a/_maps/shuttles/emergency_shadow.dmm b/_maps/shuttles/emergency_shadow.dmm index f5c2cd049f1..731ad7bd2dd 100644 --- a/_maps/shuttles/emergency_shadow.dmm +++ b/_maps/shuttles/emergency_shadow.dmm @@ -901,7 +901,7 @@ }, /obj/item/kirbyplants/organic/plant21, /obj/structure/sign/warning/hot_temp/directional/west, -/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, /turf/open/floor/iron/dark/textured_large, /area/shuttle/escape) "Oi" = ( diff --git a/_maps/shuttles/emergency_wawa.dmm b/_maps/shuttles/emergency_wawa.dmm index 458ffa8a179..46d2a986938 100644 --- a/_maps/shuttles/emergency_wawa.dmm +++ b/_maps/shuttles/emergency_wawa.dmm @@ -710,7 +710,7 @@ /area/shuttle/escape) "Oi" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/applicator/pill/maintenance, /turf/open/floor/plating, /area/shuttle/escape) "Oq" = ( diff --git a/_maps/shuttles/hunter_mi13_foodtruck.dmm b/_maps/shuttles/hunter_mi13_foodtruck.dmm index 155aacf820a..81ecb083c62 100644 --- a/_maps/shuttles/hunter_mi13_foodtruck.dmm +++ b/_maps/shuttles/hunter_mi13_foodtruck.dmm @@ -99,17 +99,6 @@ /obj/structure/sign/poster/official/high_class_martini/directional/north, /turf/open/floor/circuit/red/off, /area/shuttle/hunter/mi13_foodtruck) -"dC" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/binoculars{ - pixel_y = 10 - }, -/obj/item/storage/box/zipties{ - pixel_y = -4; - pixel_x = 4 - }, -/turf/open/floor/circuit/red/off, -/area/shuttle/hunter/mi13_foodtruck) "dJ" = ( /obj/machinery/computer/records/security/syndie, /turf/open/floor/circuit/red/off, @@ -146,6 +135,17 @@ }, /turf/open/floor/mineral/plastitanium, /area/shuttle/hunter/mi13_foodtruck) +"fw" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/binoculars{ + pixel_y = 10 + }, +/obj/item/storage/box/zipties{ + pixel_y = -4; + pixel_x = 4 + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) "gc" = ( /obj/structure/closet/crate/cardboard/mothic, /obj/item/storage/box/mothic_rations{ @@ -331,6 +331,26 @@ /obj/structure/sign/poster/ripped/directional/south, /turf/open/floor/mineral/titanium, /area/shuttle/hunter/mi13_foodtruck) +"on" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/syringe{ + pixel_y = -3; + pixel_x = -5 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = 6; + pixel_x = -3 + }, +/obj/item/reagent_containers/cup/beaker/large{ + pixel_y = 6; + pixel_x = 8 + }, +/obj/item/reagent_containers/applicator/pill/cyanide{ + pixel_y = -6; + pixel_x = 10 + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) "oA" = ( /obj/structure/railing{ dir = 8 @@ -544,6 +564,25 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/hunter/mi13_foodtruck) +"AR" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/cup/glass/mug/tea{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/reagent_containers/cup/beaker{ + pixel_x = 8 + }, +/obj/item/reagent_containers/cup/beaker{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/reagent_containers/applicator/pill/cyanide{ + pixel_y = -9; + pixel_x = -2 + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) "Bn" = ( /obj/machinery/computer/crew/syndie, /turf/open/floor/circuit/red, @@ -613,25 +652,6 @@ /obj/effect/mapping_helpers/airalarm/syndicate_access, /turf/open/floor/mineral/plastitanium, /area/shuttle/hunter/mi13_foodtruck) -"KV" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/cup/glass/mug/tea{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/item/reagent_containers/cup/beaker{ - pixel_x = 8 - }, -/obj/item/reagent_containers/cup/beaker{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/reagent_containers/pill/cyanide{ - pixel_y = -9; - pixel_x = -2 - }, -/turf/open/floor/circuit/red/off, -/area/shuttle/hunter/mi13_foodtruck) "Lm" = ( /obj/machinery/vending/dinnerware, /obj/machinery/airalarm/directional/east, @@ -736,26 +756,6 @@ }, /turf/open/floor/circuit/red/off, /area/shuttle/hunter/mi13_foodtruck) -"Yi" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/syringe{ - pixel_y = -3; - pixel_x = -5 - }, -/obj/item/reagent_containers/dropper{ - pixel_y = 6; - pixel_x = -3 - }, -/obj/item/reagent_containers/cup/beaker/large{ - pixel_y = 6; - pixel_x = 8 - }, -/obj/item/reagent_containers/pill/cyanide{ - pixel_y = -6; - pixel_x = 10 - }, -/turf/open/floor/circuit/red/off, -/area/shuttle/hunter/mi13_foodtruck) "YW" = ( /obj/structure/table/reinforced, /obj/structure/railing{ @@ -962,9 +962,9 @@ cm Am ku lX -KV -Yi -dC +AR +on +fw kj af ku diff --git a/_maps/shuttles/whiteship_tram.dmm b/_maps/shuttles/whiteship_tram.dmm index 7666e2c70ac..9e2e244343e 100644 --- a/_maps/shuttles/whiteship_tram.dmm +++ b/_maps/shuttles/whiteship_tram.dmm @@ -1108,12 +1108,12 @@ /turf/open/floor/iron/smooth_large, /area/shuttle/abandoned/engine) "CS" = ( -/obj/item/reagent_containers/pill/happy, -/obj/item/reagent_containers/pill/aranesp{ +/obj/item/reagent_containers/applicator/pill/happy, +/obj/item/reagent_containers/applicator/pill/aranesp{ pixel_x = 5; pixel_y = 10 }, -/obj/item/reagent_containers/pill/zoom{ +/obj/item/reagent_containers/applicator/pill/zoom{ pixel_x = -4; pixel_y = -6 }, @@ -1219,7 +1219,7 @@ /area/shuttle/abandoned/bridge) "IC" = ( /obj/structure/cable, -/obj/item/reagent_containers/pill/psicodine{ +/obj/item/reagent_containers/applicator/pill/psicodine{ pixel_x = 17; pixel_y = 4 }, diff --git a/_maps/virtual_domains/beach_bar.dmm b/_maps/virtual_domains/beach_bar.dmm index 0b3a037c463..ba12436e048 100644 --- a/_maps/virtual_domains/beach_bar.dmm +++ b/_maps/virtual_domains/beach_bar.dmm @@ -65,9 +65,9 @@ /area/virtual_domain/fullbright) "cb" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/pill/lsd, -/obj/item/reagent_containers/pill/lsd, -/obj/item/reagent_containers/pill/lsd, +/obj/item/reagent_containers/applicator/pill/lsd, +/obj/item/reagent_containers/applicator/pill/lsd, +/obj/item/reagent_containers/applicator/pill/lsd, /turf/open/floor/wood, /area/virtual_domain/fullbright) "cv" = ( @@ -127,7 +127,7 @@ /area/virtual_domain/fullbright) "fc" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/pill/happy, +/obj/item/reagent_containers/applicator/pill/happy, /obj/item/toy/figure/bartender{ pixel_x = -8; pixel_y = -1 @@ -417,9 +417,9 @@ /area/virtual_domain/fullbright) "vN" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/pill/morphine, -/obj/item/reagent_containers/pill/morphine, -/obj/item/reagent_containers/pill/morphine, +/obj/item/reagent_containers/applicator/pill/morphine, +/obj/item/reagent_containers/applicator/pill/morphine, +/obj/item/reagent_containers/applicator/pill/morphine, /turf/open/floor/wood, /area/virtual_domain/fullbright) "vT" = ( @@ -496,9 +496,9 @@ /area/virtual_domain/fullbright) "ya" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/pill/zoom, -/obj/item/reagent_containers/pill/zoom, -/obj/item/reagent_containers/pill/zoom, +/obj/item/reagent_containers/applicator/pill/zoom, +/obj/item/reagent_containers/applicator/pill/zoom, +/obj/item/reagent_containers/applicator/pill/zoom, /turf/open/floor/wood, /area/virtual_domain/fullbright) "yi" = ( @@ -1116,7 +1116,7 @@ /area/virtual_domain/fullbright) "Zt" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/pill/morphine, +/obj/item/reagent_containers/applicator/pill/morphine, /obj/item/storage/fancy/donut_box, /turf/open/floor/wood, /area/virtual_domain/fullbright) diff --git a/code/__DEFINES/_bitfields.dm b/code/__DEFINES/_bitfields.dm index 19a962fbffe..4bf587c7101 100644 --- a/code/__DEFINES/_bitfields.dm +++ b/code/__DEFINES/_bitfields.dm @@ -1,4 +1,8 @@ -#define DEFINE_BITFIELD(_variable, _flags) /datum/bitfield/##_variable { \ +#define DEFINE_BITFIELD(_variable, _flags) \ +/* Important note: This exists to throw a compile time warning if more then one bitfield with the same name is defined */ \ +/* This is required to avoid dupes in vv, and any consumers of our bitfield metainfo procs */ \ +GLOBAL_REAL_VAR(_bitfield_##_variable); \ +/datum/bitfield/##_variable { \ flags = ##_flags; \ variable = #_variable; \ } diff --git a/code/__DEFINES/_flags.dm b/code/__DEFINES/_flags.dm index 3d6f57cf4ec..e8939d425ce 100644 --- a/code/__DEFINES/_flags.dm +++ b/code/__DEFINES/_flags.dm @@ -197,9 +197,10 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define PHASING (1<<4) /// The mob is walking on the ceiling. Or is generally just, upside down. #define UPSIDE_DOWN (1<<5) - /// Combination flag for movetypes which, for all intents and purposes, mean the mob is not touching the ground #define MOVETYPES_NOT_TOUCHING_GROUND (FLYING|FLOATING|UPSIDE_DOWN) +/// Trait source for stuff movetypes applies +#define SOURCE_MOVETYPES "movetypes" //Fire and Acid stuff, for resistance_flags #define LAVA_PROOF (1<<0) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 5a569a52fd9..676a182c5c0 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -181,3 +181,11 @@ GLOBAL_VAR_INIT(ghost_role_flags, ALL) /// Used in logging uses of admin verbs (and sometimes some non-admin or debug verbs) to the blackbox /// Only pass it a string key, the verb being used. #define BLACKBOX_LOG_ADMIN_VERB(the_verb) SSblackbox.record_feedback("tally", "admin_verb", 1, the_verb) + +// Smite flags +/// Plays sfx and adds an overlay to the target +#define SMITE_DIVINE (1<<0) +/// Adds a delay before the effect is applied +#define SMITE_DELAY (1<<1) +/// Stuns the target for a short duration, ignores stun immunity +#define SMITE_STUN (1<<2) diff --git a/code/__DEFINES/atmospherics/atmos_helpers.dm b/code/__DEFINES/atmospherics/atmos_helpers.dm index d5bcbf51471..ce3e2f40a68 100644 --- a/code/__DEFINES/atmospherics/atmos_helpers.dm +++ b/code/__DEFINES/atmospherics/atmos_helpers.dm @@ -6,26 +6,49 @@ //Helpers ///Moves the icon of the device based on the piping layer and on the direction #define PIPING_LAYER_SHIFT(T, PipingLayer) \ - if(T.dir & (NORTH|SOUTH)) { \ - T.pixel_x = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\ - } \ - if(T.dir & (EAST|WEST)) { \ - T.pixel_y = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y;\ + if(T.layer > -1) { \ + if(T.dir & (NORTH|SOUTH)) { \ + T.pixel_x = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\ + } \ + if(T.dir & (EAST|WEST)) { \ + T.pixel_y = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y;\ + } \ + } else { \ + if(T.dir & (NORTH|SOUTH)) { \ + T.pixel_w = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\ + } \ + if(T.dir & (EAST|WEST)) { \ + T.pixel_z = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y;\ + } \ } ///Moves the icon of the device based on the piping layer and on the direction, the shift amount is dictated by more_shift #define PIPING_FORWARD_SHIFT(T, PipingLayer, more_shift) \ - if(T.dir & (NORTH|SOUTH)) { \ - T.pixel_y += more_shift * (PipingLayer - PIPING_LAYER_DEFAULT);\ - } \ - if(T.dir & (EAST|WEST)) { \ - T.pixel_x += more_shift * (PipingLayer - PIPING_LAYER_DEFAULT);\ + if(T.layer > -1) { \ + if(T.dir & (NORTH|SOUTH)) { \ + T.pixel_y += more_shift * (PipingLayer - PIPING_LAYER_DEFAULT);\ + } \ + if(T.dir & (EAST|WEST)) { \ + T.pixel_x += more_shift * (PipingLayer - PIPING_LAYER_DEFAULT);\ + } \ + } else { \ + if(T.dir & (NORTH|SOUTH)) { \ + T.pixel_z += more_shift * (PipingLayer - PIPING_LAYER_DEFAULT);\ + } \ + if(T.dir & (EAST|WEST)) { \ + T.pixel_w += more_shift * (PipingLayer - PIPING_LAYER_DEFAULT);\ + } \ } ///Moves the icon of the device based on the piping layer on both x and y #define PIPING_LAYER_DOUBLE_SHIFT(T, PipingLayer) \ - T.pixel_x = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\ - T.pixel_y = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y; + if(T.layer > -1) { \ + T.pixel_x = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\ + T.pixel_y = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y; \ + } else { \ + T.pixel_w = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\ + T.pixel_z = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y; \ + } ///Calculate the thermal energy of the selected gas (J) #define THERMAL_ENERGY(gas) (gas.temperature * gas.heat_capacity()) diff --git a/code/__DEFINES/atmospherics/atmos_piping.dm b/code/__DEFINES/atmospherics/atmos_piping.dm index 6b6631a56fd..188798f95d2 100644 --- a/code/__DEFINES/atmospherics/atmos_piping.dm +++ b/code/__DEFINES/atmospherics/atmos_piping.dm @@ -72,6 +72,9 @@ /// Additional information of the tank. #define TANK_RESULTS_MISC 2 +/// Color used by omni-color pipes +#define ATMOS_COLOR_OMNI COLOR_VERY_LIGHT_GRAY + //MULTIPIPES //IF YOU EVER CHANGE THESE CHANGE SPRITES TO MATCH. //layer = initial(layer) + piping_layer / 1000 in atmospherics/update_icon() to determine order of pipe overlap diff --git a/code/__DEFINES/bodyparts.dm b/code/__DEFINES/bodyparts.dm index 3b4e39467a9..751d65ea150 100644 --- a/code/__DEFINES/bodyparts.dm +++ b/code/__DEFINES/bodyparts.dm @@ -14,6 +14,7 @@ #define LIMB_MAX_HP_ALIEN_LARVA 50 //Used by the weird larva chest and head. Did you know they have those? #define LIMB_MAX_HP_ALIEN_LIMBS 100 //Used by xenomorph limbs. #define LIMB_MAX_HP_ALIEN_CORE 500 //Used by xenomorph chests and heads +#define LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER 2 //Used by xenomorphs and their larvae /// Limb Body Damage Coefficient /// A multiplication of the burn and brute damage that the limb's stored damage contributes to its attached mob's overall wellbeing. @@ -45,7 +46,11 @@ #define AUGGED_HEAD_EMP_GLITCH_DURATION 6 SECONDS // Color priorities for bodyparts +/// Abductor team recoloring priority +#define LIMB_COLOR_AYYLMAO 5 +/// Hulk effect color priority #define LIMB_COLOR_HULK 10 +/// Carp infusion color priority #define LIMB_COLOR_CARP_INFUSION 20 #define LIMB_COLOR_CS_SOURCE_SUICIDE 30 /// Base priority for atom colors, gets atom priorities added to it diff --git a/code/__DEFINES/cargo.dm b/code/__DEFINES/cargo.dm index e9fdda29368..f17c56482ec 100644 --- a/code/__DEFINES/cargo.dm +++ b/code/__DEFINES/cargo.dm @@ -13,6 +13,9 @@ #define SUPPLYPOD_X_OFFSET -16 +///DO NOT GO ANY LOWER THAN X1.4 the "CARGO_CRATE_VALUE" value if using regular crates, or infinite profit will be possible! This is also unit tested against. +#define CARGO_MINIMUM_COST CARGO_CRATE_VALUE * 1.4 + /// The baseline unit for cargo crates. Adjusting this will change the cost of all in-game shuttles, crate export values, bounty rewards, and all supply pack import values, as they use this as their unit of measurement. #define CARGO_CRATE_VALUE 200 @@ -29,6 +32,12 @@ /// Universal Scanner mode for using the price tagger. #define SCAN_PRICE_TAG 3 +// Defines for use with `export_item_and_contents()`, aka the export code that sells the items. +/// Default export define, these are things that are sold to centcom. +#define EXPORT_MARKET_STATION "supply" +/// Export market for pirates. +#define EXPORT_MARKET_PIRACY "piracy" + ///Used by coupons to define that they're cursed #define COUPON_OMEN "omen" diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 8541654d1eb..7408294770e 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -487,5 +487,16 @@ GLOBAL_LIST_INIT(heretic_path_to_color, list( #define EYE_COLOR_ATOM_COLOR_PRIORITY 2 #define EYE_COLOR_SPECIES_PRIORITY 10 #define EYE_COLOR_WEED_PRIORITY 20 -#define EYE_COLOR_LUMINESCENT_PRIORITY 30 -#define EYE_COLOR_CULT_PRIORITY 40 +#define EYE_COLOR_HUD_PRIORITY 30 +#define EYE_COLOR_LUMINESCENT_PRIORITY 40 +#define EYE_COLOR_CULT_PRIORITY 50 + +// Client color priorities + +#define CLIENT_COLOR_GLASSES_PRIORITY 1 // Lowest there is, used by glasses +#define CLIENT_COLOR_HELMET_PRIORITY 2 // Same but for helmets +#define CLIENT_COLOR_ORGAN_PRIORITY 3 // For heads and organs +#define CLIENT_COLOR_FILTER_PRIORITY 4 // Filters which should go ontop of previous ones +#define CLIENT_COLOR_TEMPORARY_PRIORITY 5 // Temporary flashing effects +#define CLIENT_COLOR_IMPORTANT_PRIORITY 6 // Gameplay important hints signifying antag status or near-death, should be always shown +#define CLIENT_COLOR_OVERRIDE_PRIORITY 7 // For effects that are meant to mask all others for technical reasons diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 387c68ed267..4b9d76d6394 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -320,6 +320,11 @@ GLOBAL_LIST_INIT(leg_zones, list(BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)) /// Martial arts attack happened and succeeded, do not allow a check for a regular attack. #define MARTIAL_ATTACK_SUCCESS COMPONENT_CANCEL_ATTACK_CHAIN +/// Get the active martial art of a mob. +#define GET_ACTIVE_MARTIAL_ART(goku) (LAZYACCESS(goku.martial_arts, 1)) +/// Get what martial art will be used after cycling through the active martial art. +#define GET_NEXT_MARTIAL_ART(goku) (LAZYACCESS(goku.martial_arts, 2)) + /// IF an object is weak against armor, this is the value that any present armor is multiplied by #define ARMOR_WEAKENED_MULTIPLIER 2 /// Armor can't block more than this as a percentage diff --git a/code/__DEFINES/construction/material.dm b/code/__DEFINES/construction/material.dm index 9ebf3b20c3b..423c1c1075b 100644 --- a/code/__DEFINES/construction/material.dm +++ b/code/__DEFINES/construction/material.dm @@ -47,6 +47,8 @@ #define MATCONTAINER_ANY_INTENT (1<<2) ///If the user won't receive a warning when attacking the container with an unallowed item. #define MATCONTAINER_SILENT (1<<3) +///Alloys won't be disassembled in its components when inserted. +#define MATCONTAINER_ACCEPT_ALLOYS (1<<4) /// Whether a material's mechanical effects should apply to the atom. This is necessary for other flags to work. #define MATERIAL_EFFECTS (1<<0) diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm index bd6310575c3..87a65232532 100644 --- a/code/__DEFINES/cooldowns.dm +++ b/code/__DEFINES/cooldowns.dm @@ -59,9 +59,6 @@ // mob cooldowns #define COOLDOWN_YAWN_PROPAGATION "yawn_propagation_cooldown" -// admin verb cooldowns -#define COOLDOWN_INTERNET_SOUND "internet_sound" - //Shared cooldowns for actions #define MOB_SHARED_COOLDOWN_1 (1<<0) #define MOB_SHARED_COOLDOWN_2 (1<<1) @@ -124,3 +121,23 @@ return; \ } \ cd_source.cd_index += (cd_increment); \ + +/* + * Same as the above cooldown system, but uses REALTIMEOFDAY + * Primarily only used for times that need to be tracked with the client, such as sound or animations +*/ + +#define CLIENT_COOLDOWN_DECLARE(cd_index) var/##cd_index = 0 + +#define CLIENT_STATIC_COOLDOWN_DECLARE(cd_index) var/static/##cd_index = 0 + +#define CLIENT_COOLDOWN_START(cd_source, cd_index, cd_time) (cd_source.cd_index = REALTIMEOFDAY + (cd_time)) + +//Returns true if the cooldown has run its course, false otherwise +#define CLIENT_COOLDOWN_FINISHED(cd_source, cd_index) (cd_source.cd_index <= REALTIMEOFDAY) + +#define CLIENT_COOLDOWN_RESET(cd_source, cd_index) cd_source.cd_index = 0 + +#define CLIENT_COOLDOWN_STARTED(cd_source, cd_index) (cd_source.cd_index != 0) + +#define CLIENT_COOLDOWN_TIMELEFT(cd_source, cd_index) (max(0, cd_source.cd_index - REALTIMEOFDAY)) diff --git a/code/__DEFINES/dcs/declarations.dm b/code/__DEFINES/dcs/declarations.dm index 04b31f4e185..95ad093f995 100644 --- a/code/__DEFINES/dcs/declarations.dm +++ b/code/__DEFINES/dcs/declarations.dm @@ -4,6 +4,8 @@ #define COMPONENT_INCOMPATIBLE 1 /// Returned in PostTransfer to prevent transfer, similar to `COMPONENT_INCOMPATIBLE` #define COMPONENT_NOTRANSFER 2 +/// Deletes the component silently. This is for valid, non-error cases where you still want to execute some of the component's logic. +#define COMPONENT_REDUNDANT 3 /// Return value to cancel attaching #define ELEMENT_INCOMPATIBLE 1 diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm index 1497960d194..4ea49e9010d 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm @@ -151,3 +151,12 @@ /// From /datum/component/tether/UnregisterFromParent() #define COMSIG_ATOM_TETHER_SNAPPED "atom_tether_snapped" + +/// From /atom/proc/update_atom_colour() : (color_changed) +#define COMSIG_ATOM_COLOR_UPDATED "atom_color_updated" + /// Cancels update_appearance call in case you are somehow forced to call it manually to prevent dupe calls + #define COMPONENT_CANCEL_COLOR_APPEARANCE_UPDATE (1<<0) + +/// From /obj/item/organ/stomach/on_life() : (obj/item/organ/stomach/stomach, mob/living/carbon/owner, seconds_per_tick) +#define COMSIG_ATOM_STOMACH_DIGESTED "atom_stomach_digested" + #define COMPONENT_CANCEL_DIGESTION (1<<0) diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm index bea25d51566..8913498e2ec 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm @@ -84,8 +84,10 @@ #define COMSIG_CARBON_GAIN_ADDICTION "carbon_gain_addiction" ///Called when a carbon is no longer addicted (source = what addiction datum was lost, addicted_mind = mind of the freed carbon) #define COMSIG_CARBON_LOSE_ADDICTION "carbon_lose_addiction" -///Called when a carbon gets a brain trauma (source = carbon, trauma = what trauma was added) - this is before on_gain() +///Called when a carbon gets a brain trauma (source = carbon, trauma = what trauma was added, resilience = the resilience of the trauma given, if set differently from the default) - this is before on_gain() #define COMSIG_CARBON_GAIN_TRAUMA "carbon_gain_trauma" + /// Return if you want to prevent the carbon from gaining the brain trauma. + #define COMSIG_CARBON_BLOCK_TRAUMA (1 << 0) ///Called when a carbon loses a brain trauma (source = carbon, trauma = what trauma was removed) #define COMSIG_CARBON_LOSE_TRAUMA "carbon_lose_trauma" ///Called when a carbon's health hud is updated. (source = carbon, shown_health_amount) @@ -112,6 +114,8 @@ #define COMSIG_CARBON_APPLY_OVERLAY "carbon_apply_overlay" ///Called from remove_overlay(cache_index, overlay) #define COMSIG_CARBON_REMOVE_OVERLAY "carbon_remove_overlay" +///Called when a carbon checks their mood +#define COMSIG_CARBON_MOOD_CHECK "carbon_mod_check" // /mob/living/carbon/human signals @@ -173,3 +177,10 @@ #define COMSIG_MUTATION_GAINED "mutation_gained" ///Called from on_losing(mob/living/carbon/human/owner) #define COMSIG_MUTATION_LOST "mutation_lost" + +/// Called from /datum/species/proc/harm(): (mob/living/carbon/human/attacker, damage, attack_type, obj/item/bodypart/affecting, final_armor_block, kicking) +#define COMSIG_HUMAN_GOT_PUNCHED "human_got_punched" + +/// Called at the very end of human character setup +/// At this point all quirks are assigned and the mob has a mind / client +#define COMSIG_HUMAN_CHARACTER_SETUP_FINISHED "human_character_setup_finished" diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm index b687ef5ace2..5871b3c1e6e 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm @@ -263,7 +263,7 @@ /// Sent from a 'contract chain' button on a mob chain #define COMSIG_MOB_CHAIN_CONTRACT "living_chain_contracted" -/// Sent from `obj/item/reagent_containers/pill/on_consumption`: (obj/item/reagent_containers/pill/pill, mob/feeder) +/// Sent from `obj/item/reagent_containers/applicator/pill/on_consumption`: (obj/item/reagent_containers/applicator/pill/pill, mob/feeder) #define COMSIG_LIVING_PILL_CONSUMED "living_pill_consumed" /// Sent from a mob to their loc when starting to remove cuffs on itself @@ -309,3 +309,16 @@ #define COMSIG_LIVING_ATTACK_ATOM "living_attack_atom" /// From /mob/living/proc/stop_leaning() #define COMSIG_LIVING_STOPPED_LEANING "living_stopped_leaning" + +/// When a living mob is table slamming another mob: (mob/living/slammed, obj/structure/table/slammed_table) +#define COMSIG_LIVING_TABLE_SLAMMING "living_table_slamming" +/// When a living mob is table slamming another mob, neck grab (so a limb slam): (mob/living/slammed, obj/structure/table/slammed_table) +#define COMSIG_LIVING_TABLE_LIMB_SLAMMING "living_table_limb_slamming" + +/// From /mob/living/get_examine_name(mob/user) : (mob/examined, visible_name, list/name_override) +/// Allows mobs to override how they perceive others when examining +#define COMSIG_LIVING_PERCEIVE_EXAMINE_NAME "living_perceive_examine_name" + #define COMPONENT_EXAMINE_NAME_OVERRIDEN (1<<0) + +/// From /obj/item/book/bible/attack() : (mob/living/user, obj/item/book/bible/bible, bless_result) +#define COMSIG_LIVING_BLESSED "living_blessed" diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm index b40b0320d0f..4eef914e51b 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm @@ -15,7 +15,7 @@ #define COMSIG_MOB_REAGENT_CHECK "mob_reagent_check" ///stops the reagent check call #define COMSIG_MOB_STOP_REAGENT_CHECK (1<<0) -///from base of mob/clickon(): (atom/A, params) +///from base of mob/clickon(): (atom/A, list/modifiers) #define COMSIG_MOB_CLICKON "mob_clickon" ///from base of mob/MiddleClickOn(): (atom/A) #define COMSIG_MOB_MIDDLECLICKON "mob_middleclickon" diff --git a/code/__DEFINES/dcs/signals/signals_mod.dm b/code/__DEFINES/dcs/signals/signals_mod.dm index 70c434adae3..6cc6832beb6 100644 --- a/code/__DEFINES/dcs/signals/signals_mod.dm +++ b/code/__DEFINES/dcs/signals/signals_mod.dm @@ -48,3 +48,5 @@ #define COMSIG_MODULE_GENERATE_WORN_OVERLAY "mod_module_generate_worn_overlay" /// Called when the MOD control unit fetches its visor icon #define COMSIG_MOD_GET_VISOR_OVERLAY "mod_get_visor_overlay" +/// Called when the MOD control unit updates its parts speed +#define COMSIG_MOD_UPDATE_SPEED "mod_update_speed" diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm index b275ddad696..e9f99214ca8 100644 --- a/code/__DEFINES/dcs/signals/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_object.dm @@ -191,6 +191,8 @@ #define COMSIG_ITEM_ATTACK_EFFECT "item_effect_attacked" /// Called by /obj/item/proc/worn_overlays(list/overlays, mutable_appearance/standing, isinhands, icon_file) #define COMSIG_ITEM_GET_WORN_OVERLAYS "item_get_worn_overlays" +/// Called by /obj/item/proc/separate_worn_overlays(list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) +#define COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS "item_get_separate_worn_overlays" ///from base of [/obj/item/proc/tool_check_callback]: (mob/living/user) #define COMSIG_TOOL_IN_USE "tool_in_use" diff --git a/code/__DEFINES/economy.dm b/code/__DEFINES/economy.dm index 356ceb2301a..a1108ba7fb0 100644 --- a/code/__DEFINES/economy.dm +++ b/code/__DEFINES/economy.dm @@ -81,5 +81,3 @@ #define MARKET_TREND_STABLE 0 #define MARKET_EVENT_PROBABILITY 8 //Probability of a market event firing, in percent. Fires once per material, every stock market tick. - -#define MARKET_PROFIT_MODIFIER 0.8 //We don't make every sale a 1-1 of the actual buy price value, like with real life taxes and to encourage more smart trades diff --git a/code/__DEFINES/fov.dm b/code/__DEFINES/fov.dm index 164dd1ead99..40d678aadec 100644 --- a/code/__DEFINES/fov.dm +++ b/code/__DEFINES/fov.dm @@ -2,6 +2,9 @@ #define FOV_90_DEGREES 90 #define FOV_180_DEGREES 180 #define FOV_270_DEGREES 270 +#define FOV_REVERSE_90_DEGRESS -90 +#define FOV_REVERSE_180_DEGRESS -180 +#define FOV_REVERSE_270_DEGRESS -270 /// Base mask dimensions. They're like a client's view, only change them if you modify the mask to different dimensions. #define BASE_FOV_MASK_X_DIMENSION 15 diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm index 3bfdd3f185c..9f5e664d05c 100644 --- a/code/__DEFINES/icon_smoothing.dm +++ b/code/__DEFINES/icon_smoothing.dm @@ -1,28 +1,25 @@ /* smoothing_flags */ -/// Smoothing system in where adjacencies are calculated and used to build an image by mounting each corner at runtime. -#define SMOOTH_CORNERS (1<<0) /// Smoothing system in where adjacencies are calculated and used to select a pre-baked icon_state, encoded by bitmasking. -#define SMOOTH_BITMASK (1<<1) +#define SMOOTH_BITMASK (1<<0) /// Limits SMOOTH_BITMASK to only cardinal directions, for use with cardinal smoothing -#define SMOOTH_BITMASK_CARDINALS (1<<2) +#define SMOOTH_BITMASK_CARDINALS (1<<1) /// Atom has diagonal corners, with underlays under them. -#define SMOOTH_DIAGONAL_CORNERS (1<<3) +#define SMOOTH_DIAGONAL_CORNERS (1<<2) /// Atom will smooth with the borders of the map. -#define SMOOTH_BORDER (1<<4) +#define SMOOTH_BORDER (1<<3) /// Atom is currently queued to smooth. -#define SMOOTH_QUEUED (1<<5) +#define SMOOTH_QUEUED (1<<4) /// Smooths with objects, and will thus need to scan turfs for contents. -#define SMOOTH_OBJ (1<<6) +#define SMOOTH_OBJ (1<<5) /// Uses directional object smoothing, so we care not only about something being on the right turf, but also its direction /// Changes the meaning of smoothing_junction, instead of representing the directions we are smoothing in /// it represents the sides of our directional border object that have a neighbor -/// Is incompatible with SMOOTH_CORNERS because border objects don't have corners -#define SMOOTH_BORDER_OBJECT (1<<7) +/// Is incompatible with SMOOTH_DIAGONAL_CORNERS because border objects don't have corners +#define SMOOTH_BORDER_OBJECT (1<<6) -#define USES_SMOOTHING (SMOOTH_CORNERS|SMOOTH_BITMASK|SMOOTH_BITMASK_CARDINALS) +#define USES_SMOOTHING (SMOOTH_BITMASK|SMOOTH_BITMASK_CARDINALS) DEFINE_BITFIELD(smoothing_flags, list( - "SMOOTH_CORNERS" = SMOOTH_CORNERS, "SMOOTH_BITMASK" = SMOOTH_BITMASK, "SMOOTH_BITMASK_CARDINALS" = SMOOTH_BITMASK_CARDINALS, "SMOOTH_DIAGONAL_CORNERS" = SMOOTH_DIAGONAL_CORNERS, @@ -225,31 +222,36 @@ DEFINE_BITFIELD(smoothing_junction, list( #define SMOOTH_GROUP_WATER S_OBJ(76) ///obj/effect/abstract/liquid_turf //SKYRAT EDIT END - -#define SMOOTH_GROUP_GRAV_FIELD S_OBJ(69) -#define SMOOTH_GROUP_GIRDER S_OBJ(75) +#define SMOOTH_GROUP_GRAV_FIELD S_OBJ(75) +#define SMOOTH_GROUP_GIRDER S_OBJ(76) +#define SMOOTH_GROUP_TEST_WALL S_OBJ(77) // I'm a lazy bum who doesn't want to increment all of these up by 1 ~Lemon /// Performs the work to set smoothing_groups and canSmoothWith. /// An inlined function used in both turf/Initialize and atom/Initialize. #define SETUP_SMOOTHING(...) \ if (smoothing_groups) { \ - if (PERFORM_ALL_TESTS(focus_only/sorted_smoothing_groups)) { \ - ASSERT_SORTED_SMOOTHING_GROUPS(smoothing_groups); \ - } \ - SET_SMOOTHING_GROUPS(smoothing_groups); \ + PARSE_SMOOTHING_GROUPS(smoothing_groups, smoothing_groups); \ } \ -\ if (canSmoothWith) { \ - if (PERFORM_ALL_TESTS(focus_only/sorted_smoothing_groups)) { \ - ASSERT_SORTED_SMOOTHING_GROUPS(canSmoothWith); \ - } \ - /* S_OBJ is always negative, and we are guaranteed to be sorted. */ \ - if (canSmoothWith[1] == "-") { \ - smoothing_flags |= SMOOTH_OBJ; \ - } \ - SET_SMOOTHING_GROUPS(canSmoothWith); \ + PARSE_CAN_SMOOTH_WITH(canSmoothWith, canSmoothWith, smoothing_flags); \ } +#define PARSE_SMOOTHING_GROUPS(parse_from, set_into) \ + if (PERFORM_ALL_TESTS(focus_only/sorted_smoothing_groups)) { \ + ASSERT_SORTED_SMOOTHING_GROUPS(smoothing_groups); \ + } \ + SET_SMOOTHING_GROUPS(parse_from, set_into); + +#define PARSE_CAN_SMOOTH_WITH(parse_from, set_into, set_flags_into) \ + if (PERFORM_ALL_TESTS(focus_only/sorted_smoothing_groups)) { \ + ASSERT_SORTED_SMOOTHING_GROUPS(canSmoothWith); \ + } \ + /* S_OBJ is always negative, and we are guaranteed to be sorted. */ \ + if (canSmoothWith[1] == "-") { \ + set_flags_into |= SMOOTH_OBJ; \ + } \ + SET_SMOOTHING_GROUPS(parse_from, set_into); + /// Given a smoothing groups variable, will set out to the actual numbers inside it #define UNWRAP_SMOOTHING_GROUPS(smoothing_groups, out) \ json_decode("\[[##smoothing_groups]0\]"); \ diff --git a/code/__DEFINES/id_cards.dm b/code/__DEFINES/id_cards.dm index 1e6838f5be4..2d1ab875610 100644 --- a/code/__DEFINES/id_cards.dm +++ b/code/__DEFINES/id_cards.dm @@ -18,6 +18,12 @@ WILDCARD_NAME_COMMAND = list(limit = 2, usage = list()), \ WILDCARD_NAME_PRV_COMMAND = list(limit = 1, usage = list()) \ ) +/// The Platinum card, an in between of silver and gold, which can have infinite common but is still limited in command +#define WILDCARD_LIMIT_PLATINUM list( \ + WILDCARD_NAME_COMMON = list(limit = -1, usage = list()), \ + WILDCARD_NAME_COMMAND = list(limit = 2, usage = list()), \ + WILDCARD_NAME_PRV_COMMAND = list(limit = 1, usage = list()) \ +) /// Wildcard slot define for Captain gold cards. Can hold infinite of any Captain level wildcard. #define WILDCARD_LIMIT_GOLD list(WILDCARD_NAME_CAPTAIN = list(limit = -1, usage = list())) /// Wildcard slot define for select Syndicate-affiliated cards. Can hold infinite of any Syndicate level wildcard. Syndicate includes all station accesses. diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 2fada01dd9a..39d37af8970 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -148,9 +148,9 @@ DEFINE_BITFIELD(no_equip_flags, list( //defines for the index of hands #define LEFT_HANDS 1 #define RIGHT_HANDS 2 -/// Checks if the value is "left" - same as ISEVEN, but used primarily for hand or foot index contexts +/// Checks if the value is "right" - same as ISEVEN, but used primarily for hand or foot index contexts #define IS_RIGHT_INDEX(value) (value % 2 == 0) -/// Checks if the value is "right" - same as ISODD, but used primarily for hand or foot index contexts +/// Checks if the value is "left" - same as ISODD, but used primarily for hand or foot index contexts #define IS_LEFT_INDEX(value) (value % 2 != 0) //flags for female outfits: How much the game can safely "take off" the uniform without it looking weird @@ -357,3 +357,5 @@ GLOBAL_LIST_INIT(tool_items, list( #define LOCATION_HEAD "on your head" /// String for items placed in the neck slot. #define LOCATION_NECK "around your neck" +/// String for items placed in the id slot +#define LOCATION_ID "in your ID slot" diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 6509cf73fb2..1a6a61c0e72 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -40,12 +40,15 @@ #define POINT_PLANE 5 //---------- LIGHTING ------------- -///Normal 1 per turf dynamic lighting underlays +/// Normal 1 per turf dynamic lighting underlays #define LIGHTING_PLANE 10 -///Lighting objects that are "free floating" +/// Lighting objects that are "free floating" #define O_LIGHTING_VISUAL_PLANE 11 -#define O_LIGHTING_VISUAL_RENDER_TARGET "O_LIGHT_VISUAL_PLANE" +#define O_LIGHTING_VISUAL_RENDER_TARGET "*O_LIGHT_VISUAL_PLANE" + +// Render plate used by overlay lighting to mask turf lights +#define TURF_LIGHTING_PLATE 12 /// This plane masks out lighting to create an "emissive" effect, ie for glowing lights in otherwise dark areas. #define EMISSIVE_RENDER_PLATE 14 @@ -149,13 +152,14 @@ #define LATTICE_LAYER (8 + TOPDOWN_LAYER) #define DISPOSAL_PIPE_LAYER (9 + TOPDOWN_LAYER) #define WIRE_LAYER (10 + TOPDOWN_LAYER) -#define GLASS_FLOOR_LAYER (11 + TOPDOWN_LAYER) -#define TRAM_RAIL_LAYER (12 + TOPDOWN_LAYER) -#define ABOVE_OPEN_TURF_LAYER (13 + TOPDOWN_LAYER) +#define BELOW_CATWALK_LAYER (11 + TOPDOWN_LAYER) +#define GLASS_FLOOR_LAYER (12 + TOPDOWN_LAYER) ///catwalk overlay of /turf/open/floor/plating/catwalk_floor -#define CATWALK_LAYER (14 + TOPDOWN_LAYER) -#define LOWER_RUNE_LAYER (15 + TOPDOWN_LAYER) -#define RUNE_LAYER (16 + TOPDOWN_LAYER) +#define CATWALK_LAYER (13 + TOPDOWN_LAYER) +#define TRAM_RAIL_LAYER (14 + TOPDOWN_LAYER) +#define ABOVE_OPEN_TURF_LAYER (15 + TOPDOWN_LAYER) +#define LOWER_RUNE_LAYER (16 + TOPDOWN_LAYER) +#define RUNE_LAYER (17 + TOPDOWN_LAYER) #define CLEANABLE_FLOOR_OBJECT_LAYER (21 + TOPDOWN_LAYER) //Placeholders in case the game plane and possibly other things between it and the floor plane are ever made into topdown planes @@ -306,6 +310,11 @@ /// Layer for light overlays #define LIGHT_DEBUG_LAYER 6 +/// Layer for pathfinding arrows +#define PATH_ARROW_DEBUG_LAYER 7 +/// Layer for pathfinding overlays +#define PATH_DEBUG_LAYER 8 + ///Layer for lobby menu collapse button #define LOBBY_BELOW_MENU_LAYER 2 ///Layer for lobby menu background image and main buttons (Join/Ready, Observe, Character Prefs) diff --git a/code/__DEFINES/library.dm b/code/__DEFINES/library.dm index 0c84434578d..abf205fd297 100644 --- a/code/__DEFINES/library.dm +++ b/code/__DEFINES/library.dm @@ -7,3 +7,12 @@ #define CHECKOUTS_PER_PAGE 17 ///How many inventory items should we load per page? #define INVENTORY_PER_PAGE 19 + +// Book categories, used in SQL so don't change randomly +#define BOOK_CATEGORY_FICTION "Fiction" +#define BOOK_CATEGORY_NONFICTION "Non-fiction" +#define BOOK_CATEGORY_RELIGION "Religion" +#define BOOK_CATEGORY_ADULT "Adult" +#define BOOK_CATEGORY_REFERENCE "Reference" +/// If making a book of this category it will be randomly selected from all categories +#define BOOK_CATEGORY_RANDOM "Random" diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index d52aa951a69..fdce0fde2f5 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -57,6 +57,9 @@ /// The amount of lumcount on a tile for it to be considered dark (used to determine reading and nyctophobia) #define LIGHTING_TILE_IS_DARK 0.2 +/// Weight of overlay lighting, in percentage of contribution towards total light +#define OVERLAY_LIGHTING_WEIGHT 0.4 + //code assumes higher numbers override lower numbers. #define LIGHTING_NO_UPDATE 0 #define LIGHTING_VIS_UPDATE 1 diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index dc7dfac3fd0..43edb92cf36 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -55,6 +55,9 @@ /// We are getting this door open if it has not been physically held shut somehow. Play a special sound to signify this level of opening. #define BYPASS_DOOR_CHECKS 2 +/// Damage dealth to an airlock when prie +#define AIRLOCK_PRY_DAMAGE 25 + //used in design to specify which machine can build it //Note: More than one of these can be added to a design but imprinter and lathe designs are incompatible. #define IMPRINTER (1<<0) //For circuits. Uses glass/chemicals. diff --git a/code/__DEFINES/mining.dm b/code/__DEFINES/mining.dm index d0fa97062b1..7a122679dc1 100644 --- a/code/__DEFINES/mining.dm +++ b/code/__DEFINES/mining.dm @@ -18,6 +18,14 @@ /// Small vents, giving small boulders. #define SMALL_VENT_TYPE "small" +//gibtonite strength +/// Gibtonite was deactivated right before it could explode +#define GIBTONITE_QUALITY_HIGH 3 +/// Gibtonite was deactivated a few seconds before it could explode +#define GIBTONITE_QUALITY_MEDIUM 2 +/// Gibtonite was deactivated right after it was struck. +#define GIBTONITE_QUALITY_LOW 1 + // Timers for the ore vents to perform wave defense. /// Duration for wave defense for a small vent. #define WAVE_DURATION_SMALL 60 SECONDS diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 8de8628ee31..694e90fbce0 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -252,54 +252,6 @@ #define SCREWYHUD_DEAD 2 #define SCREWYHUD_HEALTHY 3 -//Threshold levels for beauty for humans -#define BEAUTY_LEVEL_HORRID -66 -#define BEAUTY_LEVEL_BAD -33 -#define BEAUTY_LEVEL_DECENT 33 -#define BEAUTY_LEVEL_GOOD 66 -#define BEAUTY_LEVEL_GREAT 100 - -//Moods levels for humans -#define MOOD_HAPPY4 15 -#define MOOD_HAPPY3 10 -#define MOOD_HAPPY2 6 -#define MOOD_HAPPY1 2 -#define MOOD_NEUTRAL 0 -#define MOOD_SAD1 -3 -#define MOOD_SAD2 -7 -#define MOOD_SAD3 -15 -#define MOOD_SAD4 -20 - -//Moods levels for humans -#define MOOD_LEVEL_HAPPY4 9 -#define MOOD_LEVEL_HAPPY3 8 -#define MOOD_LEVEL_HAPPY2 7 -#define MOOD_LEVEL_HAPPY1 6 -#define MOOD_LEVEL_NEUTRAL 5 -#define MOOD_LEVEL_SAD1 4 -#define MOOD_LEVEL_SAD2 3 -#define MOOD_LEVEL_SAD3 2 -#define MOOD_LEVEL_SAD4 1 - -//Sanity values for humans -#define SANITY_MAXIMUM 150 -#define SANITY_GREAT 125 -#define SANITY_NEUTRAL 100 -#define SANITY_DISTURBED 75 -#define SANITY_UNSTABLE 50 -#define SANITY_CRAZY 25 -#define SANITY_INSANE 0 - -//Sanity levels for humans -#define SANITY_LEVEL_GREAT 1 -#define SANITY_LEVEL_NEUTRAL 2 -#define SANITY_LEVEL_DISTURBED 3 -#define SANITY_LEVEL_UNSTABLE 4 -#define SANITY_LEVEL_CRAZY 5 -#define SANITY_LEVEL_INSANE 6 -/// Equal to the highest sanity level -#define SANITY_LEVEL_MAX SANITY_LEVEL_INSANE - //Nutrition levels for humans #define NUTRITION_LEVEL_FAT 600 #define NUTRITION_LEVEL_FULL 550 @@ -332,7 +284,6 @@ #define ETHEREAL_CHARGE_OVERLOAD (2.5 * STANDARD_ETHEREAL_CHARGE) #define ETHEREAL_CHARGE_DANGEROUS (3 * STANDARD_ETHEREAL_CHARGE) - #define CRYSTALIZE_COOLDOWN_LENGTH (120 SECONDS) #define CRYSTALIZE_PRE_WAIT_TIME (40 SECONDS) #define CRYSTALIZE_DISARM_WAIT_TIME (120 SECONDS) diff --git a/code/__DEFINES/mood.dm b/code/__DEFINES/mood.dm index 161f253b04c..60fadb031c1 100644 --- a/code/__DEFINES/mood.dm +++ b/code/__DEFINES/mood.dm @@ -1 +1,77 @@ -#define MOOD_CATEGORY_LEGION_CORE "regenerative core" +// Threshold levels for beauty for humans +#define BEAUTY_LEVEL_HORRID -66 +#define BEAUTY_LEVEL_BAD -33 +#define BEAUTY_LEVEL_DECENT 33 +#define BEAUTY_LEVEL_GOOD 66 +#define BEAUTY_LEVEL_GREAT 100 + +// Moods levels for humans +#define MOOD_HAPPY4 15 +#define MOOD_HAPPY3 10 +#define MOOD_HAPPY2 6 +#define MOOD_HAPPY1 2 +#define MOOD_NEUTRAL 0 +#define MOOD_SAD1 -3 +#define MOOD_SAD2 -7 +#define MOOD_SAD3 -15 +#define MOOD_SAD4 -20 + +// Moods levels for humans +#define MOOD_LEVEL_HAPPY4 9 +#define MOOD_LEVEL_HAPPY3 8 +#define MOOD_LEVEL_HAPPY2 7 +#define MOOD_LEVEL_HAPPY1 6 +#define MOOD_LEVEL_NEUTRAL 5 +#define MOOD_LEVEL_SAD1 4 +#define MOOD_LEVEL_SAD2 3 +#define MOOD_LEVEL_SAD3 2 +#define MOOD_LEVEL_SAD4 1 + +// Sanity values for humans +#define SANITY_MAXIMUM 150 +#define SANITY_GREAT 125 +#define SANITY_NEUTRAL 100 +#define SANITY_DISTURBED 75 +#define SANITY_UNSTABLE 50 +#define SANITY_CRAZY 25 +#define SANITY_INSANE 0 + +// Sanity levels for humans +#define SANITY_LEVEL_GREAT 1 +#define SANITY_LEVEL_NEUTRAL 2 +#define SANITY_LEVEL_DISTURBED 3 +#define SANITY_LEVEL_UNSTABLE 4 +#define SANITY_LEVEL_CRAZY 5 +#define SANITY_LEVEL_INSANE 6 +/// Equal to the highest sanity level +#define SANITY_LEVEL_MAX SANITY_LEVEL_INSANE + +// Group types for terror handlers +#define TERROR_HANDLER_SOURCE "source" +#define TERROR_HANDLER_EFFECT "effect" + +// Default cooldown for terror messages, to not get spammy +#define TERROR_MESSAGE_CD 30 SECONDS + +// Values for terror buildup effects +/// Initial value for effects that apply the component from spooking you +#define TERROR_BUILDUP_INITIAL 100 +/// How much terror is removed per second when we're not afraid +#define TERROR_BUILDUP_PASSIVE_DECREASE 15 +/// Level at which minor effects start kicking in +#define TERROR_BUILDUP_FEAR 150 +/// Level at which major effects start kicking in +#define TERROR_BUILDUP_TERROR 300 +/// Level at which we're having a full on panic attack +#define TERROR_BUILDUP_PANIC 500 +/// Maximum amount of terror that passive sources can stack +#define TERROR_BUILDUP_PASSIVE_MAXIMUM 600 +/// Your heart gives out at this level, should always be higher than TERROR_BUILDUP_PASSIVE_MAXIMUM +#define TERROR_BUILDUP_HEART_ATTACK 800 +/// Maximum amount of terror that can be held at once +#define TERROR_BUILDUP_MAXIMUM 1000 + +/// How much terror panic attacks grant +#define PANIC_ATTACK_TERROR_AMOUNT 50 +/// How much terror being hugged reduces, or increases if its done by a nightmare or someone you're afraid of +#define HUG_TERROR_AMOUNT 90 diff --git a/code/__DEFINES/path.dm b/code/__DEFINES/path.dm index 6a930699041..d98893ffd7b 100644 --- a/code/__DEFINES/path.dm +++ b/code/__DEFINES/path.dm @@ -9,7 +9,8 @@ * If you really want to optimize things, optimize this, cuz this gets called a lot. * We do early next.density check despite it being already checked in LinkBlockedWithAccess for short-circuit performance */ -#define CAN_STEP(cur_turf, next, simulated_only, pass_info, avoid) (next && !next.density && !(simulated_only && SSpathfinder.space_type_cache[next.type]) && !cur_turf.LinkBlockedWithAccess(next, pass_info) && (next != avoid)) +#define CAN_STEP(cur_turf, next, simulated_only, pass_info, avoid) \ + (next && !next.density && !(simulated_only && SSpathfinder.space_type_cache[next.type]) && (next != avoid) && !cur_turf.LinkBlockedWithAccess(next, pass_info)) #define DIAGONAL_DO_NOTHING NONE #define DIAGONAL_REMOVE_ALL 1 diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 7401e83f69a..8bcb12389f2 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -81,8 +81,6 @@ #define DEFAULT_CYBORG_NAME "Default Cyborg Name" // Choose grid or list TGUI layouts for UI's, when possible. -/// Default layout will be used. It can be either a grid or a list -#define TGUI_LAYOUT_DEFAULT "default" /// Force grid layout, even if default is a list. #define TGUI_LAYOUT_GRID "grid" /// Force list layout, even if default is a grid. @@ -166,3 +164,8 @@ #define INFO_RESKIN "reskin" /// Handles which layer the item will be on, for accessories #define INFO_LAYER "layer" + +// Lipstick styles +#define UPPER_LIP "Upper" +#define MIDDLE_LIP "Middle" +#define LOWER_LIP "Lower" diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index c9f32feca78..ada4f150725 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -241,3 +241,13 @@ #define GRENADE_WIRED 2 /// Grenade is ready to be finished #define GRENADE_READY 3 + +/// Maximum amount of layers a pill can hold, aka maximum number of seconds a pill takes to dissolve +#define PILL_MAX_LAYERS 60 +/// Maximum amount of layers above which you cannot taste the pill's contents +#define PILL_MAX_TASTE_LAYERS 20 +/// Maximum amount of layers that a ChemMaster can produce +#define PILL_MAX_PRINTABLE_LAYERS 30 + +/// Cooldown between patch reagent messages +#define PATCH_MESSAGE_COOLDOWN 10 SECONDS diff --git a/code/__DEFINES/religion.dm b/code/__DEFINES/religion.dm index 3074dae2987..a6a1810adf2 100644 --- a/code/__DEFINES/religion.dm +++ b/code/__DEFINES/religion.dm @@ -54,3 +54,10 @@ #define PUNISHMENT_LIGHTNING "lightningbolt" ///brands the sinner #define PUNISHMENT_BRAND "brand" + +/// Failed to bless the target, beat them over the head +#define BLESSING_FAILED "failed" +/// Blessed unsuccessfully, no limbs to heal, robotic limbs, etc +#define BLESSING_IGNORED "ignored" +/// Blessed successfully by healing or whatever +#define BLESSING_SUCCESS "success" diff --git a/code/__DEFINES/research/techweb_nodes.dm b/code/__DEFINES/research/techweb_nodes.dm index c44a3f4b71a..8fcd954e1a6 100644 --- a/code/__DEFINES/research/techweb_nodes.dm +++ b/code/__DEFINES/research/techweb_nodes.dm @@ -36,6 +36,7 @@ #define TECHWEB_NODE_CYBER_ORGANS_UPGRADED "cyber_organs_upgraded" #define TECHWEB_NODE_CYBERNETICS "cybernetics" #define TECHWEB_NODE_CYTOLOGY "cytology" +#define TECHWEB_NODE_DONK_PRODUCTS "donk_products" #define TECHWEB_NODE_ELECTRIC_WEAPONS "electric_weapons" #define TECHWEB_NODE_ENERGY_MANIPULATION "energy_manipulation" #define TECHWEB_NODE_EXODRONE "exodrone" diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm index 8a31acfc087..fb7b57e4184 100644 --- a/code/__DEFINES/shuttles.dm +++ b/code/__DEFINES/shuttles.dm @@ -141,6 +141,7 @@ #define ABOVE_MAX_SHUTTLE_SIZE 1 << 2 #define CUSTOM_AREA_NOT_COMPLETELY_CONTAINED 1 << 3 #define INTERSECTS_NON_WHITELISTED_AREA 1 << 4 +#define CONTAINS_APC_OF_NON_CUSTOM_AREA 1 << 5 // Custom shuttle engine defines #define CUSTOM_ENGINE_COEFF_MIN 0.5 diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 461aef1c703..74c0fa80141 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -216,8 +216,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_MAGICALLY_GIFTED "magically_gifted" /// This object innately spawns with fantasy variables already applied (the magical component is given to it on initialize), and thus we never want to give it the component again. #define TRAIT_INNATELY_FANTASTICAL_ITEM "innately_fantastical_item" -#define TRAIT_DEPRESSION "depression" -#define TRAIT_JOLLY "jolly" #define TRAIT_NOCRITDAMAGE "no_crit" /// Prevents shovies and some strong blows such as unarmed punches and (unreliably) tackles the owner down #define TRAIT_BRAWLING_KNOCKDOWN_BLOCKED "brawling_knockdown_blocked" @@ -514,6 +512,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Mob has a scar on their left/right eye #define TRAIT_RIGHT_EYE_SCAR "right_eye_scar" #define TRAIT_LEFT_EYE_SCAR "left_eye_scar" +/// Mob has their face visually, but not physically, covered +#define TRAIT_FACE_COVERED "face_covered" /// Trait added when a revenant is visible. #define TRAIT_REVENANT_REVEALED "revenant_revealed" @@ -892,7 +892,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SELF_AWARE "self_aware" #define TRAIT_FREERUNNING "freerunning" #define TRAIT_SKITTISH "skittish" -#define TRAIT_PROSOPAGNOSIA "prosopagnosia" #define TRAIT_TAGGER "tagger" #define TRAIT_PHOTOGRAPHER "photographer" #define TRAIT_MUSICIAN "musician" @@ -1179,6 +1178,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///The entity has AI 'access', so is either an AI, has an access wand, or is an admin ghost AI. Used to block off regular Silicons from things. ///This is put on the mob, it is used on the client for Admins but they are the exception as they use `isAdminGhostAI`. #define TRAIT_AI_ACCESS "ai_access_trait" +///The entity is able to receive a tracking button in chat +#define TRAIT_CAN_GET_AI_TRACKING_MESSAGE "can_get_ai_tracking_message" ///Used by wearable_client_colour to determine whether the mob wants to have the colours of the screen affected by worn items (some still do regardless). #define TRAIT_SEE_WORN_COLOURS "see_worn_colour" @@ -1464,4 +1465,13 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///Trait given to heretic summons, making them immune to heretic spells #define TRAIT_HERETIC_SUMMON "heretic_summon" +///trait given to mobs that are difficult to tame through mounting +#define TRAIT_MOB_DIFFICULT_TO_MOUNT "difficult_to_mount" + +///trait given to mobs that are easy to tame through mounting +#define TRAIT_MOB_EASY_TO_MOUNT "easy_to_mount" + +/// Prevents items from being speed potion-ed, but allows their speed to be altered in other ways +#define TRAIT_NO_SPEED_POTION "no_speed_potion" + // END TRAIT DEFINES diff --git a/code/__DEFINES/wires.dm b/code/__DEFINES/wires.dm index 57f51c50cd8..960fbbd7b14 100644 --- a/code/__DEFINES/wires.dm +++ b/code/__DEFINES/wires.dm @@ -44,8 +44,7 @@ #define WIRE_BEACON "Beacon" #define WIRE_BOLTLIGHT "Bolt Lights" #define WIRE_BOLTS "Bolts" -#define WIRE_BOOM "Boom Wire 1" -#define WIRE_BOOM2 "Boom Wire 2" +#define WIRE_BOOM "Boom Wire" #define WIRE_CAMERA "Camera" #define WIRE_CONTRABAND "Contraband" #define WIRE_DELAY "Delay" @@ -96,6 +95,8 @@ #define WIRE_OVERCLOCK "Overclock" #define WIRE_EQUIPMENT "Equipment" #define WIRE_ENVIRONMENT "Environment" +#define WIRE_LOOP_MODE "Loop mode" +#define WIRE_REPLAY_MODE "Replay mode" // Wire states for the AI #define AI_WIRE_NORMAL 0 diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index cee1a46c134..d1c6e6bb7d6 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -96,6 +96,15 @@ LAZYINITLIST(lazy_list); \ LAZYINITLIST(lazy_list[key]); \ lazy_list[key] |= value; +/// Calls Insert on the lazy list if it exists, otherwise initializes it with the value +#define LAZYINSERT(lazylist, index, value) \ + if (!lazylist) { \ + lazylist = list(value); \ + } else if (index == 0 && index > length(lazylist)) { \ + lazylist += value; \ + } else { \ + lazylist.Insert(index, value); \ + } ///Ensures the length of a list is at least I, prefilling it with V if needed. if V is a proc call, it is repeated for each new index so that list() can just make a new list for each item. #define LISTASSERTLEN(L, I, V...) \ @@ -937,13 +946,6 @@ UNTYPED_LIST_ADD(keys, key) return keys -///Gets the total amount of everything in the associative list. -/proc/assoc_value_sum(list/input) - var/keys = 0 - for(var/key in input) - keys += input[key] - return keys - ///compare two lists, returns TRUE if they are the same /proc/compare_list(list/l,list/d) if(!islist(l) || !islist(d)) diff --git a/code/__HELPERS/bitflag_lists.dm b/code/__HELPERS/bitflag_lists.dm index 48e35bd6b91..f2b3139ed3f 100644 --- a/code/__HELPERS/bitflag_lists.dm +++ b/code/__HELPERS/bitflag_lists.dm @@ -3,18 +3,19 @@ GLOBAL_LIST_EMPTY(bitflag_lists) /** * System for storing bitflags past the 24 limit, making use of an associative list. * - * Macro converts a list of integers into an associative list of bitflag entries for quicker comparison. - * Example: list(0, 4, 26, 32)) => list( "0" = ( (1<<0) | (1<<4) ), "1" = ( (1<<2) | (1<<8) ) ) + * Macro converts a string of integers into an associative list of bitflag entries for quicker comparison. + * Example: "0, 4, 26, 32" => list( "0" = ( (1<<0) | (1<<4) ), "1" = ( (1<<2) | (1<<8) ) ) * Lists are cached into a global list of lists to avoid identical duplicates. * This system makes value comparisons faster than pairing every element of one list with every element of the other for evaluation. * * Arguments: - * * target - List of integers. + * * read_from - String of integers. + * * set_into - Variable to set equal to a list of integers */ -#define SET_SMOOTHING_GROUPS(target) \ +#define SET_SMOOTHING_GROUPS(read_from, set_into) \ do { \ - var/txt_signature = target; \ - if(isnull((target = GLOB.bitflag_lists[txt_signature]))) { \ + var/txt_signature = read_from; \ + if(isnull((set_into = GLOB.bitflag_lists[txt_signature]))) { \ var/list/new_bitflag_list = list(); \ var/list/decoded = UNWRAP_SMOOTHING_GROUPS(txt_signature, decoded); \ for(var/value in decoded) { \ @@ -23,6 +24,6 @@ GLOBAL_LIST_EMPTY(bitflag_lists) } \ new_bitflag_list["[round(value / 24)]"] |= (1 << (value % 24)); \ }; \ - target = GLOB.bitflag_lists[txt_signature] = new_bitflag_list; \ + set_into = GLOB.bitflag_lists[txt_signature] = new_bitflag_list; \ }; \ } while (FALSE) diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index 21a5f00e31b..f333318c94e 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -231,3 +231,7 @@ /// Orders cameras by their `c_tag` ascending /proc/cmp_camera_ctag_asc(obj/machinery/camera/a, obj/machinery/camera/b) return sorttext(b.c_tag, a.c_tag) + +/// Sorts client colors based on their priority +/proc/cmp_client_colours(datum/client_colour/first_color, datum/client_colour/second_color) + return second_color.priority - first_color.priority diff --git a/code/__HELPERS/colors.dm b/code/__HELPERS/colors.dm index 28677669768..8e9ac7def5b 100644 --- a/code/__HELPERS/colors.dm +++ b/code/__HELPERS/colors.dm @@ -47,6 +47,8 @@ var/list/color = rgb2num(HTMLstring) return rgb(255 - color[1], 255 - color[2], 255 - color[3]) +#define TEMP_COLOR_SOURCE "temp_flash" + ///Flash a color on the passed mob /proc/flash_color(mob_or_client, flash_color=COLOR_CULT_RED, flash_time=20) var/mob/flashed_mob @@ -60,11 +62,13 @@ return var/datum/client_colour/temp/temp_color = new(flashed_mob) - temp_color.colour = flash_color + temp_color.color = flash_color temp_color.fade_in = flash_time * 0.25 temp_color.fade_out = flash_time * 0.25 QDEL_IN(temp_color, (flash_time * 0.5) + 1) - flashed_mob.add_client_colour(temp_color) + flashed_mob.add_client_colour(temp_color, TEMP_COLOR_SOURCE) + +#undef TEMP_COLOR_SOURCE /// Blends together two colors (passed as 3 or 4 length lists) using the screen blend mode /// Much like multiply, screen effects the brightness of the resulting color diff --git a/code/__HELPERS/fade_into_nothing.dm b/code/__HELPERS/fade_into_nothing.dm new file mode 100644 index 00000000000..d8df8ced78e --- /dev/null +++ b/code/__HELPERS/fade_into_nothing.dm @@ -0,0 +1,9 @@ +/// Deletes the atom with a little fading out animation after a specified time +/atom/proc/fade_into_nothing(life_time = 5 SECONDS, fade_time = 3 SECONDS) + QDEL_IN(src, life_time) + if (life_time > fade_time && fade_time > 0) + addtimer(CALLBACK(src, PROC_REF(fade_into_nothing_animate), fade_time), life_time - fade_time, TIMER_DELETE_ME) + +/// Actually does the fade out, used by fade_into_nothing() +/atom/proc/fade_into_nothing_animate(fade_time) + animate(src, alpha = 0, time = fade_time, flags = ANIMATION_PARALLEL) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 0635a24da18..d510078414b 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -230,11 +230,12 @@ return atom_to_find ///Send a message in common radio when a player arrives -/proc/announce_arrival(mob/living/carbon/human/character, rank) +/proc/announce_arrival(mob/living/carbon/human/character, rank, announce_to_ghosts = TRUE) if(!SSticker.IsRoundInProgress() || QDELETED(character)) return - var/area/player_area = get_area(character) - deadchat_broadcast(span_game(" has arrived at the station at [span_name(player_area.name)]."), span_game("[span_name(character.real_name)] ([rank])"), follow_target = character, message_type=DEADCHAT_ARRIVALRATTLE) + if (announce_to_ghosts) + var/area/player_area = get_area(character) + deadchat_broadcast(span_game(" has arrived at the station at [span_name(player_area.name)]."), span_game("[span_name(character.real_name)] ([rank])"), follow_target = character, message_type=DEADCHAT_ARRIVALRATTLE) if(character.mind && (character.mind.assigned_role.job_flags & JOB_ANNOUNCE_ARRIVAL)) aas_config_announce(/datum/aas_config_entry/arrival, list("PERSON" = character.real_name,"RANK" = rank)) diff --git a/code/__HELPERS/hallucinations.dm b/code/__HELPERS/hallucinations.dm index d3d4a2630ed..110a94e862d 100644 --- a/code/__HELPERS/hallucinations.dm +++ b/code/__HELPERS/hallucinations.dm @@ -1,6 +1,18 @@ /// A global list of all ongoing hallucinations, primarily for easy access to be able to stop (delete) hallucinations. GLOBAL_LIST_EMPTY(all_ongoing_hallucinations) +// Hallucination tiers +/// Very common hallucinations, minor stuff that'll make you double-take but is otherwise very subtle. +#define HALLUCINATION_TIER_COMMON 1 +/// Uncommon hallucinations, more noticeable and potentially more impactful (causing temporary stuns or stamina damage). +#define HALLUCINATION_TIER_UNCOMMON 2 +/// Rarer hallucinations which are usually pretty obvious, but also pretty impactful. +#define HALLUCINATION_TIER_RARE 3 +/// Hallucinations which are generally just for laughs and are obviously fake +#define HALLUCINATION_TIER_VERYSPECIAL 4 +/// Hallucinations which are never picked, only forced +#define HALLUCINATION_TIER_NEVER 5 + /// What typepath of the hallucination #define HALLUCINATION_ARG_TYPE 1 /// Where the hallucination came from, for logging @@ -111,7 +123,7 @@ GLOBAL_LIST_EMPTY(all_ongoing_hallucinations) to_chat(nearby_living, pick(optional_messages)) /// Global weighted list of all hallucinations that can show up randomly. -GLOBAL_LIST_INIT(random_hallucination_weighted_list, generate_hallucination_weighted_list()) +GLOBAL_LIST_INIT_TYPED(random_hallucination_weighted_list, /list, generate_hallucination_weighted_list()) /// Generates the global weighted list of random hallucinations. /proc/generate_hallucination_weighted_list() @@ -124,49 +136,68 @@ GLOBAL_LIST_INIT(random_hallucination_weighted_list, generate_hallucination_weig if(weight <= 0) continue - weighted_list[hallucination_type] = weight + LAZYSET(weighted_list["[initial(hallucination_type.hallucination_tier)]"], hallucination_type, weight) return weighted_list +/// Select a random hallucination from the hallucination pool +/// +/// * tier - the tier of hallucination to select from +/// * strict - if true, only select from the passed tier. If false, select from the passed tier and all tiers below it. +/proc/get_random_hallucination(tier = HALLUCINATION_TIER_COMMON, strict = FALSE) + if(!GLOB.random_hallucination_weighted_list[tier]) + CRASH("get_random_hallucination - No hallucinations in tier \[[tier]\].") + + var/list/pool = GLOB.random_hallucination_weighted_list["[tier]"].Copy() + if(!strict) + tier -= 1 + while(tier >= HALLUCINATION_TIER_COMMON) + pool += GLOB.random_hallucination_weighted_list["[tier]"] + tier -= 1 + + return pick_weight(pool) + /// Debug proc for getting the total weight of the random_hallucination_weighted_list /proc/debug_hallucination_weighted_list() var/total_weight = 0 - for(var/datum/hallucination/hallucination_type as anything in GLOB.random_hallucination_weighted_list) - total_weight += GLOB.random_hallucination_weighted_list[hallucination_type] + for(var/tier in GLOB.random_hallucination_weighted_list) + for(var/datum/hallucination/hallucination_type as anything in GLOB.random_hallucination_weighted_list[tier]) + total_weight += GLOB.random_hallucination_weighted_list[tier][hallucination_type] to_chat(usr, span_boldnotice("The total weight of the hallucination weighted list is [total_weight].")) return total_weight ADMIN_VERB(debug_hallucination_weighted_list_per_type, R_DEBUG, "Show Hallucination Weights", "View the weight of each hallucination subtype in the random weighted list.", ADMIN_CATEGORY_DEBUG) - var/header = "Type Weight Percent" + var/header = "Type Weight Tier Percent" var/total_weight = debug_hallucination_weighted_list() var/list/all_weights = list() var/datum/hallucination/last_type var/last_type_weight = 0 - for(var/datum/hallucination/hallucination_type as anything in GLOB.random_hallucination_weighted_list) - var/this_weight = GLOB.random_hallucination_weighted_list[hallucination_type] - // Last_type is the abstract parent of the last hallucination type we iterated over - if(last_type) - // If this hallucination is the same path as the last type (subtype), add it to the total of the last type weight - if(ispath(hallucination_type, last_type)) - last_type_weight += this_weight - continue + for(var/tier in GLOB.random_hallucination_weighted_list) + for(var/datum/hallucination/hallucination_type as anything in GLOB.random_hallucination_weighted_list[tier]) + var/this_weight = GLOB.random_hallucination_weighted_list[tier][hallucination_type] + // Last_type is the abstract parent of the last hallucination type we iterated over + if(last_type) + // If this hallucination is the same path as the last type (subtype), add it to the total of the last type weight + if(ispath(hallucination_type, last_type)) + last_type_weight += this_weight + continue - // Otherwise we moved onto the next hallucination subtype so we can stop + // Otherwise we moved onto the next hallucination subtype so we can stop + else + all_weights["[last_type] [last_type_weight] / [total_weight] [initial(hallucination_type.hallucination_tier)] [round(100 * (last_type_weight / total_weight), 0.01)]% chance"] = last_type_weight + + // Set last_type to the abstract parent of this hallucination + last_type = initial(hallucination_type.abstract_hallucination_parent) + // If last_type is the base hallucination it has no distinct subtypes so we can total it up immediately + if(last_type == /datum/hallucination) + all_weights["[hallucination_type] [this_weight] / [total_weight] [initial(hallucination_type.hallucination_tier)] [round(100 * (this_weight / total_weight), 0.01)]% chance"] = this_weight + last_type = null + + // Otherwise we start the weight sum for the next entry here else - all_weights["[last_type] [last_type_weight] / [total_weight] [round(100 * (last_type_weight / total_weight), 0.01)]% chance"] = last_type_weight - - // Set last_type to the abstract parent of this hallucination - last_type = initial(hallucination_type.abstract_hallucination_parent) - // If last_type is the base hallucination it has no distinct subtypes so we can total it up immediately - if(last_type == /datum/hallucination) - all_weights["[hallucination_type] [this_weight] / [total_weight] [round(100 * (this_weight / total_weight), 0.01)]% chance"] = this_weight - last_type = null - - // Otherwise we start the weight sum for the next entry here - else - last_type_weight = this_weight + last_type_weight = this_weight // Sort by weight descending, where weight is the values (not the keys). We assoc_to_keys later to get JUST the text sortTim(all_weights, GLOBAL_PROC_REF(cmp_numeric_dsc), associative = TRUE) diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm index 88ca3dbe11c..958fef1b233 100644 --- a/code/__HELPERS/icon_smoothing.dm +++ b/code/__HELPERS/icon_smoothing.dm @@ -1,17 +1,29 @@ -//generic (by snowflake) tile smoothing code; smooth your icons with this! +//generic (by snowflake + others) tile smoothing code; smooth your icons with this! /* - Each tile is divided in 4 corners, each corner has an appearance associated to it; the tile is then overlayed by these 4 appearances - To use this, just set your atom's 'smoothing_flags' var to 1. If your atom can be moved/unanchored, set its 'can_be_unanchored' var to 1. - If you don't want your atom's icon to smooth with anything but atoms of the same type, set the list 'canSmoothWith' to null; + Smoothed atoms are displayed using prebaked icon states which have been "cut" from a template to match a set of possible smoothing directions. + This allows for a variety of effects, such as nice wall textures, gloopy slime, carpet that makes sense, etc etc etc + + To use this, just set your atom's 'smoothing_flags' var to SMOOTH_BITMASK. There are other smoothing strategies but that's all we need to worry about right now + If you don't want your atom's icon to smooth with anything but atoms of the same type, set the string 'canSmoothWith' to null; Otherwise, put all the smoothing groups you want the atom icon to smooth with in 'canSmoothWith', including the group of the atom itself. Smoothing groups are just shared flags between objects. If one of the 'canSmoothWith' of A matches one of the `smoothing_groups` of B, then A will smooth with B. - Each atom has its own icon file with all the possible corner states. See 'smooth_wall.dmi' for a template. + Each atom has its own icon file with all its icon states, this file is typically generated automatically from a png/toml using hypnagoic, our external cutter. + See `wall.dmi' 'wall.png' and 'wall.png.toml' for an example, alongside [the icon cutter documentation](../../icons/Cutter.md) DIAGONAL SMOOTHING INSTRUCTIONS - To make your atom smooth diagonally you need all the proper icon states (see 'smooth_wall.dmi' for a template) and - to add the 'SMOOTH_DIAGONAL_CORNERS' flag to the atom's smoothing_flags var (in addition to either SMOOTH_TRUE or SMOOTH_MORE). + To make your atom smooth diagonally you need all the proper icon states (hypnagoic does not support these currently, TODO) + They're constructed out of 12 "corners", 4 outer corners, 4 "outside" inner corners and 4 "inside" inner corners + - 5, 6, 9 and 10 get what you can think of as "outside" bars, they're corners with no inside, like below (smoothing from the POV of [X]). + - [X]X + - X + - 21, 38, 74, 137 get "inside" bars, still built with the same "outside" edges. + - [X]X + - X X + I shouldn't like, need to tell you this, ideally hypnagogic would just support it, but I haven't done that yet and I wanted to write this down for now. + + Then add the 'SMOOTH_DIAGONAL_CORNERS' flag to the atom's smoothing_flags var (in addition to SMOOTH_BITMASK). For turfs, what appears under the diagonal corners depends on the turf that was in the same position previously: if you make a wall on a plating floor, you will see plating under the diagonal wall corner, if it was space, you will see space. @@ -19,14 +31,15 @@ If you wish to map a diagonal wall corner with a fixed underlay, you must configure the turf's 'fixed_underlay' list var, like so: fixed_underlay = list("icon"='icon_file.dmi', "icon_state"="iconstatename") A non null 'fixed_underlay' list var will skip copying the previous turf appearance and always use the list. If the list is - not set properly, the underlay will default to regular floor plating. + not set properly, the underlay will default to regular floor plating. + NOTE: a special case of this involves setting fixed_underlay to list("space" = TRUE), which will force it to draw space below the wall, no matter what To see an example of a diagonal wall, see '/turf/closed/wall/mineral/titanium' and its subtypes. -*/ -#define NO_ADJ_FOUND 0 -#define ADJ_FOUND 1 -#define NULLTURF_BORDER 2 + BORDER SMOOTHING INSTRUCTIONS + Ok so we have code to smooth border objects together, unfortunately for you I don't remember how they're supposed to be rendered (AND WE HAVE NO CUTTER SUPPORT) + I'll fill this in when/if I add proper cutting for these, they're so painful to put together by hand I don't really want to even describe it to you +*/ GLOBAL_LIST_INIT(adjacent_direction_lookup, generate_adjacent_directions()) @@ -104,66 +117,6 @@ xxx xxx xxx (GLOB.adjacent_direction_lookup[border_obj.dir][direction + 1]) ? REVERSE_DIR(direction) : NONE \ ) -#define DEFAULT_UNDERLAY_ICON 'icons/turf/floors.dmi' -#define DEFAULT_UNDERLAY_ICON_STATE "plating" - - -///Scans all adjacent turfs to find targets to smooth with. -/atom/proc/calculate_adjacencies() - . = NONE - - if(!loc) - return - - for(var/direction in GLOB.cardinals) - switch(find_type_in_direction(direction)) - if(NULLTURF_BORDER) - if((smoothing_flags & SMOOTH_BORDER)) - . |= direction //BYOND and smooth dirs are the same for cardinals - if(ADJ_FOUND) - . |= direction //BYOND and smooth dirs are the same for cardinals - - if(. & NORTH_JUNCTION) - if(. & WEST_JUNCTION) - switch(find_type_in_direction(NORTHWEST)) - if(NULLTURF_BORDER) - if((smoothing_flags & SMOOTH_BORDER)) - . |= NORTHWEST_JUNCTION - if(ADJ_FOUND) - . |= NORTHWEST_JUNCTION - - if(. & EAST_JUNCTION) - switch(find_type_in_direction(NORTHEAST)) - if(NULLTURF_BORDER) - if((smoothing_flags & SMOOTH_BORDER)) - . |= NORTHEAST_JUNCTION - if(ADJ_FOUND) - . |= NORTHEAST_JUNCTION - - if(. & SOUTH_JUNCTION) - if(. & WEST_JUNCTION) - switch(find_type_in_direction(SOUTHWEST)) - if(NULLTURF_BORDER) - if((smoothing_flags & SMOOTH_BORDER)) - . |= SOUTHWEST_JUNCTION - if(ADJ_FOUND) - . |= SOUTHWEST_JUNCTION - - if(. & EAST_JUNCTION) - switch(find_type_in_direction(SOUTHEAST)) - if(NULLTURF_BORDER) - if((smoothing_flags & SMOOTH_BORDER)) - . |= SOUTHEAST_JUNCTION - if(ADJ_FOUND) - . |= SOUTHEAST_JUNCTION - - -/atom/movable/calculate_adjacencies() - if(can_be_unanchored && !anchored) - return NONE - return ..() - - ///do not use, use QUEUE_SMOOTH(atom) /atom/proc/smooth_icon() if(QDELETED(src)) @@ -172,12 +125,7 @@ xxx xxx xxx flags_1 |= HTML_USE_INITAL_ICON_1 if (!z) CRASH("[type] called smooth_icon() without being on a z-level") - if(smoothing_flags & SMOOTH_CORNERS) - if(smoothing_flags & SMOOTH_DIAGONAL_CORNERS) - corners_diagonal_smooth(calculate_adjacencies()) - else - corners_cardinal_smooth(calculate_adjacencies()) - else if(smoothing_flags & (SMOOTH_BITMASK|SMOOTH_BITMASK_CARDINALS)) + if(smoothing_flags & (SMOOTH_BITMASK|SMOOTH_BITMASK_CARDINALS)) bitmask_smooth() else CRASH("smooth_icon called for [src] with smoothing_flags == [smoothing_flags]") @@ -189,157 +137,6 @@ xxx xxx xxx . = ..() update_appearance(~UPDATE_SMOOTHING) -/atom/proc/corners_diagonal_smooth(adjacencies) - switch(adjacencies) - if(NORTH_JUNCTION|WEST_JUNCTION) - replace_smooth_overlays("d-se","d-se-0") - if(NORTH_JUNCTION|EAST_JUNCTION) - replace_smooth_overlays("d-sw","d-sw-0") - if(SOUTH_JUNCTION|WEST_JUNCTION) - replace_smooth_overlays("d-ne","d-ne-0") - if(SOUTH_JUNCTION|EAST_JUNCTION) - replace_smooth_overlays("d-nw","d-nw-0") - - if(NORTH_JUNCTION|WEST_JUNCTION|NORTHWEST_JUNCTION) - replace_smooth_overlays("d-se","d-se-1") - if(NORTH_JUNCTION|EAST_JUNCTION|NORTHEAST_JUNCTION) - replace_smooth_overlays("d-sw","d-sw-1") - if(SOUTH_JUNCTION|WEST_JUNCTION|SOUTHWEST_JUNCTION) - replace_smooth_overlays("d-ne","d-ne-1") - if(SOUTH_JUNCTION|EAST_JUNCTION|SOUTHEAST_JUNCTION) - replace_smooth_overlays("d-nw","d-nw-1") - - else - corners_cardinal_smooth(adjacencies) - return FALSE - - icon_state = "" - return TRUE - - -/atom/proc/corners_cardinal_smooth(adjacencies) - var/mutable_appearance/temp_ma - - //NW CORNER - var/nw = "1-i" - if((adjacencies & NORTH_JUNCTION) && (adjacencies & WEST_JUNCTION)) - if(adjacencies & NORTHWEST_JUNCTION) - nw = "1-f" - else - nw = "1-nw" - else - if(adjacencies & NORTH_JUNCTION) - nw = "1-n" - else if(adjacencies & WEST_JUNCTION) - nw = "1-w" - temp_ma = mutable_appearance(icon, nw) - nw = temp_ma.appearance - - //NE CORNER - var/ne = "2-i" - if((adjacencies & NORTH_JUNCTION) && (adjacencies & EAST_JUNCTION)) - if(adjacencies & NORTHEAST_JUNCTION) - ne = "2-f" - else - ne = "2-ne" - else - if(adjacencies & NORTH_JUNCTION) - ne = "2-n" - else if(adjacencies & EAST_JUNCTION) - ne = "2-e" - temp_ma = mutable_appearance(icon, ne) - ne = temp_ma.appearance - - //SW CORNER - var/sw = "3-i" - if((adjacencies & SOUTH_JUNCTION) && (adjacencies & WEST_JUNCTION)) - if(adjacencies & SOUTHWEST_JUNCTION) - sw = "3-f" - else - sw = "3-sw" - else - if(adjacencies & SOUTH_JUNCTION) - sw = "3-s" - else if(adjacencies & WEST_JUNCTION) - sw = "3-w" - temp_ma = mutable_appearance(icon, sw) - sw = temp_ma.appearance - - //SE CORNER - var/se = "4-i" - if((adjacencies & SOUTH_JUNCTION) && (adjacencies & EAST_JUNCTION)) - if(adjacencies & SOUTHEAST_JUNCTION) - se = "4-f" - else - se = "4-se" - else - if(adjacencies & SOUTH_JUNCTION) - se = "4-s" - else if(adjacencies & EAST_JUNCTION) - se = "4-e" - temp_ma = mutable_appearance(icon, se) - se = temp_ma.appearance - - var/list/new_overlays - - if(top_left_corner != nw) - cut_overlay(top_left_corner) - top_left_corner = nw - LAZYADD(new_overlays, nw) - - if(top_right_corner != ne) - cut_overlay(top_right_corner) - top_right_corner = ne - LAZYADD(new_overlays, ne) - - if(bottom_right_corner != sw) - cut_overlay(bottom_right_corner) - bottom_right_corner = sw - LAZYADD(new_overlays, sw) - - if(bottom_left_corner != se) - cut_overlay(bottom_left_corner) - bottom_left_corner = se - LAZYADD(new_overlays, se) - - if(new_overlays) - add_overlay(new_overlays) - - -///Scans direction to find targets to smooth with. -/atom/proc/find_type_in_direction(direction) - var/turf/target_turf = get_step(src, direction) - if(!target_turf) - return NULLTURF_BORDER - - var/area/target_area = get_area(target_turf) - var/area/source_area = get_area(src) - if((source_area.area_limited_icon_smoothing && !istype(target_area, source_area.area_limited_icon_smoothing)) || (target_area.area_limited_icon_smoothing && !istype(source_area, target_area.area_limited_icon_smoothing))) - return NO_ADJ_FOUND - - if(isnull(canSmoothWith)) //special case in which it will only smooth with itself - if(isturf(src)) - return (type == target_turf.type) ? ADJ_FOUND : NO_ADJ_FOUND - var/atom/matching_obj = locate(type) in target_turf - return (matching_obj && matching_obj.type == type) ? ADJ_FOUND : NO_ADJ_FOUND - - if(!isnull(target_turf.smoothing_groups)) - for(var/target in canSmoothWith) - if(!(canSmoothWith[target] & target_turf.smoothing_groups[target])) - continue - return ADJ_FOUND - - if(smoothing_flags & SMOOTH_OBJ) - for(var/atom/movable/thing as anything in target_turf) - if(!thing.anchored || isnull(thing.smoothing_groups)) - continue - for(var/target in canSmoothWith) - if(!(canSmoothWith[target] & thing.smoothing_groups[target])) - continue - return ADJ_FOUND - - return NO_ADJ_FOUND - /** * Basic smoothing proc. The atom checks for adjacent directions to smooth with and changes the icon_state based on that. * @@ -351,6 +148,8 @@ xxx xxx xxx // cache for sanic speed var/canSmoothWith = src.canSmoothWith + var/area/home_base = get_area(src) + var/area_limited_icon_smoothing = home_base?.area_limited_icon_smoothing var/smooth_border = (smoothing_flags & SMOOTH_BORDER) var/smooth_obj = (smoothing_flags & SMOOTH_OBJ) @@ -360,7 +159,7 @@ xxx xxx xxx #define SEARCH_ADJ_IN_DIR(direction, direction_flag, ADJ_FOUND, WORLD_BORDER, BORDER_CHECK) \ do { \ var/turf/neighbor = get_step(src, direction); \ - if(neighbor && ##BORDER_CHECK(neighbor, direction)) { \ + if(neighbor && ##BORDER_CHECK(neighbor, direction) && (!area_limited_icon_smoothing || istype(neighbor.loc, area_limited_icon_smoothing))) { \ var/neighbor_smoothing_groups = neighbor.smoothing_groups; \ if(neighbor_smoothing_groups) { \ for(var/target in canSmoothWith) { \ @@ -459,13 +258,16 @@ xxx xxx xxx #undef BITMASK_FOUND #undef SEARCH_ADJ_IN_DIR + +#define DEFAULT_UNDERLAY_ICON 'icons/turf/floors.dmi' +#define DEFAULT_UNDERLAY_ICON_STATE "plating" + ///Changes the icon state based on the new junction bitmask /atom/proc/set_smoothed_icon_state(new_junction) . = smoothing_junction smoothing_junction = new_junction icon_state = "[base_icon_state]-[smoothing_junction]" - /turf/closed/set_smoothed_icon_state(new_junction) // Avoid calling ..() here to avoid setting icon_state twice, which is expensive given how hot this proc is var/old_junction = smoothing_junction @@ -513,6 +315,8 @@ xxx xxx xxx return return ..() +#undef DEFAULT_UNDERLAY_ICON +#undef DEFAULT_UNDERLAY_ICON_STATE //Icon smoothing helpers /proc/smooth_zlevel(zlevel, now = FALSE) @@ -530,49 +334,17 @@ xxx xxx xxx else QUEUE_SMOOTH(movable_to_smooth) +/atom/proc/set_can_smooth_with(canSmoothWith) + if(!canSmoothWith) + src.canSmoothWith = null + return + PARSE_CAN_SMOOTH_WITH(canSmoothWith, src.canSmoothWith, smoothing_flags) -/atom/proc/clear_smooth_overlays() - cut_overlay(top_left_corner) - top_left_corner = null - cut_overlay(top_right_corner) - top_right_corner = null - cut_overlay(bottom_right_corner) - bottom_right_corner = null - cut_overlay(bottom_left_corner) - bottom_left_corner = null - -/// Internal: Takes icon states as text to replace smoothing corner overlays -/atom/proc/replace_smooth_overlays(nw, ne, sw, se) - clear_smooth_overlays() - var/mutable_appearance/temp_ma - - temp_ma = mutable_appearance(icon, nw) - nw = temp_ma.appearance - - temp_ma = mutable_appearance(icon, ne) - ne = temp_ma.appearance - - temp_ma = mutable_appearance(icon, sw) - sw = temp_ma.appearance - - temp_ma = mutable_appearance(icon, se) - se = temp_ma.appearance - - var/list/new_overlays = list() - - top_left_corner = nw - new_overlays += nw - - top_right_corner = ne - new_overlays += ne - - bottom_left_corner = sw - new_overlays += sw - - bottom_right_corner = se - new_overlays += se - - add_overlay(new_overlays) +/atom/proc/set_smoothing_groups(smoothing_groups) + if(!smoothing_groups) + src.smoothing_groups = null + return + PARSE_SMOOTHING_GROUPS(smoothing_groups, src.smoothing_groups) /// Takes a direction, turns it into all the junctions that contain it /proc/dir_to_all_junctions(dir) @@ -650,15 +422,10 @@ xxx xxx xxx /turf/closed/wall/smooth name = "smooth wall" icon = 'icons/turf/smooth_wall.dmi' - icon_state = "smooth" - smoothing_flags = SMOOTH_CORNERS|SMOOTH_DIAGONAL_CORNERS|SMOOTH_BORDER - smoothing_groups = null - canSmoothWith = null + icon_state = "smooth_wall-0" + base_icon_state = "smooth_wall" + smoothing_flags = SMOOTH_BITMASK|SMOOTH_DIAGONAL_CORNERS|SMOOTH_BORDER + smoothing_groups = SMOOTH_GROUP_TEST_WALL + canSmoothWith = SMOOTH_GROUP_TEST_WALL -#undef NO_ADJ_FOUND -#undef ADJ_FOUND -#undef NULLTURF_BORDER - -#undef DEFAULT_UNDERLAY_ICON -#undef DEFAULT_UNDERLAY_ICON_STATE #undef CAN_DIAGONAL_SMOOTH diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 2c0e5f93d21..2d19b506d8d 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -545,10 +545,10 @@ world continue // Find the new dimensions of the flat icon to fit the added overlay - addX1 = min(flatX1, layer_image.pixel_x + 1) - addX2 = max(flatX2, layer_image.pixel_x + add.Width()) - addY1 = min(flatY1, layer_image.pixel_y + 1) - addY2 = max(flatY2, layer_image.pixel_y + add.Height()) + addX1 = min(flatX1, layer_image.pixel_x + layer_image.pixel_w + 1) + addX2 = max(flatX2, layer_image.pixel_x + layer_image.pixel_w + add.Width()) + addY1 = min(flatY1, layer_image.pixel_y + layer_image.pixel_z + 1) + addY2 = max(flatY2, layer_image.pixel_y + layer_image.pixel_z + add.Height()) if ( addX1 != flatX1 \ @@ -570,7 +570,7 @@ world flatY2 = addY2 // Blend the overlay into the flattened icon - flat.Blend(add, blendMode2iconMode(curblend), layer_image.pixel_x + 2 - flatX1, layer_image.pixel_y + 2 - flatY1) + flat.Blend(add, blendMode2iconMode(curblend), layer_image.pixel_x + layer_image.pixel_w + 2 - flatX1, layer_image.pixel_y + layer_image.pixel_z + 2 - flatY1) if(appearance.alpha < 255) @@ -1130,7 +1130,7 @@ GLOBAL_LIST_EMPTY(transformation_animation_objects) filters -= filters[filter_index] /** - * Center's an image. + * Center's an image. Only run this on float overlays and not physical * Requires: * The Image * The x dimension of the icon file used in the image @@ -1160,8 +1160,8 @@ GLOBAL_LIST_EMPTY(transformation_animation_objects) if(y_dimension < ICON_SIZE_Y) y_offset *= -1 - image_to_center.pixel_x = x_offset - image_to_center.pixel_y = y_offset + image_to_center.pixel_w = x_offset + image_to_center.pixel_z = y_offset return image_to_center @@ -1195,8 +1195,13 @@ GLOBAL_LIST_EMPTY(transformation_animation_objects) if(isnull(icon_states_cache[file])) icon_states_cache[file] = list() - for(var/istate in icon_states(file)) - icon_states_cache[file][istate] = TRUE + var/file_string = "[file]" + if(isfile(file) && length(file_string)) // ensure that it's actually a file, and not a runtime icon + for(var/istate in json_decode(rustg_dmi_icon_states(file_string))) + icon_states_cache[file][istate] = TRUE + else // Otherwise, we have to use the slower BYOND proc + for(var/istate in icon_states(file)) + icon_states_cache[file][istate] = TRUE return !isnull(icon_states_cache[file][state]) @@ -1270,9 +1275,9 @@ GLOBAL_LIST_EMPTY(transformation_animation_objects) var/height = icon_dimensions["height"] if(width > ICON_SIZE_X) - alert_overlay.pixel_x = -(ICON_SIZE_X / 2) * ((width - ICON_SIZE_X) / ICON_SIZE_X) + alert_overlay.pixel_w = -(ICON_SIZE_X / 2) * ((width - ICON_SIZE_X) / ICON_SIZE_X) if(height > ICON_SIZE_Y) - alert_overlay.pixel_y = -(ICON_SIZE_Y / 2) * ((height - ICON_SIZE_Y) / ICON_SIZE_Y) + alert_overlay.pixel_z = -(ICON_SIZE_Y / 2) * ((height - ICON_SIZE_Y) / ICON_SIZE_Y) if(width > ICON_SIZE_X || height > ICON_SIZE_Y) if(width >= height) scale = ICON_SIZE_X / width diff --git a/code/__HELPERS/lazy_templates.dm b/code/__HELPERS/lazy_templates.dm index 10b9b6dac16..87f51d9d129 100644 --- a/code/__HELPERS/lazy_templates.dm +++ b/code/__HELPERS/lazy_templates.dm @@ -9,6 +9,8 @@ GLOBAL_LIST_INIT(lazy_templates, generate_lazy_template_map()) . = list() for(var/datum/lazy_template/template as anything in subtypesof(/datum/lazy_template)) var/key = initial(template.key) + if(!key) // some subtypes like basketball and deathmatch have a base datum with no key + continue if(key in .) stack_trace("Found multiple lazy templates with the same key! '[key]'") .[key] = new template diff --git a/code/__HELPERS/levels.dm b/code/__HELPERS/levels.dm index 7a3e53c6787..14d65a929dc 100644 --- a/code/__HELPERS/levels.dm +++ b/code/__HELPERS/levels.dm @@ -86,3 +86,28 @@ var/dy = end.yi - start.yi return round(delta_to_angle(dy, dx)) return null + +/** + * Gets all connected z-levels within a given manhattan distance of center. + * + * Arguments: + * * center: The starting Z level. Can either be a numeric z-level, or a [/datun/space_level]. + * * dist: The maximum distance to search. + */ +/proc/get_linked_z_levels_in_range(datum/space_level/center, dist) + if(isnum(center)) + center = SSmapping.get_level(center) + var/list/to_check = list(center) + var/list/checked = list() + var/total_search_distance = 0 + while(to_check.len && total_search_distance <= dist) + var/list/current_pass = to_check.Copy() + to_check.Cut() + for(var/datum/space_level/level as anything in current_pass) + checked[level] = TRUE + for(var/direction in level.neigbours) + var/datum/space_level/neighbor = level.neigbours[direction] + if(!checked[neighbor]) + to_check |= neighbor + total_search_distance++ + return checked diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index d7ce42164db..3f34af8d20b 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -239,8 +239,12 @@ GLOBAL_LIST_INIT(skin_tone_names, list( * @param {number} max_interact_count - The maximum amount of interactions allowed. * * @param {boolean} hidden - By default, any action 1 second or longer shows a cog over the user while it is in progress. If hidden is set to TRUE, the cog will not be shown. + * + * @param {icon} icon - The icon file of the cog. Default: 'icons/effects/progressbar.dmi' + * + * @param {iconstate} iconstate - The icon state of the cog. Default: "Cog" */ -/proc/do_after(mob/user, delay, atom/target, timed_action_flags = NONE, progress = TRUE, datum/callback/extra_checks, interaction_key, max_interact_count = 1, hidden = FALSE) +/proc/do_after(mob/user, delay, atom/target, timed_action_flags = NONE, progress = TRUE, datum/callback/extra_checks, interaction_key, max_interact_count = 1, hidden = FALSE, icon = 'icons/effects/progressbar.dmi', iconstate = "cog") if(!user) return FALSE if(!isnum(delay)) @@ -274,7 +278,7 @@ GLOBAL_LIST_INIT(skin_tone_names, list( progbar = new(user, delay, target || user) if(!hidden && delay >= 1 SECONDS) - cog = new(user) + cog = new(user, icon, iconstate) SEND_SIGNAL(user, COMSIG_DO_AFTER_BEGAN) diff --git a/code/__HELPERS/paths/jps.dm b/code/__HELPERS/paths/jps.dm index daeddc13c60..cbff1d3328e 100644 --- a/code/__HELPERS/paths/jps.dm +++ b/code/__HELPERS/paths/jps.dm @@ -6,7 +6,11 @@ /// A helper macro for JPS, for telling when a node has forced neighbors that need expanding /// Only usable in the context of the jps datum because of the datum vars it relies on +/// Checks if we are deviating from our "running" directions #define STEP_NOT_HERE_BUT_THERE(cur_turf, dirA, dirB) ((!CAN_STEP(cur_turf, get_step(cur_turf, dirA), simulated_only, pass_info, avoid) && CAN_STEP(cur_turf, get_step(cur_turf, dirB), simulated_only, pass_info, avoid))) +/// Checks if a border object stops our parent from reaching a turf we CAN reach +#define TURF_CANT_WE_CAN(parent_turf, dir_parent, cur_turf, dur_cur) ((!CAN_STEP(parent_turf, get_step(parent_turf, dir_parent), simulated_only, pass_info, avoid) && CAN_STEP(cur_turf, get_step(cur_turf, dur_cur), simulated_only, pass_info, avoid))) + /// The JPS Node datum represents a turf that we find interesting enough to add to the open list and possibly search for new tiles from /datum/jps_node @@ -212,16 +216,20 @@ switch(heading) if(NORTH) - if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, NORTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, EAST, NORTHEAST)) + if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, NORTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, EAST, NORTHEAST) \ + || TURF_CANT_WE_CAN(get_step(current_turf, EAST), NORTH, current_turf, NORTHEAST) || TURF_CANT_WE_CAN(get_step(current_turf, WEST), NORTH, current_turf, NORTHWEST)) interesting = TRUE if(SOUTH) - if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, SOUTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, EAST, SOUTHEAST)) + if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, SOUTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, EAST, SOUTHEAST) \ + || TURF_CANT_WE_CAN(get_step(current_turf, EAST), SOUTH, current_turf, SOUTHEAST) || TURF_CANT_WE_CAN(get_step(current_turf, WEST), SOUTH, current_turf, SOUTHWEST)) interesting = TRUE if(EAST) - if(STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHEAST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHEAST)) + if(STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHEAST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHEAST) \ + || TURF_CANT_WE_CAN(get_step(current_turf, SOUTH), EAST, current_turf, SOUTHEAST) || TURF_CANT_WE_CAN(get_step(current_turf, NORTH), EAST, current_turf, NORTHEAST)) interesting = TRUE if(WEST) - if(STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHWEST)) + if(STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHWEST) \ + || TURF_CANT_WE_CAN(get_step(current_turf, SOUTH), WEST, current_turf, SOUTHWEST) || TURF_CANT_WE_CAN(get_step(current_turf, NORTH), WEST, current_turf, NORTHWEST)) interesting = TRUE if(interesting) @@ -274,22 +282,26 @@ switch(heading) if(NORTHWEST) - if(STEP_NOT_HERE_BUT_THERE(current_turf, EAST, NORTHEAST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHWEST)) + if(STEP_NOT_HERE_BUT_THERE(current_turf, EAST, NORTHEAST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHWEST) \ + || TURF_CANT_WE_CAN(lag_turf, NORTH, current_turf, EAST) || TURF_CANT_WE_CAN(lag_turf, WEST, current_turf, SOUTH)) interesting = TRUE else possible_child_node = (lateral_scan_spec(current_turf, WEST) || lateral_scan_spec(current_turf, NORTH)) if(NORTHEAST) - if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, NORTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHEAST)) + if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, NORTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, SOUTH, SOUTHEAST) \ + || TURF_CANT_WE_CAN(lag_turf, NORTH, current_turf, WEST) || TURF_CANT_WE_CAN(lag_turf, EAST, current_turf, SOUTH)) interesting = TRUE else possible_child_node = (lateral_scan_spec(current_turf, EAST) || lateral_scan_spec(current_turf, NORTH)) if(SOUTHWEST) - if(STEP_NOT_HERE_BUT_THERE(current_turf, EAST, SOUTHEAST) || STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHWEST)) + if(STEP_NOT_HERE_BUT_THERE(current_turf, EAST, SOUTHEAST) || STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHWEST) \ + || TURF_CANT_WE_CAN(lag_turf, SOUTH, current_turf, EAST) || TURF_CANT_WE_CAN(lag_turf, WEST, current_turf, NORTH)) interesting = TRUE else possible_child_node = (lateral_scan_spec(current_turf, SOUTH) || lateral_scan_spec(current_turf, WEST)) if(SOUTHEAST) - if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, SOUTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHEAST)) + if(STEP_NOT_HERE_BUT_THERE(current_turf, WEST, SOUTHWEST) || STEP_NOT_HERE_BUT_THERE(current_turf, NORTH, NORTHEAST) \ + || TURF_CANT_WE_CAN(lag_turf, SOUTH, current_turf, WEST) || TURF_CANT_WE_CAN(lag_turf, EAST, current_turf, NORTH)) interesting = TRUE else possible_child_node = (lateral_scan_spec(current_turf, SOUTH) || lateral_scan_spec(current_turf, EAST)) diff --git a/code/__HELPERS/paths/sssp.dm b/code/__HELPERS/paths/sssp.dm index 092da587793..359a72c0d1f 100644 --- a/code/__HELPERS/paths/sssp.dm +++ b/code/__HELPERS/paths/sssp.dm @@ -77,7 +77,7 @@ var/turf/next_turf = other_end // Cache for sonic speed var/next_closest = src.next_closest - while(next_turf != FLOW_PATH_END || next_turf == null) + while(next_turf != FLOW_PATH_END && next_turf != null) path += next_turf next_turf = next_closest[next_turf] // We take the first entry cause that's the turf diff --git a/code/__HELPERS/piping_colors_lists.dm b/code/__HELPERS/piping_colors_lists.dm index 8b92e2d530a..1c58b35a908 100644 --- a/code/__HELPERS/piping_colors_lists.dm +++ b/code/__HELPERS/piping_colors_lists.dm @@ -1,6 +1,6 @@ ///All colors available to pipes and atmos components GLOBAL_LIST_INIT(pipe_paint_colors, list( - "omni" = COLOR_VERY_LIGHT_GRAY, + "omni" = ATMOS_COLOR_OMNI, "green" = COLOR_VIBRANT_LIME, "blue" = COLOR_BLUE, "red" = COLOR_RED, @@ -22,7 +22,7 @@ GLOBAL_LIST_INIT(pipe_colors_ordered, sort_list(list( COLOR_CYAN = -3, COLOR_DARK = -2, COLOR_VIBRANT_LIME = -1, - COLOR_VERY_LIGHT_GRAY = 0, + ATMOS_COLOR_OMNI = 0, COLOR_ENGINEERING_ORANGE = 1, COLOR_PURPLE = 2, COLOR_RED = 3, @@ -32,7 +32,7 @@ GLOBAL_LIST_INIT(pipe_colors_ordered, sort_list(list( ///Names shown in the examine for every colored atmos component GLOBAL_LIST_INIT(pipe_color_name, sort_list(list( - COLOR_VERY_LIGHT_GRAY = "omni", + ATMOS_COLOR_OMNI = "omni", COLOR_BLUE = "blue", COLOR_RED = "red", COLOR_VIBRANT_LIME = "green", diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 1a4c6ab100c..a6face66ed7 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -224,7 +224,8 @@ GLOBAL_LIST_INIT(achievements_unlocked, list()) for(var/client/C in GLOB.clients) if(!C?.credits) C?.RollCredits() - C?.playtitlemusic(volume_multiplier = 0.5) + if(COOLDOWN_FINISHED(GLOB, web_sound_cooldown)) + C?.playtitlemusic(volume_multiplier = 0.5) if(speed_round && was_forced != ADMIN_FORCE_END_ROUND) C?.give_award(/datum/award/achievement/misc/speed_round, C?.mob) HandleRandomHardcoreScore(C) diff --git a/code/__HELPERS/spatial_info.dm b/code/__HELPERS/spatial_info.dm index 3125f380902..4cc71bb091b 100644 --- a/code/__HELPERS/spatial_info.dm +++ b/code/__HELPERS/spatial_info.dm @@ -26,6 +26,7 @@ alerts = null screens = null client_colours = null + color_filter_store = null hud_possible = null /// references to everything "on" the turf we are assigned to, that we care about. populated in assign() and cleared in unassign(). /// movables iside of other movables count as being "on" if they have get_turf(them) == our turf. intentionally not a lazylist @@ -78,8 +79,9 @@ * * * view_radius - what radius search circle we are using, worse performance as this increases * * source - object at the center of our search area. everything in get_turf(source) is guaranteed to be part of the search area + * * contents_type - the type of contents we want to be looking for. defaults to hearing sensitive */ -/proc/get_hearers_in_view(view_radius, atom/source) +/proc/get_hearers_in_view(view_radius, atom/source, contents_type=RECURSIVE_CONTENTS_HEARING_SENSITIVE) var/turf/center_turf = get_turf(source) if(!center_turf) return @@ -88,12 +90,12 @@ if(view_radius <= 0)//special case for if only source cares for(var/atom/movable/target as anything in center_turf) - var/list/recursive_contents = target.important_recursive_contents?[RECURSIVE_CONTENTS_HEARING_SENSITIVE] + var/list/recursive_contents = target.important_recursive_contents?[contents_type] if(recursive_contents) . += recursive_contents return . - var/list/hearables_from_grid = SSspatial_grid.orthogonal_range_search(source, RECURSIVE_CONTENTS_HEARING_SENSITIVE, view_radius) + var/list/hearables_from_grid = SSspatial_grid.orthogonal_range_search(source, contents_type, view_radius) if(!length(hearables_from_grid))//we know that something is returned by the grid, but we dont know if we need to actually filter down the output return . @@ -126,8 +128,9 @@ * * * radius - what radius search circle we are using, worse performance as this increases * * source - object at the center of our search area. everything in get_turf(source) is guaranteed to be part of the search area + * * contents_type - the type of contents we want to be looking for. defaults to hearing sensitive */ -/proc/get_hearers_in_range(range, atom/source) +/proc/get_hearers_in_range(range, atom/source, contents_type=RECURSIVE_CONTENTS_HEARING_SENSITIVE) var/turf/center_turf = get_turf(source) if(!center_turf) return @@ -136,12 +139,12 @@ if(range <= 0)//special case for if only source cares for(var/atom/movable/target as anything in center_turf) - var/list/recursive_contents = target.important_recursive_contents?[RECURSIVE_CONTENTS_HEARING_SENSITIVE] + var/list/recursive_contents = target.important_recursive_contents?[contents_type] if(recursive_contents) . += recursive_contents return . - var/list/hearables_from_grid = SSspatial_grid.orthogonal_range_search(source, RECURSIVE_CONTENTS_HEARING_SENSITIVE, range) + var/list/hearables_from_grid = SSspatial_grid.orthogonal_range_search(source, contents_type, range) if(!length(hearables_from_grid))//we know that something is returned by the grid, but we dont know if we need to actually filter down the output return . @@ -161,7 +164,7 @@ * * view_radius - what radius search circle we are using, worse performance as this increases but not as much as it used to * * source - object at the center of our search area. everything in get_turf(source) is guaranteed to be part of the search area */ -/proc/get_hearers_in_LOS(view_radius, atom/source) +/proc/get_hearers_in_LOS(view_radius, atom/source, contents_type=RECURSIVE_CONTENTS_HEARING_SENSITIVE) var/turf/center_turf = get_turf(source) if(!center_turf) return @@ -169,12 +172,12 @@ if(view_radius <= 0)//special case for if only source cares . = list() for(var/atom/movable/target as anything in center_turf) - var/list/hearing_contents = target.important_recursive_contents?[RECURSIVE_CONTENTS_HEARING_SENSITIVE] + var/list/hearing_contents = target.important_recursive_contents?[contents_type] if(hearing_contents) . += hearing_contents return - . = SSspatial_grid.orthogonal_range_search(source, SPATIAL_GRID_CONTENTS_TYPE_HEARING, view_radius) + . = SSspatial_grid.orthogonal_range_search(source, contents_type, view_radius) for(var/atom/movable/target as anything in .) var/turf/target_turf = get_turf(target) @@ -209,7 +212,7 @@ . = list() // Returns a list of mobs who can hear any of the radios given in @radios for(var/obj/item/radio/radio as anything in radios) - . |= get_hearers_in_LOS(radio.canhear_range, radio, FALSE) + . |= get_hearers_in_LOS(radio.canhear_range, radio) //Used when converting pixels to tiles to make them accurate #define OFFSET_X (0.5 / ICON_SIZE_X) diff --git a/code/__HELPERS/type_processing.dm b/code/__HELPERS/type_processing.dm index e005088c281..40f21f4b189 100644 --- a/code/__HELPERS/type_processing.dm +++ b/code/__HELPERS/type_processing.dm @@ -46,8 +46,8 @@ /obj/item/circuitboard/machine = "MACHINE_BOARD", /obj/item/circuitboard/computer = "COMPUTER_BOARD", /obj/item/reagent_containers = "REAGENT_CONTAINERS", - /obj/item/reagent_containers/pill = "PILL", - /obj/item/reagent_containers/pill/patch = "MEDPATCH", + /obj/item/reagent_containers/applicator/pill = "PILL", + /obj/item/reagent_containers/applicator/patch = "MEDPATCH", /obj/item/reagent_containers/hypospray/medipen = "MEDIPEN", /obj/item/reagent_containers/cup/glass = "DRINK", /obj/item/food = "FOOD", diff --git a/code/_experiments.dm b/code/_experiments.dm index c7fdad2f788..6d5e03b3c7b 100644 --- a/code/_experiments.dm +++ b/code/_experiments.dm @@ -18,5 +18,5 @@ #endif #if DM_VERSION >= 517 - #error "Remove all 516 experiments" + #error "Remove all 517 experiments" #endif diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 31fa3219444..b3d5d320dbb 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -16,6 +16,17 @@ GLOBAL_LIST_INIT(bitfields, generate_bitfields()) bitfields[bitfield.variable] = bitfield.flags return bitfields +/// Returns an associative list of bitflag name -> number for all valid bitflags in the passed in field +/proc/get_valid_bitflags(var_name) + return GLOB.bitfields[var_name] || list() + +/proc/get_random_bitflag(var_name) + var/list/flags = get_valid_bitflags(var_name) + if(!length(flags)) + return + var/name = pick(flags) + return flags[name] + DEFINE_BITFIELD(admin_flags, list( "ADMIN" = R_ADMIN, "AUTOLOGIN" = R_AUTOADMIN, diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 3b23019d471..ec0b251314d 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -58,7 +58,7 @@ GLOBAL_LIST_INIT(trash_loot, list(//junk: useless, very easy to get, or ghetto c /obj/item/rack_parts = 1, /obj/item/shard = 1, - /obj/item/reagent_containers/pill/maintenance/achievement = 1, + /obj/item/reagent_containers/applicator/pill/maintenance/achievement = 1, /obj/item/toy/eightball = 1, ) = 8, @@ -257,6 +257,10 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/food/monkeycube = 1, ) = 8, + list(//Donk Co. 'Donk Spike' flechette shells, these things show up everywhere in donkpocket boxes + /obj/item/storage/box/donkpockets/donkpocketshell = 1, + ) = 8, + list(//computer disks /obj/item/computer_disk/maintenance/scanner = 1, ///obj/item/computer_disk/maintenance/camera = 1, //SKYRAT EDIT REMOVAL - Available To Crew Now diff --git a/code/_globalvars/lists/reagents.dm b/code/_globalvars/lists/reagents.dm index 0c8e8dfa601..83cb0b353a7 100644 --- a/code/_globalvars/lists/reagents.dm +++ b/code/_globalvars/lists/reagents.dm @@ -30,10 +30,10 @@ GLOBAL_LIST_INIT(reagent_containers, list( /obj/item/reagent_containers/cup/tube ), CAT_PILLS = typecacheof(list( - /obj/item/reagent_containers/pill/style + /obj/item/reagent_containers/applicator/pill/style )), CAT_PATCHES = typecacheof(list( - /obj/item/reagent_containers/pill/patch/style + /obj/item/reagent_containers/applicator/patch/style )), // SKYRAT EDIT ADDITION START CAT_HYPOS = typecacheof(list( diff --git a/code/_globalvars/phobias.dm b/code/_globalvars/phobias.dm index 5871cf56198..da5fc67c6bb 100644 --- a/code/_globalvars/phobias.dm +++ b/code/_globalvars/phobias.dm @@ -351,7 +351,7 @@ GLOBAL_LIST_INIT(phobia_objs, list( /obj/item/autopsy_scanner, /obj/item/hemostat, /obj/item/reagent_containers/hypospray, - /obj/item/reagent_containers/pill/, + /obj/item/reagent_containers/applicator, /obj/item/reagent_containers/syringe, /obj/item/retractor, /obj/item/scalpel, diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 8375d8b1bcd..67aff5ca474 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -95,6 +95,9 @@ GLOBAL_LIST_INIT(traits_by_type, list( /area = list( "TRAIT_HAS_SHUTTLE_CONSTRUCTION_TURF" = TRAIT_HAS_SHUTTLE_CONSTRUCTION_TURF, ), + /area = list( + "TRAIT_HAS_SHUTTLE_CONSTRUCTION_TURF" = TRAIT_HAS_SHUTTLE_CONSTRUCTION_TURF, + ), /datum/controller/subsystem/economy = list( "TRAIT_MARKET_CRASHING" = TRAIT_MARKET_CRASHING, ), @@ -198,6 +201,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_CANNOT_CRYSTALIZE" = TRAIT_CANNOT_CRYSTALIZE, "TRAIT_CANNOT_OPEN_PRESENTS" = TRAIT_CANNOT_OPEN_PRESENTS, "TRAIT_CANT_RIDE" = TRAIT_CANT_RIDE, + "TRAIT_CAN_GET_AI_TRACKING_MESSAGE" = TRAIT_CAN_GET_AI_TRACKING_MESSAGE, "TRAIT_CAN_HOLD_ITEMS" = TRAIT_CAN_HOLD_ITEMS, "TRAIT_CAN_MOUNT_CYBORGS" = TRAIT_CAN_MOUNT_CYBORGS, "TRAIT_CAN_MOUNT_HUMANS" = TRAIT_CAN_MOUNT_HUMANS, @@ -225,7 +229,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DEAF" = TRAIT_DEAF, "TRAIT_DEATHCOMA" = TRAIT_DEATHCOMA, "TRAIT_DEFIB_BLACKLISTED" = TRAIT_DEFIB_BLACKLISTED, - "TRAIT_DEPRESSION" = TRAIT_DEPRESSION, "TRAIT_DETECTIVES_TASTE" = TRAIT_DETECTIVES_TASTE, "TRAIT_DETECT_STORM" = TRAIT_DETECT_STORM, "TRAIT_DIAGNOSTIC_HUD" = TRAIT_DIAGNOSTIC_HUD, @@ -263,6 +266,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_EXPANDED_FOV" = TRAIT_EXPANDED_FOV, "TRAIT_EXPERT_FISHER" = TRAIT_EXPERT_FISHER, "TRAIT_EXTROVERT" = TRAIT_EXTROVERT, + "TRAIT_FACE_COVERED" = TRAIT_FACE_COVERED, "TRAIT_FAKEDEATH" = TRAIT_FAKEDEATH, "TRAIT_FASTMED" = TRAIT_FASTMED, "TRAIT_FAST_CUFFING" = TRAIT_FAST_CUFFING, @@ -337,7 +341,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_IN_CALL" = TRAIT_IN_CALL, "TRAIT_IS_WET" = TRAIT_IS_WET, "TRAIT_IWASBATONED" = TRAIT_IWASBATONED, - "TRAIT_JOLLY" = TRAIT_JOLLY, "TRAIT_KISS_OF_DEATH" = TRAIT_KISS_OF_DEATH, "TRAIT_SYNDIE_KISS" = TRAIT_SYNDIE_KISS, "TRAIT_KNOCKEDOUT" = TRAIT_KNOCKEDOUT, @@ -367,6 +370,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FAKE_SOULLESS" = TRAIT_FAKE_SOULLESS, "TRAIT_MOB_BREEDER" = TRAIT_MOB_BREEDER, "TRAIT_MOB_CAN_DIG" = TRAIT_MOB_CAN_DIG, + "TRAIT_MOB_DIFFICULT_TO_MOUNT" = TRAIT_MOB_DIFFICULT_TO_MOUNT, + "TRAIT_MOB_EASY_TO_MOUNT" = TRAIT_MOB_EASY_TO_MOUNT, "TRAIT_MOB_EATER" = TRAIT_MOB_EATER, "TRAIT_MOB_ELEVATED" = TRAIT_MOB_ELEVATED, "TRAIT_MOB_HATCHED" = TRAIT_MOB_HATCHED, @@ -461,7 +466,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION" = TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION, "TRAIT_PRIMITIVE" = TRAIT_PRIMITIVE, //unable to use mechs. Given to Ash Walkers "TRAIT_PROFOUND_FISHER" = TRAIT_PROFOUND_FISHER, - "TRAIT_PROSOPAGNOSIA" = TRAIT_PROSOPAGNOSIA, "TRAIT_PULL_BLOCKED" = TRAIT_PULL_BLOCKED, "TRAIT_PUSHIMMUNE" = TRAIT_PUSHIMMUNE, "TRAIT_QUICKER_CARRY" = TRAIT_QUICKER_CARRY, @@ -637,6 +641,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NEEDS_TWO_HANDS" = TRAIT_NEEDS_TWO_HANDS, "TRAIT_NO_BARCODES" = TRAIT_NO_BARCODES, "TRAIT_NO_STORAGE_INSERT" = TRAIT_NO_STORAGE_INSERT, + "TRAIT_NO_SPEED_POTION" = TRAIT_NO_SPEED_POTION, "TRAIT_NO_TELEPORT" = TRAIT_NO_TELEPORT, "TRAIT_NO_SIDE_KICK" = TRAIT_NO_SIDE_KICK, "TRAIT_NODROP" = TRAIT_NODROP, diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 02c0bb4a1fc..739035e8fb4 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -79,7 +79,6 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_DEAF" = TRAIT_DEAF, "TRAIT_DEATHCOMA" = TRAIT_DEATHCOMA, "TRAIT_DEFIB_BLACKLISTED" = TRAIT_DEFIB_BLACKLISTED, - "TRAIT_DEPRESSION" = TRAIT_DEPRESSION, "TRAIT_DETECT_STORM" = TRAIT_DETECT_STORM, "TRAIT_DIAGNOSTIC_HUD" = TRAIT_DIAGNOSTIC_HUD, "TRAIT_BOT_PATH_HUD" = TRAIT_BOT_PATH_HUD, @@ -101,6 +100,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_EXPERT_FISHER" = TRAIT_EXPERT_FISHER, "TRAIT_EXTROVERT" = TRAIT_EXTROVERT, "TRAIT_EVIL" = TRAIT_EVIL, + "TRAIT_FACE_COVERED" = TRAIT_FACE_COVERED, "TRAIT_FAKEDEATH" = TRAIT_FAKEDEATH, "TRAIT_FASTMED" = TRAIT_FASTMED, "TRAIT_FAST_CUFFING" = TRAIT_FAST_CUFFING, @@ -152,7 +152,6 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_INTROVERT" = TRAIT_INTROVERT, "TRAIT_INVISIBLE_MAN" = TRAIT_INVISIBLE_MAN, "TRAIT_IWASBATONED" = TRAIT_IWASBATONED, - "TRAIT_JOLLY" = TRAIT_JOLLY, "TRAIT_KISS_OF_DEATH" = TRAIT_KISS_OF_DEATH, "TRAIT_KNOCKEDOUT" = TRAIT_KNOCKEDOUT, "TRAIT_KNOW_ENGI_WIRES" = TRAIT_KNOW_ENGI_WIRES, @@ -242,7 +241,6 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_PRESENT_VISION" = TRAIT_PRESENT_VISION, "TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION" = TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION, "TRAIT_PRIMITIVE" = TRAIT_PRIMITIVE, //unable to use mechs. Given to Ash Walkers - "TRAIT_PROSOPAGNOSIA" = TRAIT_PROSOPAGNOSIA, "TRAIT_PULL_BLOCKED" = TRAIT_PULL_BLOCKED, "TRAIT_PUSHIMMUNE" = TRAIT_PUSHIMMUNE, "TRAIT_QUICK_BUILD" = TRAIT_QUICK_BUILD, diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index e0f1472b6a8..2178554bf00 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -310,7 +310,10 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." if(!(living_owner.mobility_flags & MOBILITY_MOVE)) return FALSE - return living_owner.resist_fire() + return handle_stop_drop_roll(owner) + +/atom/movable/screen/alert/fire/proc/handle_stop_drop_roll(mob/living/roller) + return roller.resist_fire() /atom/movable/screen/alert/give // information set when the give alert is made icon_state = "default" diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index cba55702d08..9146b118ec2 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -437,7 +437,12 @@ GLOBAL_LIST_INIT(available_erp_ui_styles, list( // Handles alerts - the things on the right side of the screen reorganize_alerts(screenmob) screenmob.reload_fullscreen() - update_parallax_pref(screenmob) + + if(screenmob == mymob) + update_parallax_pref(screenmob) + else + viewmob.hud_used.update_parallax_pref() + update_reuse(screenmob) // ensure observers get an accurate and up-to-date view diff --git a/code/_onclick/hud/parallax/parallax.dm b/code/_onclick/hud/parallax/parallax.dm index ee266cd21e3..07555614507 100755 --- a/code/_onclick/hud/parallax/parallax.dm +++ b/code/_onclick/hud/parallax/parallax.dm @@ -37,6 +37,7 @@ if(screenmob != mymob) C.screen -= locate(/atom/movable/screen/plane_master/parallax_white) in C.screen C.screen += plane_master + // this color makes parallax not black plane_master.color = list( 0, 0, 0, 0, 0, 0, 0, 0, diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm index f2cf8f4b210..0af9bfe2f43 100644 --- a/code/_onclick/hud/picture_in_picture.dm +++ b/code/_onclick/hud/picture_in_picture.dm @@ -11,6 +11,8 @@ var/atom/movable/screen/component_button/button_x var/atom/movable/screen/component_button/button_expand var/atom/movable/screen/component_button/button_shrink + var/atom/movable/screen/component_button/button_pop + var/atom/movable/screen/map_view/popup_screen var/mutable_appearance/standard_background @@ -19,6 +21,8 @@ make_backgrounds() RegisterSignal(SSmapping, COMSIG_PLANE_OFFSET_INCREASE, PROC_REF(multiz_offset_increase)) multiz_offset_increase(SSmapping) + popup_screen = new + popup_screen.generate_view("camera-[REF(src)]_map") /atom/movable/screen/movable/pic_in_pic/proc/multiz_offset_increase(datum/source) SIGNAL_HANDLER @@ -30,15 +34,20 @@ QDEL_NULL(button_x) QDEL_NULL(button_shrink) QDEL_NULL(button_expand) + QDEL_NULL(button_pop) + QDEL_NULL(popup_screen) return ..() /atom/movable/screen/movable/pic_in_pic/component_click(atom/movable/screen/component_button/component, params) if(component == button_x) + usr.client?.close_popup("camera-[REF(src)]") qdel(src) else if(component == button_expand) set_view_size(width+1, height+1) else if(component == button_shrink) set_view_size(width-1, height-1) + else if(component == button_pop) + pop_to_screen() /atom/movable/screen/movable/pic_in_pic/proc/make_backgrounds() standard_background = new /mutable_appearance() @@ -99,6 +108,19 @@ button_shrink.transform = M vis_contents += button_shrink + if(!button_pop) + button_pop = new /atom/movable/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "pop" + MA.icon = 'icons/hud/pic_in_pic.dmi' + MA.icon_state = "pop" + MA.plane = HUD_PLANE + button_pop.appearance = MA + M = matrix() + M.Translate((max(4, width) - 0.75) * ICON_SIZE_X, (height + 0.25) * ICON_SIZE_Y + 16) + button_pop.transform = M + vis_contents += button_pop + /atom/movable/screen/movable/pic_in_pic/proc/add_background() if((width > 0) && (height > 0)) var/matrix/M = matrix() @@ -134,6 +156,9 @@ return viewing_turfs = get_visible_turfs() vis_contents += viewing_turfs + if (popup_screen) + popup_screen.vis_contents.Cut() + popup_screen.vis_contents += viewing_turfs /atom/movable/screen/movable/pic_in_pic/proc/get_visible_turfs() var/turf/T = get_turf(center) @@ -152,3 +177,17 @@ if(C) shown_to -= C C.screen -= src + +/atom/movable/screen/movable/pic_in_pic/proc/pop_to_screen() + if(usr.client.screen_maps["camera-[REF(src)]_map"]) + return + usr.client.setup_popup("camera-[REF(src)]", width, height, 2, "1984") + popup_screen.display_to(usr) + RegisterSignal(usr.client, COMSIG_POPUP_CLEARED, PROC_REF(on_popup_clear)) + +/atom/movable/screen/movable/pic_in_pic/proc/on_popup_clear(client/source, window) + SIGNAL_HANDLER + if (window == "camera-[REF(src)]") + UnregisterSignal(usr.client, COMSIG_POPUP_CLEARED) + popup_screen.hide_from(usr) + diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index 025127010d8..72c661f55b9 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -330,7 +330,10 @@ GLOBAL_LIST_EMPTY(radial_menus) return current_user = M.client //Blank - menu_holder = image(icon='icons/effects/effects.dmi',loc=anchor,icon_state="nothing", layer = RADIAL_BACKGROUND_LAYER, pixel_x = offset_x, pixel_y = offset_y) + menu_holder = image(icon='icons/effects/effects.dmi',loc=anchor,icon_state="nothing", layer = RADIAL_BACKGROUND_LAYER) + menu_holder.pixel_w = offset_x + menu_holder.pixel_z = offset_y + SET_PLANE_EXPLICIT(menu_holder, ABOVE_HUD_PLANE, M) menu_holder.appearance_flags |= KEEP_APART|RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM menu_holder.vis_contents += elements diff --git a/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm b/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm index 96a02afb574..a05cd47c146 100644 --- a/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm +++ b/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm @@ -248,6 +248,7 @@ documentation = "Holds the main tiling 32x32 sprites of weather. We mask against walls that are on the edge of weather effects." plane = WEATHER_PLANE start_hidden = TRUE + critical = PLANE_CRITICAL_DISPLAY /atom/movable/screen/plane_master/weather/set_home(datum/plane_master_group/home) . = ..() @@ -272,7 +273,7 @@ documentation = "Contains all lighting drawn to turfs. Not so complex, draws directly onto the lighting plate." plane = LIGHTING_PLANE appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR - render_relay_planes = list(RENDER_PLANE_LIGHTING) + render_relay_planes = list(TURF_LIGHTING_PLATE) blend_mode_override = BLEND_ADD mouse_opacity = MOUSE_OPACITY_TRANSPARENT critical = PLANE_CRITICAL_DISPLAY @@ -288,9 +289,21 @@ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR render_target = O_LIGHTING_VISUAL_RENDER_TARGET mouse_opacity = MOUSE_OPACITY_TRANSPARENT - blend_mode = BLEND_MULTIPLY + blend_mode = BLEND_ADD + render_relay_planes = list(RENDER_PLANE_LIGHTING) critical = PLANE_CRITICAL_DISPLAY +/atom/movable/screen/plane_master/o_light_visual/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset) + . = ..() + // I'd love for this to be HSL but filters don't work with blend modes + add_relay_to(GET_NEW_PLANE(TURF_LIGHTING_PLATE, offset), BLEND_MULTIPLY, relay_color = list( + -1, -1, -1, 0, + -1, -1, -1, 0, + -1, -1, -1, 0, + 0, 0, 0, OVERLAY_LIGHTING_WEIGHT, + 1, 1, 1, 0, + )) + /atom/movable/screen/plane_master/above_lighting name = "Above lighting" plane = ABOVE_LIGHTING_PLANE @@ -302,6 +315,7 @@ documentation = "Holds the glowing parts of the main tiling 32x32 sprites of weather." plane = WEATHER_GLOW_PLANE start_hidden = TRUE + critical = PLANE_CRITICAL_DISPLAY /atom/movable/screen/plane_master/weather_glow/set_home(datum/plane_master_group/home) . = ..() diff --git a/code/_onclick/hud/rendering/render_plate.dm b/code/_onclick/hud/rendering/render_plate.dm index 66339c837d0..8dad1ca87cd 100644 --- a/code/_onclick/hud/rendering/render_plate.dm +++ b/code/_onclick/hud/rendering/render_plate.dm @@ -235,7 +235,6 @@ /atom/movable/screen/plane_master/rendering_plate/lighting/Initialize(mapload, datum/hud/hud_owner) . = ..() add_filter("emissives", 1, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(EMISSIVE_RENDER_TARGET, offset), flags = MASK_INVERSE)) - add_filter("object_lighting", 2, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(O_LIGHTING_VISUAL_RENDER_TARGET, offset), flags = MASK_INVERSE)) set_light_cutoff(10) /atom/movable/screen/plane_master/rendering_plate/lighting/show_to(mob/mymob) @@ -263,7 +262,6 @@ offset_change(hud?.current_plane_offset || 0) set_light_cutoff(mymob.lighting_cutoff, mymob.lighting_color_cutoffs) - /atom/movable/screen/plane_master/rendering_plate/lighting/hide_from(mob/oldmob) . = ..() oldmob.clear_fullscreen("lighting_backdrop_lit_[home.key]#[offset]") @@ -350,8 +348,6 @@ /atom/movable/screen/plane_master/rendering_plate/light_mask/hide_from(mob/oldmob) . = ..() - var/atom/movable/screen/plane_master/overlay_lights = home.get_plane(GET_NEW_PLANE(O_LIGHTING_VISUAL_PLANE, offset)) - overlay_lights.remove_filter("lighting_mask") var/atom/movable/screen/plane_master/emissive = home.get_plane(GET_NEW_PLANE(EMISSIVE_RENDER_PLATE, offset)) emissive.remove_filter("lighting_mask") remove_relay_from(GET_NEW_PLANE(RENDER_PLANE_GAME, offset)) @@ -360,15 +356,12 @@ /atom/movable/screen/plane_master/rendering_plate/light_mask/proc/handle_sight(datum/source, new_sight, old_sight) // If we can see something that shows "through" blackness, and we can't see turfs, disable our draw to the game plane // And instead mask JUST the overlay lighting plane, since that will look fuckin wrong - var/atom/movable/screen/plane_master/overlay_lights = home.get_plane(GET_NEW_PLANE(O_LIGHTING_VISUAL_PLANE, offset)) var/atom/movable/screen/plane_master/emissive = home.get_plane(GET_NEW_PLANE(EMISSIVE_RENDER_PLATE, offset)) if(new_sight & SEE_AVOID_TURF_BLACKNESS && !(new_sight & SEE_TURFS)) remove_relay_from(GET_NEW_PLANE(RENDER_PLANE_GAME, offset)) - overlay_lights.add_filter("lighting_mask", 1, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(LIGHT_MASK_RENDER_TARGET, offset))) emissive.add_filter("lighting_mask", 1, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(LIGHT_MASK_RENDER_TARGET, offset))) // If we CAN'T see through the black, then draw er down brother! else - overlay_lights.remove_filter("lighting_mask") emissive.remove_filter("lighting_mask") // We max alpha here, so our darkness is actually.. dark // Can't do it before cause it fucks with the filter @@ -381,6 +374,14 @@ plane = RENDER_PLANE_NON_GAME render_relay_planes = list(RENDER_PLANE_MASTER) +/atom/movable/screen/plane_master/rendering_plate/turf_lighting + name = "Turf lighting post-processing plate" + documentation = "Used by overlay lighting, and possibly over plates, to mask out turf lighting." + plane = TURF_LIGHTING_PLATE + render_relay_planes = list(RENDER_PLANE_LIGHTING) + blend_mode = BLEND_ADD + critical = PLANE_CRITICAL_DISPLAY + /** * Plane master proc called in Initialize() that creates relay objects, and sets them up as needed * Sets: diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 351a3155e86..22ae5f45d99 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -916,7 +916,7 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/splash) for(var/i = 1; i <= length(streak); ++i) var/intent_text = copytext(streak, i, i + 1) var/image/intent_icon = image(icon,src,"combo_[intent_text]") - intent_icon.pixel_x = 16 * (i - 1) - 8 * length(streak) + intent_icon.pixel_w = 16 * (i - 1) - 8 * length(streak) add_overlay(intent_icon) return ..() diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index ae2ebd97632..617a395ee4a 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -15,6 +15,9 @@ return var/list/modifiers = params2list(params) + if(SEND_SIGNAL(src, COMSIG_MOB_CLICKON, A, modifiers) & COMSIG_MOB_CANCEL_CLICKON) + return + if(LAZYACCESS(modifiers, SHIFT_CLICK)) if(LAZYACCESS(modifiers, MIDDLE_CLICK)) ShiftMiddleClickOn(A) diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index cd69a37a790..6a43e92ae88 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -24,6 +24,9 @@ /// If the configuration is loaded var/loaded = FALSE + /// If a reload is in progress + var/reload_in_progress = FALSE + /// A regex that matches words blocked IC var/static/regex/ic_filter_regex @@ -64,13 +67,24 @@ var/static/list/configuration_errors /datum/controller/configuration/proc/admin_reload() - if(IsAdminAdvancedProcCall()) + if(IsAdminAdvancedProcCall() || !PreConfigReload()) return + log_admin("[key_name_admin(usr)] has forcefully reloaded the configuration from disk.") message_admins("[key_name_admin(usr)] has forcefully reloaded the configuration from disk.") full_wipe() Load(world.params[OVERRIDE_CONFIG_DIRECTORY_PARAMETER]) +/datum/controller/configuration/proc/PreConfigReload() + if(reload_in_progress) + to_chat(usr, span_warning("Another user is already reloading the config!")) + return FALSE + + reload_in_progress = TRUE + world.TgsTriggerEvent("tg-PreConfigReload", wait_for_completion = TRUE) + reload_in_progress = FALSE + return TRUE + /datum/controller/configuration/proc/Load(_directory) if(IsAdminAdvancedProcCall()) //If admin proccall is detected down the line it will horribly break everything. return diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 0a9cd40bddd..a150d2b4729 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -457,6 +457,11 @@ /datum/config_entry/str_list/tts_voice_blacklist +/// Maximum timeout for http calls +/datum/config_entry/number/tts_http_timeout_seconds + default = 30 + min_val = 0 + /datum/config_entry/flag/give_tutorials_without_db /datum/config_entry/string/new_player_alert_role_id diff --git a/code/controllers/subsystem/ambience.dm b/code/controllers/subsystem/ambience.dm index b8d2f56cfc8..a5a1d277f93 100644 --- a/code/controllers/subsystem/ambience.dm +++ b/code/controllers/subsystem/ambience.dm @@ -117,7 +117,7 @@ SUBSYSTEM_DEF(ambience) var/volume_modifier = client.prefs.read_preference(/datum/preference/numeric/volume/sound_ship_ambience_volume) if(!sound_to_use || !(client.prefs.read_preference(/datum/preference/numeric/volume/sound_ship_ambience_volume))) - SEND_SOUND(src, sound(null, repeat = 0, volume = volume_modifier, wait = 0, channel = CHANNEL_BUZZ)) + SEND_SOUND(src, sound(null, repeat = 0, wait = 0, channel = CHANNEL_BUZZ)) client.current_ambient_sound = null return @@ -136,4 +136,4 @@ SUBSYSTEM_DEF(ambience) return client.current_ambient_sound = sound_to_use - SEND_SOUND(src, sound(my_area.ambient_buzz, repeat = 1, wait = 0, volume = my_area.ambient_buzz_vol, channel = CHANNEL_BUZZ)) + SEND_SOUND(src, sound(my_area.ambient_buzz, repeat = 1, wait = 0, volume = my_area.ambient_buzz_vol * (volume_modifier / 100), channel = CHANNEL_BUZZ)) diff --git a/code/controllers/subsystem/bitrunning.dm b/code/controllers/subsystem/bitrunning.dm index 63c2561f0f4..5e6a1c6bd34 100644 --- a/code/controllers/subsystem/bitrunning.dm +++ b/code/controllers/subsystem/bitrunning.dm @@ -31,7 +31,7 @@ SUBSYSTEM_DEF(bitrunning) "difficulty" = domain.difficulty, "id" = domain.key, "is_modular" = domain.is_modular, - "has_secondary_objectives" = assoc_value_sum(domain.secondary_loot) ? TRUE : FALSE, + "has_secondary_objectives" = counterlist_sum(domain.secondary_loot) ? TRUE : FALSE, "name" = can_view ? domain.name : REDACTED, "reward" = can_view_reward ? domain.reward_points : REDACTED, )) @@ -42,7 +42,7 @@ SUBSYSTEM_DEF(bitrunning) var/datum/lazy_template/virtual_domain/domain = completed_domain var/choice - if(assoc_value_sum(domain.secondary_loot)) + if(counterlist_sum(domain.secondary_loot)) choice = pick_weight(domain.secondary_loot) domain.secondary_loot[choice] -= 1 else diff --git a/code/controllers/subsystem/dynamic/dynamic_rulesets_latejoin.dm b/code/controllers/subsystem/dynamic/dynamic_rulesets_latejoin.dm index b71a1c1e85d..a5f1ded382a 100644 --- a/code/controllers/subsystem/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/controllers/subsystem/dynamic/dynamic_rulesets_latejoin.dm @@ -208,8 +208,8 @@ JOB_CYBORG, ) required_candidates = 1 - weight = 8 - cost = 6 + weight = 4 + cost = 12 requirements = list(101,101,50,10,10,10,10,10,10,10) repeatable = TRUE diff --git a/code/controllers/subsystem/dynamic/dynamic_rulesets_roundstart.dm b/code/controllers/subsystem/dynamic/dynamic_rulesets_roundstart.dm index 1e540333573..324ae14f3a1 100644 --- a/code/controllers/subsystem/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/controllers/subsystem/dynamic/dynamic_rulesets_roundstart.dm @@ -212,7 +212,7 @@ GLOBAL_VAR_INIT(revolutionary_win, FALSE) ) required_candidates = 1 weight = 3 - cost = 10 + cost = 16 scaling_cost = 9 requirements = list(101,101,60,30,30,25,20,15,10,10) antag_cap = list("denominator" = 24) diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index b9c8a08ca75..f6b1bc3f860 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -346,6 +346,12 @@ SUBSYSTEM_DEF(garbage) /// Datums passed to this will be given a chance to clean up references to allow the GC to collect them. /proc/qdel(datum/to_delete, force = FALSE) if(!istype(to_delete)) + if(isnull(to_delete)) + return + else if(islist(to_delete)) + stack_trace("Lists should not be directly passed to qdel! You likely want either list.Cut(), QDEL_LIST(list), QDEL_LIST_ASSOC(list), or QDEL_LIST_ASSOC_VAL(list)") + else if(to_delete != world) + stack_trace("Tried to qdel possibly invalid value: [to_delete]") #ifndef DISABLE_DREAMLUAU DREAMLUAU_CLEAR_REF_USERDATA(to_delete) #endif diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm index fb5d390c61a..1faa2e102ad 100644 --- a/code/controllers/subsystem/mobs.dm +++ b/code/controllers/subsystem/mobs.dm @@ -35,11 +35,11 @@ SUBSYSTEM_DEF(mobs) var/times_fired = src.times_fired var/seconds_per_tick = wait / (1 SECONDS) while(currentrun.len) - var/mob/living/L = currentrun[currentrun.len] + var/mob/living/processing_mob = currentrun[currentrun.len] currentrun.len-- - if(L) - L.Life(seconds_per_tick, times_fired) + if(processing_mob) + processing_mob.Life(seconds_per_tick, times_fired) else - GLOB.mob_living_list.Remove(L) + GLOB.mob_living_list.Remove(processing_mob) if (MC_TICK_CHECK) return diff --git a/code/controllers/subsystem/processing/fishing.dm b/code/controllers/subsystem/processing/fishing.dm index 01474a2b1f2..abd31293ac0 100644 --- a/code/controllers/subsystem/processing/fishing.dm +++ b/code/controllers/subsystem/processing/fishing.dm @@ -13,6 +13,8 @@ PROCESSING_SUBSYSTEM_DEF(fishing) var/list/fish_properties ///A cache of fish that can be caught by each type of fishing lure var/list/lure_catchables + ///A list of fish types with list of turfs where they can happily hop around without dying as assoc value + var/list/fish_safe_turfs_by_type = list() /datum/controller/subsystem/processing/fishing/Initialize() ..() @@ -102,4 +104,19 @@ PROCESSING_SUBSYSTEM_DEF(fishing) QDEL_LIST(spawned_fish) + //Populate the list of safe turfs for several fishes + for(var/source_path in GLOB.preset_fish_sources) + var/datum/fish_source/source = GLOB.preset_fish_sources[source_path] + if(!length(source.associated_safe_turfs)) + continue + for(var/fish_path in source.fish_table) + if(!istype(fish_path, /obj/item/fish)) + continue + LAZYOR(fish_safe_turfs_by_type[fish_path], source.associated_safe_turfs) + //If a subtype doesn't have set safe turfs, it'll inherit them from the parent type. + for(var/fish_type as anything in fish_safe_turfs_by_type) + for(var/fish_subtype in subtypesof(fish_type)) + if(!length(fish_safe_turfs_by_type[fish_subtype])) + fish_safe_turfs_by_type[fish_subtype] = fish_safe_turfs_by_type[fish_type] + return SS_INIT_SUCCESS diff --git a/code/controllers/subsystem/processing/greyscale.dm b/code/controllers/subsystem/processing/greyscale.dm index 294cce8cc91..af2ad81ce0b 100644 --- a/code/controllers/subsystem/processing/greyscale.dm +++ b/code/controllers/subsystem/processing/greyscale.dm @@ -1,3 +1,9 @@ +/// Disable to use builtin DM-based generation. +/// IconForge is 250x times faster but requires storing the icons in tmp/ and may result in higher asset transport. +/// Note that the builtin GAGS editor still uses the 'legacy' generation to allow for debugging. +/// IconForge also does not support the color matrix layer type or the 'or' blend_mode, however both are currently unused. +#define USE_RUSTG_ICONFORGE_GAGS + PROCESSING_SUBSYSTEM_DEF(greyscale) name = "Greyscale" flags = SS_BACKGROUND @@ -6,6 +12,10 @@ PROCESSING_SUBSYSTEM_DEF(greyscale) var/list/datum/greyscale_config/configurations = list() var/list/datum/greyscale_layer/layer_types = list() +#ifdef USE_RUSTG_ICONFORGE_GAGS + /// Cache containing a list of [UID (config path + colors)] -> [DMI file / RSC object] in the tmp directory from iconforge + var/list/gags_cache = list() +#endif /datum/controller/subsystem/processing/greyscale/Initialize() for(var/datum/greyscale_layer/fake_type as anything in subtypesof(/datum/greyscale_layer)) @@ -21,14 +31,35 @@ PROCESSING_SUBSYSTEM_DEF(greyscale) var/datum/greyscale_config/config = configurations[greyscale_type] config.Refresh() +#ifdef USE_RUSTG_ICONFORGE_GAGS + var/list/job_ids = list() +#endif + // This final verification step is for things that need other greyscale configurations to be finished loading for(var/greyscale_type as anything in configurations) CHECK_TICK var/datum/greyscale_config/config = configurations[greyscale_type] config.CrossVerify() +#ifdef USE_RUSTG_ICONFORGE_GAGS + job_ids += rustg_iconforge_load_gags_config_async(greyscale_type, config.raw_json_string, config.string_icon_file) + + UNTIL(jobs_completed(job_ids)) +#endif return SS_INIT_SUCCESS +#ifdef USE_RUSTG_ICONFORGE_GAGS +/datum/controller/subsystem/processing/greyscale/proc/jobs_completed(list/job_ids) + for(var/job in job_ids) + var/result = rustg_iconforge_check(job) + if(result == RUSTG_JOB_NO_RESULTS_YET) + return FALSE + if(result != "OK") + stack_trace("Error during rustg_iconforge_load_gags_config job: [result]") + job_ids -= job + return TRUE +#endif + /datum/controller/subsystem/processing/greyscale/proc/RefreshConfigsFromFile() for(var/i in configurations) configurations[i].Refresh(TRUE) @@ -36,12 +67,40 @@ PROCESSING_SUBSYSTEM_DEF(greyscale) /datum/controller/subsystem/processing/greyscale/proc/GetColoredIconByType(type, list/colors) if(!ispath(type, /datum/greyscale_config)) CRASH("An invalid greyscale configuration was given to `GetColoredIconByType()`: [type]") + if(!initialized) + CRASH("GetColoredIconByType() called before greyscale subsystem initialized!") type = "[type]" if(istype(colors)) // It's the color list format colors = colors.Join() else if(!istext(colors)) CRASH("Invalid colors were given to `GetColoredIconByType()`: [colors]") +#ifdef USE_RUSTG_ICONFORGE_GAGS + var/uid = "[replacetext(replacetext(type, "/datum/greyscale_config/", ""), "/", "-")]-[colors]" + var/cached_file = gags_cache[uid] + if(cached_file) + return cached_file + var/output_path = "tmp/gags/gags-[uid].dmi" + var/iconforge_output = rustg_iconforge_gags(type, colors, output_path) + // Handle errors from IconForge + if(iconforge_output != "OK") + CRASH(iconforge_output) + // We'll just explicitly do fcopy_rsc here, so the game doesn't have to do it again later from the cached file. + var/rsc_gags_icon = fcopy_rsc(file(output_path)) + gags_cache[uid] = rsc_gags_icon + return rsc_gags_icon +#else return configurations[type].Generate(colors) +#endif + +/datum/controller/subsystem/processing/greyscale/proc/GetColoredIconByTypeUniversalIcon(type, list/colors, target_icon_state) + if(!ispath(type, /datum/greyscale_config)) + CRASH("An invalid greyscale configuration was given to `GetColoredIconByTypeUniversalIcon()`: [type]") + type = "[type]" + if(istype(colors)) // It's the color list format + colors = colors.Join() + else if(!istext(colors)) + CRASH("Invalid colors were given to `GetColoredIconByTypeUniversalIcon()`: [colors]") + return configurations[type].GenerateUniversalIcon(colors, target_icon_state) /datum/controller/subsystem/processing/greyscale/proc/GetColoredIconByTypeUniversalIcon(type, list/colors, target_icon_state) if(!ispath(type, /datum/greyscale_config)) @@ -58,3 +117,5 @@ PROCESSING_SUBSYSTEM_DEF(greyscale) var/list/split_colors = splittext(color_string, "#") for(var/color in 2 to length(split_colors)) . += "#[split_colors[color]]" + +#undef USE_RUSTG_ICONFORGE_GAGS diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm index 8539c660e3c..a9736751c47 100644 --- a/code/controllers/subsystem/statpanel.dm +++ b/code/controllers/subsystem/statpanel.dm @@ -126,15 +126,10 @@ SUBSYSTEM_DEF(statpanels) return /datum/controller/subsystem/statpanels/proc/set_status_tab(client/target) -#if MIN_COMPILER_VERSION > 515 - #warn 516 is most certainly out of beta, remove this beta notice if you haven't already -#endif - //var/static/list/beta_notice = list("", "You are on BYOND 516, some visual glitches with UIs may be present!", "Please report issues, and switch back to BYOND 515 if things are causing too many issues for you.") - var/static/list/old_version_notice = list("", "This server is designed for version 516, you are using an older version 515!", "You may experience issues and crashes, switch to BYOND 516 if things are causing too many issues for you.") // BUBBER EDIT CHANGE - Change version notice to 515 if(!global_data)//statbrowser hasnt fired yet and we were called from immediate_send_stat_data() return target.stat_panel.send_message("update_stat", list( - "global_data" = (target.byond_version < 516) ? (global_data + old_version_notice) : global_data, // BUBBER EDIT CHANGE - Change version notice to 515 + "global_data" = global_data, "ping_str" = "Ping: [round(target.lastping, 1)]ms (Average: [round(target.avgping, 1)]ms)", "other_str" = target.mob?.get_status_tab_items(), )) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 99f5c02342b..feefd6cfff1 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -459,6 +459,8 @@ SUBSYSTEM_DEF(ticker) if(new_player_mob.client?.prefs?.should_be_random_hardcore(player_assigned_role, new_player_living.mind)) new_player_mob.client.prefs.hardcore_random_setup(new_player_living) SSquirks.AssignQuirks(new_player_living, new_player_mob.client) + if(ishuman(new_player_living)) + SEND_SIGNAL(new_player_living, COMSIG_HUMAN_CHARACTER_SETUP_FINISHED) CHECK_TICK if(captainless) diff --git a/code/controllers/subsystem/tts.dm b/code/controllers/subsystem/tts.dm index c50974f9299..f835841e3f2 100644 --- a/code/controllers/subsystem/tts.dm +++ b/code/controllers/subsystem/tts.dm @@ -58,7 +58,7 @@ SUBSYSTEM_DEF(tts) var/datum/http_request/request = new() var/list/headers = list() headers["Authorization"] = CONFIG_GET(string/tts_http_token) - request.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-voices", "", headers) + request.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-voices", "", headers, timeout_seconds = CONFIG_GET(number/tts_http_timeout_seconds)) request.begin_async() UNTIL(request.is_complete()) var/datum/http_response/response = request.into_response() @@ -77,7 +77,7 @@ SUBSYSTEM_DEF(tts) var/datum/http_request/request_pitch = new() var/list/headers_pitch = list() headers_pitch["Authorization"] = CONFIG_GET(string/tts_http_token) - request_pitch.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/pitch-available", "", headers_pitch) + request_pitch.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/pitch-available", "", headers_pitch, timeout_seconds = CONFIG_GET(number/tts_http_timeout_seconds)) request_pitch.begin_async() UNTIL(request_pitch.is_complete()) pitch_enabled = TRUE @@ -293,8 +293,8 @@ SUBSYSTEM_DEF(tts) var/datum/http_request/request_blips = new() var/file_name = "tmp/tts/[identifier].ogg" var/file_name_blips = "tmp/tts/[identifier]_blips.ogg" - request.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts?voice=[speaker]&identifier=[identifier]&filter=[url_encode(filter)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name) - request_blips.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-blips?voice=[speaker]&identifier=[identifier]&filter=[url_encode(filter)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name_blips) + request.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts?voice=[speaker]&identifier=[identifier]&filter=[url_encode(filter)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name, timeout_seconds = CONFIG_GET(number/tts_http_timeout_seconds)) + request_blips.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-blips?voice=[speaker]&identifier=[identifier]&filter=[url_encode(filter)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name_blips, timeout_seconds = CONFIG_GET(number/tts_http_timeout_seconds)) var/datum/tts_request/current_request = new /datum/tts_request(identifier, request, request_blips, shell_scrubbed_input, target, local, language, message_range, volume_offset, listeners, pitch) var/list/player_queued_tts_messages = queued_tts_messages[target] if(!player_queued_tts_messages) diff --git a/code/datums/ai/_ai_controller.dm b/code/datums/ai/_ai_controller.dm index 4823c68a821..c9b1bdde543 100644 --- a/code/datums/ai/_ai_controller.dm +++ b/code/datums/ai/_ai_controller.dm @@ -203,7 +203,7 @@ multiple modular subtrees with behaviors if(!can_idle || isnull(our_cells)) return FALSE for(var/datum/spatial_grid_cell/grid as anything in our_cells.member_cells) - if(length(grid.client_contents)) + if(locate(/mob/living) in grid.client_contents) return FALSE return TRUE @@ -225,9 +225,12 @@ multiple modular subtrees with behaviors if(should_idle()) set_ai_status(AI_STATUS_IDLE) -/datum/ai_controller/proc/on_client_enter(datum/source, atom/target) +/datum/ai_controller/proc/on_client_enter(datum/source, list/target_list) SIGNAL_HANDLER + if (!(locate(/mob/living) in target_list)) + return + if(ai_status == AI_STATUS_IDLE) set_ai_status(AI_STATUS_ON) diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm index 2af37fa13a8..d50de8ed943 100644 --- a/code/datums/brain_damage/mild.dm +++ b/code/datums/brain_damage/mild.dm @@ -11,17 +11,19 @@ scan_desc = "schizophrenia" gain_text = span_warning("You feel your grip on reality slipping...") lose_text = span_notice("You feel more grounded.") + /// Whether the hallucinations we give are uncapped, ie all the wacky ones + var/uncapped = FALSE /datum/brain_trauma/mild/hallucinations/on_life(seconds_per_tick, times_fired) - if(owner.stat != CONSCIOUS || owner.IsSleeping() || owner.IsUnconscious()) + if(owner.stat >= UNCONSCIOUS) return if(HAS_TRAIT(owner, TRAIT_RDS_SUPPRESSED)) owner.remove_language(/datum/language/aphasia, source = LANGUAGE_APHASIA) + owner.adjust_hallucinations(-10 SECONDS * seconds_per_tick) return - if(!HAS_TRAIT(owner, TRAIT_RDS_SUPPRESSED)) - owner.grant_language(/datum/language/aphasia, source = LANGUAGE_APHASIA) - owner.adjust_hallucinations_up_to(10 SECONDS * seconds_per_tick, 100 SECONDS) + owner.grant_language(/datum/language/aphasia, source = LANGUAGE_APHASIA) + owner.adjust_hallucinations_up_to(((uncapped ? 12 SECONDS : 5 SECONDS) * seconds_per_tick), (uncapped ? 240 SECONDS : 60 SECONDS)) /datum/brain_trauma/mild/hallucinations/on_lose() owner.remove_status_effect(/datum/status_effect/hallucination) @@ -280,11 +282,11 @@ lose_text = span_notice("The world feels bright and colorful again.") /datum/brain_trauma/mild/color_blindness/on_gain() - owner.add_client_colour(/datum/client_colour/monochrome/colorblind) + owner.add_client_colour(/datum/client_colour/monochrome, TRAUMA_TRAIT) return ..() /datum/brain_trauma/mild/color_blindness/on_lose(silent) - owner.remove_client_colour(/datum/client_colour/monochrome/colorblind) + owner.remove_client_colour(TRAUMA_TRAIT) return ..() /datum/brain_trauma/mild/possessive diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm index 132bf835396..4703750cd01 100644 --- a/code/datums/brain_damage/phobia.dm +++ b/code/datums/brain_damage/phobia.dm @@ -58,40 +58,50 @@ if(is_scary_item(seen_item)) freak_out(seen_item) return - for(var/mob/living/carbon/human/nearby_guy in seen_atoms) //check equipment for trigger items - for(var/obj/item/equipped as anything in nearby_guy.get_visible_items()) - if(is_scary_item(equipped)) - freak_out(equipped) - return if(LAZYLEN(trigger_turfs)) - for(var/turf/T in seen_atoms) - if(is_type_in_typecache(T, trigger_turfs)) - freak_out(T) + for(var/turf/checked in seen_atoms) + if(is_type_in_typecache(checked, trigger_turfs)) + freak_out(checked) return seen_atoms -= owner //make sure they aren't afraid of themselves. - if(LAZYLEN(trigger_mobs) || LAZYLEN(trigger_species)) - for(var/mob/M in seen_atoms) - if(is_type_in_typecache(M, trigger_mobs)) - freak_out(M) + if(LAZYLEN(trigger_mobs) || LAZYLEN(trigger_species) || LAZYLEN(trigger_objs)) + for(var/mob/living/checked in seen_atoms) + if (is_scary_mob(checked)) + freak_out(checked) return - else if(ishuman(M)) //check their species - var/mob/living/carbon/human/H = M - if(LAZYLEN(trigger_species) && H.dna && H.dna.species && is_type_in_typecache(H.dna.species, trigger_species)) - freak_out(H) - return - /// Returns true if this item should be scary to us /datum/brain_trauma/mild/phobia/proc/is_scary_item(obj/checked) - if (QDELETED(checked) || !is_type_in_typecache(checked, trigger_objs)) + if (QDELETED(checked) || !is_type_in_typecache(checked, trigger_objs) || checked.invisibility > owner.see_invisible) return FALSE if (!isitem(checked)) return TRUE var/obj/item/checked_item = checked return !HAS_TRAIT(checked_item, TRAIT_EXAMINE_SKIP) +/datum/brain_trauma/mild/phobia/proc/is_scary_mob(mob/living/checked) + if(is_type_in_typecache(checked, trigger_mobs)) + return TRUE + + if (!ishuman(checked)) + return FALSE + + var/mob/living/carbon/human/as_human = checked + if (LAZYLEN(trigger_species)) + if (is_type_in_typecache(as_human.dna?.species, trigger_species)) + return TRUE + + if (!LAZYLEN(trigger_objs)) + return FALSE + + for(var/obj/item/equipped as anything in as_human.get_visible_items()) + if(is_scary_item(equipped)) + return TRUE + + return FALSE + /datum/brain_trauma/mild/phobia/handle_hearing(datum/source, list/hearing_args) if(!owner.can_hear() || owner == hearing_args[HEARING_SPEAKER] || !owner.has_language(hearing_args[HEARING_LANGUAGE])) //words can't trigger you if you can't hear them *taps head* return diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index f102a65fcda..27ce83c9317 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -160,83 +160,17 @@ name = "Monophobia" desc = "Patient feels sick and distressed when not around other people, leading to potentially lethal levels of stress." scan_desc = "monophobia" - gain_text = "" + gain_text = span_warning("You feel really lonely...") lose_text = span_notice("You feel like you could be safe on your own.") var/stress = 0 /datum/brain_trauma/severe/monophobia/on_gain() - ..() - if(check_alone()) - to_chat(owner, span_warning("You feel really lonely...")) - else - to_chat(owner, span_notice("You feel safe, as long as you have people around you.")) + . = ..() + owner.AddComponentFrom(REF(src), /datum/component/fearful, list(/datum/terror_handler/vomiting, /datum/terror_handler/simple_source/monophobia)) -/datum/brain_trauma/severe/monophobia/on_life(seconds_per_tick, times_fired) - ..() - if(check_alone()) - stress = min(stress + 0.5, 100) - if(stress > 10 && SPT_PROB(2.5, seconds_per_tick)) - stress_reaction() - else - stress = max(stress - (2 * seconds_per_tick), 0) - -/datum/brain_trauma/severe/monophobia/proc/check_alone() - var/check_radius = 7 - if(owner.is_blind()) - check_radius = 1 - for(var/mob/M in oview(owner, check_radius)) - if(!isliving(M)) //ghosts ain't people - continue - if(istype(M, /mob/living/basic/pet) || M.ckey) - return FALSE - return TRUE - -/datum/brain_trauma/severe/monophobia/proc/stress_reaction() - if(owner.stat != CONSCIOUS) - return - - var/high_stress = (stress > 60) //things get psychosomatic from here on - switch(rand(1, 6)) - if(1) - if(high_stress) - to_chat(owner, span_warning("You feel really sick at the thought of being alone!")) - else - to_chat(owner, span_warning("You feel sick...")) - addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob/living/carbon, vomit), high_stress), 5 SECONDS) //blood vomit if high stress - if(2) - if(high_stress) - to_chat(owner, span_warning("You feel weak and scared! If only you weren't alone...")) - owner.adjustStaminaLoss(50) - else - to_chat(owner, span_warning("You can't stop shaking...")) - - owner.adjust_dizzy(40 SECONDS) - owner.adjust_confusion(20 SECONDS) - owner.set_jitter_if_lower(40 SECONDS) - - if(3, 4) - if(high_stress) - to_chat(owner, span_warning("You're going mad with loneliness!")) - owner.adjust_hallucinations(60 SECONDS) - else - to_chat(owner, span_warning("You feel really lonely...")) - - if(5) - if(high_stress) - if(prob(15) && ishuman(owner)) - var/mob/living/carbon/human/H = owner - H.set_heartattack(TRUE) - to_chat(H, span_userdanger("You feel a stabbing pain in your heart!")) - else - to_chat(owner, span_userdanger("You feel your heart lurching in your chest...")) - owner.adjustOxyLoss(8) - else - to_chat(owner, span_warning("Your heart skips a beat.")) - owner.adjustOxyLoss(8) - - else - //No effect - return +/datum/brain_trauma/severe/monophobia/on_lose(silent) + . = ..() + owner.RemoveComponentSource(REF(src), /datum/component/fearful) /datum/brain_trauma/severe/discoordination name = "Discoordination" diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm index 486af4b2780..5c8a2fb2c56 100644 --- a/code/datums/brain_damage/special.dm +++ b/code/datums/brain_damage/special.dm @@ -241,19 +241,17 @@ scan_desc = "violent psychosis" gain_text = span_warning("You feel unhinged...") lose_text = span_notice("You feel more balanced.") + /// The martial art we teach var/datum/martial_art/psychotic_brawling/psychotic_brawling /datum/brain_trauma/special/psychotic_brawling/on_gain() - ..() - psychotic_brawling = new() - psychotic_brawling.allow_temp_override = FALSE - if(!psychotic_brawling.teach(owner, TRUE)) - to_chat(owner, span_notice("But your martial knowledge keeps you grounded.")) - qdel(src) + . = ..() + psychotic_brawling = new(src) + psychotic_brawling.locked_to_use = TRUE + psychotic_brawling.teach(owner) /datum/brain_trauma/special/psychotic_brawling/on_lose() - ..() - psychotic_brawling.fully_remove(owner) + . = ..() QDEL_NULL(psychotic_brawling) /datum/brain_trauma/special/psychotic_brawling/bath_salts @@ -587,18 +585,18 @@ to_chat(owner, span_warning("You start having a bad feeling...")) owner.add_mood_event("fireaxe", /datum/mood_event/axe_missing) return - + if(!isarea(axe_location)) owner.add_mood_event("fireaxe", /datum/mood_event/axe_gone) return - + if(istype(axe_location, /area/station/command)) to_chat(owner, span_notice("You feel a sense of relief...")) if(istype(GLOB.bridge_axe.loc, /obj/structure/fireaxecabinet)) return owner.add_mood_event("fireaxe", /datum/mood_event/axe_neutral) return - + to_chat(owner, span_warning("You start having a bad feeling...")) owner.add_mood_event("fireaxe", /datum/mood_event/axe_missing) diff --git a/code/datums/browser.dm b/code/datums/browser.dm index 03b1bbca39b..360420ab00b 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -312,25 +312,25 @@ if (A.selectedbutton) return list("button" = A.selectedbutton, "values" = A.valueslist) -/proc/input_bitfield(mob/User, title, bitfield, current_value, nwidth = 350, nheight = 350, nslidecolor, allowed_edit_list = null) - if (!User || !(bitfield in GLOB.bitfields)) +/proc/input_bitfield(mob/User, title, bitfield, current_value, nwidth = 350, nheight = 350, nslidecolor, allowed_edit_flags = ALL) + var/list/bitflags = get_valid_bitflags(bitfield) + if (!User || !length(bitflags)) return - var/list/pickerlist = list() - for (var/i in GLOB.bitfields[bitfield]) - var/can_edit = 1 - if(!isnull(allowed_edit_list) && !(allowed_edit_list & GLOB.bitfields[bitfield][i])) - can_edit = 0 - if (current_value & GLOB.bitfields[bitfield][i]) - pickerlist += list(list("checked" = 1, "value" = GLOB.bitfields[bitfield][i], "name" = i, "allowed_edit" = can_edit)) - else - pickerlist += list(list("checked" = 0, "value" = GLOB.bitfields[bitfield][i], "name" = i, "allowed_edit" = can_edit)) - var/list/result = presentpicker(User, "", title, Button1="Save", Button2 = "Cancel", Timeout=FALSE, values = pickerlist, width = nwidth, height = nheight, slidecolor = nslidecolor) + var/list/picker_list = list() + for (var/bit_name in bitflags) + var/bit_value = bitflags[bit_name] + // TRUE/FALSE cast, sorry :) + var/can_edit = !!(allowed_edit_flags & bit_value) + var/flag_set = !!(current_value & bit_value) + picker_list += list(list("checked" = flag_set, "value" = bit_value, "name" = bit_name, "allowed_edit" = can_edit)) + + var/list/result = presentpicker(User, "", title, Button1="Save", Button2 = "Cancel", Timeout=FALSE, values = picker_list, width = nwidth, height = nheight, slidecolor = nslidecolor) if (islist(result)) if (result["button"] == 2) // If the user pressed the cancel button return - . = 0 - for (var/flag in result["values"]) - . |= GLOB.bitfields[bitfield][flag] + . = NONE + for (var/flag_name in result["values"]) + . |= bitflags[flag_name] else return diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm index 5930012a2af..3af62b77ca6 100644 --- a/code/datums/chatmessage.dm +++ b/code/datums/chatmessage.dm @@ -226,13 +226,13 @@ // scheduled time once the EOL has been executed. var/continuing = 0 if (time_spent >= time_before_fade) - if(m.message.pixel_y < starting_height) - var/max_height = m.message.pixel_y + m.approx_lines * CHAT_MESSAGE_APPROX_LHEIGHT - starting_height + if(m.message.pixel_z < starting_height) + var/max_height = m.message.pixel_z + m.approx_lines * CHAT_MESSAGE_APPROX_LHEIGHT - starting_height if(max_height > 0) - animate(m.message, pixel_y = m.message.pixel_y + max_height, time = CHAT_MESSAGE_SPAWN_TIME, flags = continuing | ANIMATION_PARALLEL) + animate(m.message, pixel_z = m.message.pixel_z + max_height, time = CHAT_MESSAGE_SPAWN_TIME, flags = continuing | ANIMATION_PARALLEL) continuing |= ANIMATION_CONTINUE - else if(mheight + starting_height >= m.message.pixel_y) - animate(m.message, pixel_y = m.message.pixel_y + mheight, time = CHAT_MESSAGE_SPAWN_TIME, flags = continuing | ANIMATION_PARALLEL) + else if(mheight + starting_height >= m.message.pixel_z) + animate(m.message, pixel_z = m.message.pixel_z + mheight, time = CHAT_MESSAGE_SPAWN_TIME, flags = continuing | ANIMATION_PARALLEL) continuing |= ANIMATION_CONTINUE continue @@ -257,13 +257,13 @@ continuing |= ANIMATION_CONTINUE // We run this after the alpha animate, because we don't want to interrup it, but also don't want to block it by running first // Sooo instead we do this. bit messy but it fuckin works - if(m.message.pixel_y < starting_height) - var/max_height = m.message.pixel_y + m.approx_lines * CHAT_MESSAGE_APPROX_LHEIGHT - starting_height + if(m.message.pixel_z < starting_height) + var/max_height = m.message.pixel_z + m.approx_lines * CHAT_MESSAGE_APPROX_LHEIGHT - starting_height if(max_height > 0) - animate(m.message, pixel_y = m.message.pixel_y + max_height, time = CHAT_MESSAGE_SPAWN_TIME, flags = continuing | ANIMATION_PARALLEL) + animate(m.message, pixel_z = m.message.pixel_z + max_height, time = CHAT_MESSAGE_SPAWN_TIME, flags = continuing | ANIMATION_PARALLEL) continuing |= ANIMATION_CONTINUE - else if(mheight + starting_height >= m.message.pixel_y) - animate(m.message, pixel_y = m.message.pixel_y + mheight, time = CHAT_MESSAGE_SPAWN_TIME, flags = continuing | ANIMATION_PARALLEL) + else if(mheight + starting_height >= m.message.pixel_z) + animate(m.message, pixel_z = m.message.pixel_z + mheight, time = CHAT_MESSAGE_SPAWN_TIME, flags = continuing | ANIMATION_PARALLEL) continuing |= ANIMATION_CONTINUE // Reset z index if relevant @@ -275,8 +275,8 @@ SET_PLANE_EXPLICIT(message, RUNECHAT_PLANE, message_loc) message.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA | KEEP_APART message.alpha = 0 - message.pixel_y = starting_height - message.pixel_x = -target.base_pixel_x + message.pixel_z = starting_height + message.pixel_w = -target.base_pixel_w message.maptext_width = CHAT_MESSAGE_WIDTH message.maptext_height = mheight * 1.25 // We add extra because some characters are superscript, like actions message.maptext_x = (CHAT_MESSAGE_WIDTH - owner.bound_width) * -0.5 diff --git a/code/datums/cogbar.dm b/code/datums/cogbar.dm index 6505158b58d..fba12d764c4 100644 --- a/code/datums/cogbar.dm +++ b/code/datums/cogbar.dm @@ -15,14 +15,27 @@ var/image/blank /// The offset of the icon var/offset_y + /// Icon path of the cog + var/cogicon + /// The icon state + var/cogiconstate -/datum/cogbar/New(mob/user) +/datum/cogbar/New(mob/user, cogicon, cogiconstate) src.user = user src.user_client = user.client - + src.cogicon = cogicon + src.cogiconstate = cogiconstate var/list/icon_offsets = user.get_oversized_icon_offsets() offset_y = icon_offsets["y"] + if(isnull(cogicon)) + stack_trace("/datum/cogbar was created with a null icon.") + qdel(src) + return + if(isnull(cogiconstate)) + stack_trace("/datum/cogbar was created with a null icon state.") + qdel(src) + return add_cog_to_user() @@ -45,15 +58,15 @@ /// Adds the cog to the user, visible by other players /datum/cogbar/proc/add_cog_to_user() cog = SSvis_overlays.add_vis_overlay(user, - icon = 'icons/effects/progressbar.dmi', - iconstate = "cog", + icon = cogicon, + iconstate = cogiconstate, plane = HIGH_GAME_PLANE, add_appearance_flags = APPEARANCE_UI_IGNORE_ALPHA, unique = TRUE, alpha = 0, ) cog.pixel_y = ICON_SIZE_Y + offset_y - animate(cog, alpha = 255, time = COGBAR_ANIMATION_TIME) + animate(cog, alpha = user.alpha, time = COGBAR_ANIMATION_TIME) if(isnull(user_client)) return diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 9fc1e13e1b4..3cc0738e38d 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -43,11 +43,21 @@ /datum/component/New(list/raw_args) parent = raw_args[1] var/list/arguments = raw_args.Copy(2) - if(Initialize(arglist(arguments)) == COMPONENT_INCOMPATIBLE) + + var/result = Initialize(arglist(arguments)) + + if(result == COMPONENT_INCOMPATIBLE) stack_trace("Incompatible [type] assigned to a [parent.type]! args: [json_encode(arguments)]") qdel(src, TRUE, TRUE) return + if(result == COMPONENT_REDUNDANT) + qdel(src, TRUE, TRUE) + return + + if(QDELETED(src) || QDELETED(parent)) + CRASH("Component [type] was created with a deleted parent or was deleted itself before it could be added to a parent") + _JoinParent() /** diff --git a/code/datums/components/acid.dm b/code/datums/components/acid.dm index dea0002663d..ff63ed985a2 100644 --- a/code/datums/components/acid.dm +++ b/code/datums/components/acid.dm @@ -1,4 +1,4 @@ -GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/effects/acid.dmi', "default")) +GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/effects/acid.dmi', "default", appearance_flags = RESET_COLOR|KEEP_APART)) /** * Component representing acid applied to an object. diff --git a/code/datums/components/aquarium.dm b/code/datums/components/aquarium.dm index 11d6a9494b5..e417b5f54fc 100644 --- a/code/datums/components/aquarium.dm +++ b/code/datums/components/aquarium.dm @@ -27,13 +27,13 @@ var/list/used_layers = list() ///The minimum pixel x of the area where vis overlays should be displayed - var/aquarium_zone_min_px + var/aquarium_zone_min_pw ///The maximum pixel x of the area where vis overlays should be displayed - var/aquarium_zone_max_px + var/aquarium_zone_max_pw ///The minimum pixel y of the area where vis overlays should be displayed - var/aquarium_zone_min_py + var/aquarium_zone_min_pz ///The maximum pixel y of the area where vis overlays should be displayed - var/aquarium_zone_max_py + var/aquarium_zone_max_pz ///While the feed (reagent) storage is not empty, this is the interval which the fish are fed. var/feeding_interval = 3 MINUTES @@ -73,10 +73,10 @@ src.default_beauty = default_beauty src.reagents_size = reagents_size - aquarium_zone_min_px = min_px - aquarium_zone_max_px = max_px - aquarium_zone_min_py = min_py - aquarium_zone_max_py = max_py + aquarium_zone_min_pw = min_px + aquarium_zone_max_pw = max_px + aquarium_zone_min_pz = min_py + aquarium_zone_max_pz = max_py src.min_fluid_temp = min_fluid_temp src.max_fluid_temp = max_fluid_temp @@ -424,10 +424,10 @@ SIGNAL_HANDLER used_layers -= visual.layer visual.layer = request_layer(visual.layer_mode) - visual.aquarium_zone_min_px = aquarium_zone_min_px - visual.aquarium_zone_max_px = aquarium_zone_max_px - visual.aquarium_zone_min_py = aquarium_zone_min_py - visual.aquarium_zone_max_py = aquarium_zone_max_py + visual.aquarium_zone_min_pw = aquarium_zone_min_pw + visual.aquarium_zone_max_pw = aquarium_zone_max_pw + visual.aquarium_zone_min_pz = aquarium_zone_min_pz + visual.aquarium_zone_max_pz = aquarium_zone_max_pz visual.fluid_type = fluid_type /datum/component/aquarium/proc/request_layer(layer_type) diff --git a/code/datums/components/aquarium_content.dm b/code/datums/components/aquarium_content.dm index 87cd34571d4..f0a9204ef82 100644 --- a/code/datums/components/aquarium_content.dm +++ b/code/datums/components/aquarium_content.dm @@ -110,12 +110,12 @@ /// How the visual will be layered var/layer_mode = AQUARIUM_LAYER_MODE_AUTO ///minimum pixel x, inherited from the aquarium - var/aquarium_zone_min_px + var/aquarium_zone_min_pw ///maximum pixel x, inherited from the aquarium - var/aquarium_zone_max_px + var/aquarium_zone_max_pw ///minimum pixel y, inherited from the aquarium - var/aquarium_zone_min_py + var/aquarium_zone_min_pz ///maximum pixel y, inherited from the aquarium - var/aquarium_zone_max_py + var/aquarium_zone_max_pz ///The current fluid type, inherited fom the aquarium var/fluid_type diff --git a/code/datums/components/basic_inhands.dm b/code/datums/components/basic_inhands.dm index 4d286e4eed3..3315a298605 100644 --- a/code/datums/components/basic_inhands.dm +++ b/code/datums/components/basic_inhands.dm @@ -42,8 +42,8 @@ var/is_right = IS_RIGHT_INDEX(holding_mob.get_held_index_of_item(held)) var/icon_file = is_right ? held.righthand_file : held.lefthand_file var/mutable_appearance/held_overlay = held.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE) - held_overlay.pixel_y += y_offset - held_overlay.pixel_x += x_offset * (is_right ? 1 : -1) + held_overlay.pixel_z += y_offset + held_overlay.pixel_w += x_offset * (is_right ? 1 : -1) held_overlays += held_overlay cached_overlays = held_overlays diff --git a/code/datums/components/bayonet_attachable.dm b/code/datums/components/bayonet_attachable.dm index 4b2442bea50..5e03f0cc225 100644 --- a/code/datums/components/bayonet_attachable.dm +++ b/code/datums/components/bayonet_attachable.dm @@ -178,8 +178,8 @@ return var/mutable_appearance/bayonet_appearance = mutable_appearance(bayonet_overlay_icon, bayonet_overlay) - bayonet_appearance.pixel_x = offset_x - bayonet_appearance.pixel_y = offset_y + bayonet_appearance.pixel_w = offset_x + bayonet_appearance.pixel_z = offset_y overlays += bayonet_appearance /datum/component/bayonet_attachable/proc/on_update_icon_state(obj/item/source) diff --git a/code/datums/components/burning.dm b/code/datums/components/burning.dm index 7264689d13c..bd011537bcc 100644 --- a/code/datums/components/burning.dm +++ b/code/datums/components/burning.dm @@ -1,4 +1,4 @@ -GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/effects/fire.dmi', "fire", appearance_flags = RESET_COLOR)) +GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/effects/fire.dmi', "fire", appearance_flags = RESET_COLOR|KEEP_APART)) /** * Component representing an atom being on fire. diff --git a/code/datums/components/cleaner.dm b/code/datums/components/cleaner.dm index 035f0c054db..de88ba08acd 100644 --- a/code/datums/components/cleaner.dm +++ b/code/datums/components/cleaner.dm @@ -99,10 +99,10 @@ var/mutable_appearance/low_bubble = mutable_appearance('icons/effects/effects.dmi', "bubbles", CLEANABLE_OBJECT_LAYER, target, GAME_PLANE) var/mutable_appearance/high_bubble = mutable_appearance('icons/effects/effects.dmi', "bubbles", CLEANABLE_OBJECT_LAYER, target, ABOVE_GAME_PLANE) var/list/icon_offsets = target.get_oversized_icon_offsets() - low_bubble.pixel_x = icon_offsets["x"] - low_bubble.pixel_y = icon_offsets["y"] - high_bubble.pixel_x = icon_offsets["x"] - high_bubble.pixel_y = icon_offsets["y"] + low_bubble.pixel_w = icon_offsets["x"] + low_bubble.pixel_z = icon_offsets["y"] + high_bubble.pixel_w = icon_offsets["x"] + high_bubble.pixel_z = icon_offsets["y"] if(target.plane > low_bubble.plane) //check if the higher overlay is necessary target.add_overlay(high_bubble) else if(target.plane == low_bubble.plane) diff --git a/code/datums/components/clickbox.dm b/code/datums/components/clickbox.dm index 236b07c7eae..a8509a98ba6 100644 --- a/code/datums/components/clickbox.dm +++ b/code/datums/components/clickbox.dm @@ -77,8 +77,8 @@ clickbox_underlay = mutable_appearance('icons/ui/clickbox.dmi', clickbox_icon_state, CLICKBOX_LAYER, alpha = 1, appearance_flags = RESET_COLOR|RESET_ALPHA) clickbox_underlay.transform = clickbox_underlay.transform.Scale(clickbox_width, clickbox_height) //Keeps the underlay more or less centered. - clickbox_underlay.pixel_x = x_offset * 1/clickbox_width - clickbox_underlay.pixel_y = y_offset * 1/clickbox_height + clickbox_underlay.pixel_w = x_offset * 1/clickbox_width + clickbox_underlay.pixel_z = y_offset * 1/clickbox_height mov_parent.underlays += clickbox_underlay /datum/component/clickbox/proc/on_vv_modify_transform(atom/source) diff --git a/code/datums/components/clothing_dirt.dm b/code/datums/components/clothing_dirt.dm index a6cfcf88ff4..eed2eab5fb4 100644 --- a/code/datums/components/clothing_dirt.dm +++ b/code/datums/components/clothing_dirt.dm @@ -20,7 +20,7 @@ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_clean)) RegisterSignal(parent, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_expose), TRUE) RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(on_overlays_updated)) - RegisterSignal(parent, COMSIG_ITEM_GET_WORN_OVERLAYS, PROC_REF(on_worn_overlays)) + RegisterSignal(parent, COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS, PROC_REF(on_separate_worn_overlays)) /datum/component/clothing_dirt/UnregisterFromParent() var/obj/item/clothing/clothing = parent @@ -37,6 +37,7 @@ COMSIG_MOB_UNEQUIPPED_ITEM, COMSIG_COMPONENT_CLEAN_ACT, COMSIG_ATOM_UPDATE_OVERLAYS, + COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS, )) return ..() @@ -70,13 +71,13 @@ dirt_overlay.color = dirt_color overlays += dirt_overlay -/datum/component/clothing_dirt/proc/on_worn_overlays(obj/item/source, list/overlays, mutable_appearance/standing, isinhands, icon_file) +/datum/component/clothing_dirt/proc/on_separate_worn_overlays(obj/item/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) SIGNAL_HANDLER if (isinhands || !dirtiness || !dirt_state || !(source.flags_cover & PEPPERPROOF)) return - var/mutable_appearance/dirt_overlay = mutable_appearance(source.worn_icon, dirt_state, appearance_flags = KEEP_APART|RESET_COLOR) + var/mutable_appearance/dirt_overlay = mutable_appearance(source.worn_icon, dirt_state) dirt_overlay.color = dirt_color overlays += dirt_overlay diff --git a/code/datums/components/crafting/_recipes.dm b/code/datums/components/crafting/_recipes.dm index 31825ac6611..aaa22239065 100644 --- a/code/datums/components/crafting/_recipes.dm +++ b/code/datums/components/crafting/_recipes.dm @@ -98,13 +98,6 @@ /datum/crafting_recipe/proc/on_craft_completion(mob/user, atom/result) return -///Check if the pipe used for atmospheric device crafting is the proper one -/datum/crafting_recipe/proc/atmos_pipe_check(mob/user, list/collected_requirements) - var/obj/item/pipe/required_pipe = collected_requirements[/obj/item/pipe][1] - if(ispath(required_pipe.pipe_type, /obj/machinery/atmospherics/pipe/smart)) - return TRUE - return FALSE - /// Additional UI data to be passed to the crafting UI for this recipe /datum/crafting_recipe/proc/crafting_ui_data() return list() diff --git a/code/datums/components/crafting/atmospheric.dm b/code/datums/components/crafting/atmospheric.dm index 7b11df7bbb4..82e817be072 100644 --- a/code/datums/components/crafting/atmospheric.dm +++ b/code/datums/components/crafting/atmospheric.dm @@ -37,18 +37,22 @@ /obj/item/stack/sheet/iron = 1, ) blacklist = list(/obj/item/analyzer/ranged) + category = CAT_ATMOSPHERIC ///abstract path for pipe crafting recipes that set the pipe_type of their results and have other checks as well /datum/crafting_recipe/spec_pipe var/pipe_type /datum/crafting_recipe/spec_pipe/check_requirements(mob/user, list/collected_requirements) - return atmos_pipe_check(user, collected_requirements) + var/obj/item/pipe/required_pipe = collected_requirements[/obj/item/pipe][1] + if(ispath(required_pipe.pipe_type, /obj/machinery/atmospherics/pipe/smart)) + return TRUE + return FALSE /datum/crafting_recipe/spec_pipe/on_craft_completion(mob/user, atom/result) var/obj/item/pipe/crafted_pipe = result crafted_pipe.pipe_type = pipe_type - crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY + crafted_pipe.pipe_color = ATMOS_COLOR_OMNI crafted_pipe.setDir(user.dir) crafted_pipe.update() @@ -237,17 +241,6 @@ ) category = CAT_ATMOSPHERIC -/datum/crafting_recipe/elder_atmosian_statue - name = "Elder Atmosian Statue" - result = /obj/structure/statue/elder_atmosian - time = 6 SECONDS - reqs = list( - /obj/item/stack/sheet/mineral/metal_hydrogen = 20, - /obj/item/stack/sheet/mineral/zaukerite = 15, - /obj/item/stack/sheet/iron = 30, - ) - category = CAT_STRUCTURE - /datum/crafting_recipe/spec_pipe/airlock_pump name = "External Airlock Pump" tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER) diff --git a/code/datums/components/crafting/entertainment.dm b/code/datums/components/crafting/entertainment.dm index 0602624dbb8..84d495d7539 100644 --- a/code/datums/components/crafting/entertainment.dm +++ b/code/datums/components/crafting/entertainment.dm @@ -248,7 +248,7 @@ /obj/item/clothing/gloves/latex = 1, /obj/item/stack/cable_coil = 2, ) - category = CAT_EQUIPMENT + category = CAT_ENTERTAINMENT /datum/crafting_recipe/violin name = "Violin" diff --git a/code/datums/components/crafting/melee_weapon.dm b/code/datums/components/crafting/melee_weapon.dm index a8805c56577..9c817ffa437 100644 --- a/code/datums/components/crafting/melee_weapon.dm +++ b/code/datums/components/crafting/melee_weapon.dm @@ -55,9 +55,7 @@ category = CAT_WEAPON_MELEE /datum/crafting_recipe/balloon_mallet/check_requirements(mob/user, list/collected_requirements) - . = ..() - if(HAS_TRAIT(user, TRAIT_BALLOON_SUTRA)) - return TRUE + return HAS_TRAIT(user, TRAIT_BALLOON_SUTRA) /datum/crafting_recipe/tailwhip name = "Liz O' Nine Tails" diff --git a/code/datums/components/crafting/ranged_weapon.dm b/code/datums/components/crafting/ranged_weapon.dm index 3ce17b16b6f..64205b3d80d 100644 --- a/code/datums/components/crafting/ranged_weapon.dm +++ b/code/datums/components/crafting/ranged_weapon.dm @@ -439,3 +439,19 @@ tool_behaviors = list(TOOL_SCREWDRIVER) time = 10 SECONDS category = CAT_WEAPON_RANGED + +/datum/crafting_recipe/dimensional_bombcore + name = "Multi-Dimensional Payload" + result = /obj/item/bombcore/dimensional + reqs = list( + /obj/item/gibtonite = 1, + /obj/item/grenade/chem_grenade = 2, + /obj/item/assembly/signaler/anomaly/dimensional = 1, + ) + parts = list(/obj/item/gibtonite = 1, /obj/item/grenade/chem_grenade = 2) + tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WELDER) + time = 12 SECONDS + category = CAT_WEAPON_RANGED + steps = list( + "use high quality gibtonite and advanced release or large grenades for better yield", + ) diff --git a/code/datums/components/crafting/structures.dm b/code/datums/components/crafting/structures.dm index 7af26c0c89d..0332357f5f0 100644 --- a/code/datums/components/crafting/structures.dm +++ b/code/datums/components/crafting/structures.dm @@ -94,3 +94,14 @@ ) time = 120 SECONDS category = CAT_STRUCTURE + +/datum/crafting_recipe/elder_atmosian_statue + name = "Elder Atmosian Statue" + result = /obj/structure/statue/elder_atmosian + time = 6 SECONDS + reqs = list( + /obj/item/stack/sheet/mineral/metal_hydrogen = 20, + /obj/item/stack/sheet/mineral/zaukerite = 15, + /obj/item/stack/sheet/iron = 30, + ) + category = CAT_STRUCTURE diff --git a/code/datums/components/crafting/tailoring.dm b/code/datums/components/crafting/tailoring.dm index 050c7af0239..eb217803c3e 100644 --- a/code/datums/components/crafting/tailoring.dm +++ b/code/datums/components/crafting/tailoring.dm @@ -580,9 +580,7 @@ category = CAT_CLOTHING /datum/crafting_recipe/balloon_helmet/check_requirements(mob/user, list/collected_requirements) - . = ..() - if(HAS_TRAIT(user, TRAIT_BALLOON_SUTRA)) - return TRUE + return HAS_TRAIT(user, TRAIT_BALLOON_SUTRA) /datum/crafting_recipe/balloon_tophat result = /obj/item/clothing/head/hats/tophat/balloon @@ -593,9 +591,7 @@ category = CAT_CLOTHING /datum/crafting_recipe/balloon_tophat/check_requirements(mob/user, list/collected_requirements) - . = ..() - if(HAS_TRAIT(user, TRAIT_BALLOON_SUTRA)) - return TRUE + return HAS_TRAIT(user, TRAIT_BALLOON_SUTRA) /datum/crafting_recipe/balloon_vest result = /obj/item/clothing/suit/armor/balloon_vest @@ -606,9 +602,7 @@ category = CAT_CLOTHING /datum/crafting_recipe/balloon_vest/check_requirements(mob/user, list/collected_requirements) - . = ..() - if(HAS_TRAIT(user, TRAIT_BALLOON_SUTRA)) - return TRUE + return HAS_TRAIT(user, TRAIT_BALLOON_SUTRA) /datum/crafting_recipe/press_armor name = "press armor vest" diff --git a/code/datums/components/crafting/tools.dm b/code/datums/components/crafting/tools.dm index beeee75169e..59ee1276d59 100644 --- a/code/datums/components/crafting/tools.dm +++ b/code/datums/components/crafting/tools.dm @@ -109,3 +109,13 @@ continue if(crayon.use_charges(user, 10)) return + +/datum/crafting_recipe/makeshift_radio_jammer + name = "Makeshift Radio Jammer" + result = /obj/item/jammer/makeshift + reqs = list( + /obj/item/universal_scanner = 1, + /obj/item/encryptionkey = 1, + /obj/item/stack/cable_coil = 5, + ) + category = CAT_TOOLS diff --git a/code/datums/components/customizable_reagent_holder.dm b/code/datums/components/customizable_reagent_holder.dm index fda64d6c256..e82633e62b1 100644 --- a/code/datums/components/customizable_reagent_holder.dm +++ b/code/datums/components/customizable_reagent_holder.dm @@ -160,15 +160,15 @@ switch(fill_type) if(CUSTOM_INGREDIENT_ICON_SCATTER) - filling.pixel_x = rand(-1,1) + filling.pixel_w = rand(-1,1) filling.pixel_z = rand(-1,1) if(CUSTOM_INGREDIENT_ICON_STACK) - filling.pixel_x = rand(-1,1) + filling.pixel_w = rand(-1,1) // we're gonna abuse position layering to ensure overlays render right filling.pixel_y = -LAZYLEN(ingredients) filling.pixel_z = 2 * LAZYLEN(ingredients) - 1 + LAZYLEN(ingredients) if(CUSTOM_INGREDIENT_ICON_STACKPLUSTOP) - filling.pixel_x = rand(-1,1) + filling.pixel_w = rand(-1,1) // similar here filling.pixel_y = -LAZYLEN(ingredients) filling.pixel_z = 2 * LAZYLEN(ingredients) - 1 + LAZYLEN(ingredients) @@ -186,7 +186,7 @@ atom_parent.cut_overlay(top_overlay) top_overlay = filling if(CUSTOM_INGREDIENT_ICON_LINE) - filling.pixel_x = filling.pixel_z = rand(-8,3) + filling.pixel_w = filling.pixel_z = rand(-8,3) atom_parent.add_overlay(filling) diff --git a/code/datums/components/echolocation.dm b/code/datums/components/echolocation.dm index 1568a573977..e7e2fab5a1a 100644 --- a/code/datums/components/echolocation.dm +++ b/code/datums/components/echolocation.dm @@ -16,7 +16,7 @@ /// This trait blocks us from receiving echolocation. var/blocking_trait /// Ref of the client color we give to the echolocator. - var/client_color + var/client_colour /// Associative list of receivers to lists of atoms they are rendering (those atoms are associated to data of the image and time they were rendered at). var/list/receivers = list() /// All the saved appearances, keyed by icon-icon_state. @@ -59,10 +59,10 @@ src.show_own_outline = show_own_outline src.echo_color = personal_color // SKYRAT EDIT ADDITION END - if(ispath(color_path)) - client_color = echolocator.add_client_colour(color_path) src.echo_group = echo_group || REF(src) - echolocator.add_traits(list(TRAIT_ECHOLOCATION_RECEIVER, TRAIT_TRUE_NIGHT_VISION), echo_group) //so they see all the tiles they echolocated, even if they are in the dark + if(ispath(color_path)) + client_colour = echolocator.add_client_colour(color_path, src.echo_group) + echolocator.add_traits(list(TRAIT_ECHOLOCATION_RECEIVER, TRAIT_TRUE_NIGHT_VISION), src.echo_group) //so they see all the tiles they echolocated, even if they are in the dark echolocator.become_blind(ECHOLOCATION_TRAIT) // SKYRAT EDIT ADDITION START if (use_echo) // add constructor toggle to not use the eye overlay @@ -73,7 +73,7 @@ /datum/component/echolocation/Destroy(force) STOP_PROCESSING(SSfastprocess, src) var/mob/living/echolocator = parent - QDEL_NULL(client_color) + QDEL_NULL(client_colour) echolocator.remove_traits(list(TRAIT_ECHOLOCATION_RECEIVER, TRAIT_TRUE_NIGHT_VISION), echo_group) echolocator.cure_blind(ECHOLOCATION_TRAIT) echolocator.clear_fullscreen("echo") diff --git a/code/datums/components/fearful/effects.dm b/code/datums/components/fearful/effects.dm new file mode 100644 index 00000000000..ab079102917 --- /dev/null +++ b/code/datums/components/fearful/effects.dm @@ -0,0 +1,167 @@ +// Terror effect handlers + +#define FEAR_SCALING(base, min, max) clamp(base * (terror_buildup - min) / (max - min), 0, base) + +/// Causes mild jittering, scaling with current terror level +/datum/terror_handler/jittering + handler_type = TERROR_HANDLER_EFFECT + default = TRUE + COOLDOWN_DECLARE(message_cd) + +/datum/terror_handler/jittering/tick(seconds_per_tick, terror_buildup) + . = ..() + if (owner.stat >= UNCONSCIOUS) + return + + if (terror_buildup < TERROR_BUILDUP_FEAR) + return + + // If we're terrified, keep constant jittering and dizzyness + if (terror_buildup > TERROR_BUILDUP_TERROR) + owner.adjust_dizzy_up_to(10 SECONDS * seconds_per_tick, 10 SECONDS) + owner.adjust_jitter_up_to(10 SECONDS * seconds_per_tick, 10 SECONDS) + return + + if (!SPT_PROB(1 + FEAR_SCALING(4, TERROR_BUILDUP_FEAR, TERROR_BUILDUP_TERROR), seconds_per_tick)) // 1% to 5% chance + return + + if (COOLDOWN_FINISHED(src, message_cd) && !owner.has_status_effect(/datum/status_effect/jitter)) // Don't display the message if we're already shaking + to_chat(owner, span_warning("You can't stop shaking...")) + COOLDOWN_START(src, message_cd, TERROR_MESSAGE_CD) + + owner.set_jitter_if_lower(20 SECONDS) + owner.set_dizzy_if_lower(20 SECONDS) + +/// Stutter when afraid +/datum/terror_handler/stuttering + handler_type = TERROR_HANDLER_EFFECT + default = TRUE + +/datum/terror_handler/stuttering/tick(seconds_per_tick, terror_buildup) + . = ..() + if (owner.stat >= UNCONSCIOUS) + return + + if (terror_buildup < TERROR_BUILDUP_FEAR) + return + + if (terror_buildup > TERROR_BUILDUP_TERROR || SPT_PROB(1 + FEAR_SCALING(4, TERROR_BUILDUP_FEAR, TERROR_BUILDUP_TERROR), seconds_per_tick)) + owner.set_stutter_if_lower(10 SECONDS) + +/// Can randomly give you some oxyloss, and cause a heart attack past TERROR_BUILDUP_HEART_ATTACK +/datum/terror_handler/heart_problems + handler_type = TERROR_HANDLER_EFFECT + default = TRUE + COOLDOWN_DECLARE(effect_cd) + +/datum/terror_handler/heart_problems/tick(seconds_per_tick, terror_buildup) + . = ..() + if (owner.stat >= UNCONSCIOUS) + return + + if (terror_buildup < TERROR_BUILDUP_FEAR) + return + + if (!SPT_PROB(1 + FEAR_SCALING(4, TERROR_BUILDUP_FEAR, TERROR_BUILDUP_PANIC), seconds_per_tick)) // 1% to 5% chance + return + + if (terror_buildup < TERROR_BUILDUP_HEART_ATTACK || !prob(15)) + owner.adjustOxyLoss(8) + if (terror_buildup < TERROR_BUILDUP_FEAR) + to_chat(owner, span_warning("Your heart skips a beat.")) + else + to_chat(owner, span_userdanger("You feel your heart lurching in your chest...")) + return + + owner.visible_message( + span_warning("[owner] clutches [owner.p_their()] chest for a moment, then collapses to the floor."), + span_alert("The shadows begin to creep up from the corners of your vision, and then there is nothing..."), + span_hear("You hear something heavy collide with the ground."), + ) + var/datum/disease/heart_failure/heart_attack = new(src) + heart_attack.stage_prob = 2 //Advances twice as fast + owner.ForceContractDisease(heart_attack) + owner.Unconscious(20 SECONDS) + +/// Low chance to vomit when terrified, increases significantly during panic attacks +/datum/terror_handler/vomiting + handler_type = TERROR_HANDLER_EFFECT + +/datum/terror_handler/vomiting/tick(seconds_per_tick, terror_buildup) + . = ..() + if (owner.stat >= UNCONSCIOUS) + return + + if (terror_buildup < TERROR_BUILDUP_TERROR) + return + + if (SPT_PROB((terror_buildup >= TERROR_BUILDUP_PANIC) ? 3 : 1, seconds_per_tick)) + to_chat(owner, span_warning("You feel sick...")) + // Vomit blood if we're *really* freaking out + addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob/living/carbon, vomit), terror_buildup >= TERROR_BUILDUP_PASSIVE_MAXIMUM), 5 SECONDS) + +/// Causes tunnel vision, blurry eyes and periodic panic attacks when panicking +/datum/terror_handler/panic + handler_type = TERROR_HANDLER_EFFECT + default = TRUE + /// Has the panic message been shown yet? + var/active = FALSE + /// Are we in a state of a panic attack currently? Only really used for tracking our breath loop + var/active_attack = FALSE + /// Breath loop used during a panic attack + var/datum/looping_sound/breathing/breath_loop + +/datum/terror_handler/panic/New(mob/living/new_owner, datum/component/fearful/new_component) + . = ..() + breath_loop = new(owner, _direct = TRUE) + +/datum/terror_handler/panic/Destroy(force) + owner.remove_fov_trait(type, FOV_270_DEGREES) + QDEL_NULL(breath_loop) + return ..() + +/datum/terror_handler/panic/tick(seconds_per_tick, terror_buildup) + . = ..() + if (owner.stat >= UNCONSCIOUS) + active_attack = FALSE + active = FALSE + owner.remove_fov_trait(type, FOV_270_DEGREES) + return + + if (terror_buildup < TERROR_BUILDUP_PANIC) + if (active_attack) // No you don't + return TERROR_BUILDUP_PANIC - terror_buildup + active = FALSE + owner.remove_fov_trait(type, FOV_270_DEGREES) + return + + if (!active) + active = TRUE + to_chat(owner, span_userdanger("You feel your heart racing!")) + owner.add_fov_trait(type, FOV_270_DEGREES) // Terror induced tunnel vision + + owner.playsound_local(owner, 'sound/effects/health/slowbeat.ogg', 40, FALSE, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE) + if (SPT_PROB(5, seconds_per_tick)) + owner.set_eye_blur_if_lower(10 SECONDS) + + if (active_attack) + owner.losebreath += 0.25 // Miss 1/4 breaths + return + + if (SPT_PROB(2 + FEAR_SCALING(3, TERROR_BUILDUP_PANIC, TERROR_BUILDUP_MAXIMUM), seconds_per_tick)) + . += panic_attack(terror_buildup) + +/datum/terror_handler/panic/proc/panic_attack(terror_buildup) + active_attack = TRUE + owner.emote("gasp") + owner.Knockdown(0.5 SECONDS) + breath_loop.start() + addtimer(CALLBACK(src, PROC_REF(stop_panic_attack)), rand(3 SECONDS, 5 SECONDS)) + owner.visible_message(span_warning("[owner] drops to the floor for a moment, clutching their chest."), span_alert("Your heart lurches in your chest. You can't take much more of this!")) + return PANIC_ATTACK_TERROR_AMOUNT + +/datum/terror_handler/panic/proc/stop_panic_attack() + breath_loop.stop() + active_attack = FALSE + +#undef FEAR_SCALING diff --git a/code/datums/components/fearful/fearful.dm b/code/datums/components/fearful/fearful.dm new file mode 100644 index 00000000000..61ee21397f5 --- /dev/null +++ b/code/datums/components/fearful/fearful.dm @@ -0,0 +1,195 @@ +/// Fearful component: provides optional handling of fears and phobias for mob's mood +/// Can be applied from multiple sources, and essentially serves as a central controller for fear datums described below + +/datum/component/fearful + dupe_mode = COMPONENT_DUPE_SOURCES + + /// How terrified is the source? + var/terror_buildup = 0 + /// List of terror handlers we currently have -> sources they're added by + var/list/terror_handlers = list() + /// List of overriden handler types, for ease of access + var/list/list/overriden_handlers = list() + /// How much buildup we had last tick? Used for non-ticking terror source tracking + var/last_tick_buildup = 0 + +/* + * handler_types - terror_handler(s) to add to the mob + * initial_buildup - amount of fear to add to mob from getting scared shitless by whatever added the component + * add_defaults - should terror handlers marked as "default" be added to the mob? + */ +/datum/component/fearful/Initialize(list/handler_types, initial_buildup, add_defaults = TRUE) + . = ..() + if (!isliving(parent)) + return COMPONENT_INCOMPATIBLE + + START_PROCESSING(SSdcs, src) + terror_buildup = initial_buildup + + if (!add_defaults) + return + + for (var/datum/terror_handler/handler as anything in subtypesof(/datum/terror_handler)) + if (!initial(handler.default)) + continue + add_handler(handler, "default") + +/datum/component/fearful/Destroy(force) + STOP_PROCESSING(SSdcs, src) + QDEL_LIST(terror_handlers) + return ..() + +/datum/component/fearful/RegisterWithParent() + . = ..() + RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(parent, COMSIG_CARBON_PRE_MISC_HELP, PROC_REF(comfort_owner)) + RegisterSignal(parent, SIGNAL_ADDTRAIT(TRAIT_FEARLESS), PROC_REF(fearless_added)) + RegisterSignal(parent, COMSIG_CARBON_MOOD_CHECK, PROC_REF(on_mood_check)) + +/datum/component/fearful/UnregisterFromParent() + . = ..() + UnregisterSignal(parent, list(COMSIG_ATOM_EXAMINE, COMSIG_CARBON_PRE_MISC_HELP, SIGNAL_ADDTRAIT(TRAIT_FEARLESS), COMSIG_CARBON_MOOD_CHECK)) + +/datum/component/fearful/on_source_add(source, list/handler_types, initial_buildup, add_defaults = TRUE) + . = ..() + terror_buildup = clamp(terror_buildup + initial_buildup, 0, TERROR_BUILDUP_MAXIMUM) + for (var/handler_type in handler_types) + add_handler(handler_type, source) + +/datum/component/fearful/on_source_remove(source) + for (var/datum/terror_handler/handler as anything in terror_handlers) + terror_handlers[handler] -= source + if (length(terror_handlers[handler])) + continue + terror_handlers -= handler + for (var/override_type in handler.overrides) + if (!overriden_handlers[override_type]) + continue + overriden_handlers[override_type] -= handler.type + if (!length(overriden_handlers[override_type])) + overriden_handlers -= override_type + qdel(handler) + return ..() + +/datum/component/fearful/proc/add_handler(handler_type, source) + for (var/datum/terror_handler/existing as anything in terror_handlers) + if (existing.type == handler_type) + terror_handlers[existing] += source + return + + var/datum/terror_handler/handler = new handler_type(parent, src) + terror_handlers[handler] = list(source) + for (var/override_type in handler.overrides) + if (!overriden_handlers[override_type]) + overriden_handlers[override_type] = list() + overriden_handlers[override_type][handler_type] = TRUE + +/datum/component/fearful/process(seconds_per_tick) + var/terror_adjustment = 0 + var/list/tick_later = list() + for (var/datum/terror_handler/handler as anything in terror_handlers) + if (overriden_handlers[handler.type]) + continue + if (handler.handler_type == TERROR_HANDLER_EFFECT) + tick_later += handler + continue + var/adjustment = handler.tick(seconds_per_tick, terror_buildup) + terror_buildup = clamp(terror_buildup + adjustment, 0, TERROR_BUILDUP_MAXIMUM) + terror_adjustment += adjustment + + for (var/datum/terror_handler/handler as anything in tick_later) + var/adjustment = handler.tick(seconds_per_tick, terror_buildup) + terror_buildup = clamp(terror_buildup + adjustment, 0, TERROR_BUILDUP_MAXIMUM) + terror_adjustment += adjustment + + // If we gained terror in any way, don't tick it down + if (terror_adjustment > 0 || terror_buildup > last_tick_buildup) + last_tick_buildup = terror_buildup + return + + // Tick terror down while we're not being actively spooked + if (terror_buildup > 0) + terror_buildup = max(terror_buildup - TERROR_BUILDUP_PASSIVE_DECREASE, 0) + last_tick_buildup = terror_buildup + +/datum/component/fearful/proc/on_examine(mob/living/source, mob/user, list/examine_list) + SIGNAL_HANDLER + + if (source.stat >= UNCONSCIOUS) + return + + if(terror_buildup >= TERROR_BUILDUP_HEART_ATTACK) + examine_list += span_danger("[source.p_They()] [source.p_are()] are seizing up, about to collapse in fear!") + else if(terror_buildup > TERROR_BUILDUP_PANIC) + examine_list += span_boldwarning("[source.p_They()] [source.p_are()] are trembling and shaking, barely standing upright!") + else if(terror_buildup >= TERROR_BUILDUP_TERROR) + examine_list += span_boldwarning("[source] is visibly trembling and twitching. [source.p_They()] [source.p_are()] are clearly in distress!") + else if(terror_buildup >= TERROR_BUILDUP_FEAR) + examine_list += span_warning("[source] looks very worried about something. [capitalize(source.p_are())] [source.p_they()] alright?") + else if (terror_buildup) + examine_list += span_smallnotice("[source] looks rather anxious. [source.p_They()] could probably use a hug...") + +/datum/component/fearful/proc/comfort_owner(mob/living/carbon/source, mob/living/hugger) + SIGNAL_HANDLER + + if(hugger == parent) + return + + if(isnightmare(hugger)) + var/lit_tiles = 0 + var/unlit_tiles = 0 + + for(var/turf/open/turf_to_check in range(1, source)) + var/light_amount = turf_to_check.get_lumcount() + if(light_amount > LIGHTING_TILE_IS_DARK) + lit_tiles++ + else + unlit_tiles++ + + if(lit_tiles < unlit_tiles) + source.Knockdown(0.5 SECONDS) + terror_buildup += HUG_TERROR_AMOUNT + source.visible_message( + span_warning("[source] recoils in fear as [hugger] waves [hugger.p_their()] arms and shrieks at [source.p_them()]!"), + span_boldwarning("The shadows lash out at you, and you drop to the ground in fear!"), + span_hear("You hear someone shriek in fear. How embarassing!"), + ) + return COMPONENT_BLOCK_MISC_HELP + + for (var/datum/brain_trauma/mild/phobia/phobia in source.get_traumas()) + if (!phobia.is_scary_mob(hugger)) + continue + + terror_buildup += HUG_TERROR_AMOUNT + source.visible_message( + span_warning("[source] recoils in fear as [hugger] attempts to hug [source.p_them()]!"), + span_boldwarning("You recoil in terror as [hugger] attempts to hug you!"), + span_hear("You hear someone shriek in fear. How embarassing!"), + ) + return COMPONENT_BLOCK_MISC_HELP + + terror_buildup -= HUG_TERROR_AMOUNT + source.visible_message( + span_notice("[source] seems to relax as [hugger] gives [source.p_them()] a comforting hug."), + span_nicegreen("You feel yourself calm down as [hugger] gives you a reassuring hug."), + span_hear("You hear shuffling and a sigh of relief."), + ) + +/// Remove all terror buildup when we become fearless +/datum/component/fearful/proc/fearless_added(datum/source) + SIGNAL_HANDLER + terror_buildup = 0 + +/datum/component/fearful/proc/on_mood_check(mob/living/source, list/mood_list) + SIGNAL_HANDLER + + if(terror_buildup >= TERROR_BUILDUP_HEART_ATTACK) + mood_list += span_boldwarning("You are about to collapse in fear!") + else if(terror_buildup > TERROR_BUILDUP_PANIC) + mood_list += span_boldwarning("You are shaking in fear!") + else if(terror_buildup >= TERROR_BUILDUP_TERROR) + mood_list += span_warning("You are trembling in fear.") + else if(terror_buildup >= TERROR_BUILDUP_FEAR) + mood_list += span_warning("You feel scared.") + else if (terror_buildup) + mood_list += span_notice("You feel on the edge.") diff --git a/code/datums/components/fearful/sources.dm b/code/datums/components/fearful/sources.dm new file mode 100644 index 00000000000..c0fd104c9c8 --- /dev/null +++ b/code/datums/components/fearful/sources.dm @@ -0,0 +1,168 @@ +// Terror source handlers +/// Simple source which passively increases terror based on a single condition and can do something when its added/removed +/datum/terror_handler/simple_source + handler_type = TERROR_HANDLER_SOURCE + /// How much terror is added per second + var/buildup_per_second = 10 + /// Have we already applied our effects? + var/active = FALSE + +/datum/terror_handler/simple_source/tick(seconds_per_tick, terror_buildup) + . = ..() + if (check_condition(seconds_per_tick, terror_buildup) && terror_buildup < TERROR_BUILDUP_PASSIVE_MAXIMUM) + if (!active) + on_activation(terror_buildup) + . += min(buildup_per_second * seconds_per_tick, TERROR_BUILDUP_PASSIVE_MAXIMUM - terror_buildup) + else if (active) + on_deactivation(terror_buildup) + +/// Proc that children should override with their conditions +/datum/terror_handler/simple_source/proc/check_condition(seconds_per_tick, terror_buildup) + return !HAS_TRAIT(owner, TRAIT_FEARLESS) && !HAS_TRAIT(owner, TRAIT_MIND_TEMPORARILY_GONE) && owner.stat < UNCONSCIOUS + +/// Proc that's called when the effect is first applied, for moodlets and alike +/datum/terror_handler/simple_source/proc/on_activation(terror_buildup) + active = TRUE + +/// Proc that's called when the effect stops working, for moodlets and alike +/datum/terror_handler/simple_source/proc/on_deactivation(terror_buildup) + active = FALSE + +/// Makes the owner terrified of darkness +/datum/terror_handler/simple_source/nyctophobia + buildup_per_second = 5 // Takes about two minutes to reach maximum + /// Are we counteracted by mesons? + var/meson_negated = TRUE + +/datum/terror_handler/simple_source/nyctophobia/Destroy(force) + owner.clear_mood_event("nyctophobia") + return ..() + +/datum/terror_handler/simple_source/nyctophobia/check_condition(seconds_per_tick, terror_buildup) + . = ..() + if (!.) + return + + if (ishuman(owner)) + var/mob/living/carbon/human/as_human = owner + if(as_human.dna?.species.id in list(SPECIES_SHADOW, SPECIES_NIGHTMARE)) + return FALSE + + if (meson_negated && (owner.sight & SEE_TURFS)) + return FALSE + + var/lit_tiles = 0 + var/unlit_tiles = 0 + + for (var/turf/open/turf_to_check in range(1, owner)) + var/light_amount = turf_to_check.get_lumcount() + if (light_amount > LIGHTING_TILE_IS_DARK) + lit_tiles++ + else + unlit_tiles++ + + return lit_tiles < unlit_tiles + +/datum/terror_handler/simple_source/nyctophobia/on_activation(terror_buildup) + . = ..() + owner.add_mood_event("nyctophobia", /datum/mood_event/nyctophobia) + +/datum/terror_handler/simple_source/nyctophobia/on_deactivation(terror_buildup) + . = ..() + owner.clear_mood_event("nyctophobia") + +// Nightmare spell version with quicker buildup that shadows the quirk one, also handles removing the status upon reaching 0 terror +/datum/terror_handler/simple_source/nyctophobia/terrified + // Takes about 30 seconds to reach maximum if you include 100 from casting the spell + buildup_per_second = 15 + // Overrides the base type with slower buildup + overrides = list(/datum/terror_handler/simple_source/nyctophobia) + meson_negated = FALSE + +/datum/terror_handler/simple_source/nyctophobia/terrified/tick(seconds_per_tick, terror_buildup) + . = ..() + if (terror_buildup == 0 && !.) + owner.RemoveComponentSource("terrified", /datum/component/fearful) + +/// Makes the owner afraid of being stuck in closets, crates, mechs, etc +/datum/terror_handler/simple_source/claustrophobia + buildup_per_second = 15 + +/datum/terror_handler/simple_source/claustrophobia/Destroy(force) + owner.clear_mood_event("claustrophobia") + return ..() + +/datum/terror_handler/simple_source/claustrophobia/check_condition(seconds_per_tick, terror_buildup) + . = ..() + if (!.) + return + + if (isturf(owner.loc)) + return FALSE + + if (SPT_PROB(15, seconds_per_tick)) + to_chat(owner, span_warning("You feel trapped! Must escape... can't breathe...")) + + return TRUE + +/datum/terror_handler/simple_source/claustrophobia/on_activation(terror_buildup) + . = ..() + owner.add_mood_event("claustrophobia", /datum/mood_event/claustrophobia) + +/datum/terror_handler/simple_source/claustrophobia/on_deactivation(terror_buildup) + . = ..() + owner.clear_mood_event("claustrophobia") + +/// Makes the owner afraid of certain jolly figures +/datum/terror_handler/simple_source/clausophobia + buildup_per_second = 20 + +/datum/terror_handler/simple_source/clausophobia/check_condition(seconds_per_tick, terror_buildup) + . = ..() + if (!.) + return + + var/certified_jolly = FALSE + + for(var/mob/living/carbon/human/possible_claus in view(5, owner)) + if(istype(possible_claus.back, /obj/item/storage/backpack/santabag)) + certified_jolly = TRUE + break + + if(istype(possible_claus.head, /obj/item/clothing/head/costume/santa) || istype(possible_claus.head, /obj/item/clothing/head/helmet/space/santahat)) + certified_jolly = TRUE + break + + if(istype(possible_claus.wear_suit, /obj/item/clothing/suit/space/santa)) + certified_jolly = TRUE + break + + if (!certified_jolly) + return FALSE + + if (SPT_PROB(15, seconds_per_tick)) + to_chat(owner, span_warning("Santa Claus is here! I gotta get out of here!")) + + return TRUE + +/// Makes the owner afraid of being alone +/datum/terror_handler/simple_source/monophobia + buildup_per_second = 2.5 // Pretty low, ~4 minutes to reach passive cap + +/datum/terror_handler/simple_source/monophobia/check_condition(seconds_per_tick, terror_buildup) + . = ..() + if (!.) + return + + var/check_radius = 7 + if (owner.is_blind()) + check_radius = 1 + + for (var/mob/living/friend in view(check_radius, owner)) + if (friend == owner) + continue + + if (istype(friend, /mob/living/basic/pet) || friend.ckey) + return FALSE + + return TRUE diff --git a/code/datums/components/fearful/terror_handler.dm b/code/datums/components/fearful/terror_handler.dm new file mode 100644 index 00000000000..93aa6a6c5b1 --- /dev/null +++ b/code/datums/components/fearful/terror_handler.dm @@ -0,0 +1,27 @@ +/// Terror handlers, aka datums which determine current fear behaviors. +/// Separated into two groups, fear sources and fear effects, latter processing after all former are finished +/datum/terror_handler + /// Owner of this fear handler + var/mob/living/owner + /// Component which "houses" this handler + var/datum/component/fearful/component + /// Type of this handler, determines if it should run in the first or second batch + var/handler_type = TERROR_HANDLER_SOURCE + /// Is this a "default" handler? If so, it will be added to any fearful component unless its initialized with add_defaults = FALSE + var/default = FALSE + /// Other effects which should be disabled while this one is running + var/list/overrides + +/datum/terror_handler/New(mob/living/new_owner, datum/component/fearful/new_component) + . = ..() + owner = new_owner + component = new_component + +/datum/terror_handler/Destroy(force) + owner = null + component = null + return ..() + +/// Single tick of terror handler, returns adjustment to terror buildup +/datum/terror_handler/proc/tick(seconds_per_tick, terror_buildup) + return 0 diff --git a/code/datums/components/fishing_spot.dm b/code/datums/components/fishing_spot.dm index ebf885f14d4..127f542f561 100644 --- a/code/datums/components/fishing_spot.dm +++ b/code/datums/components/fishing_spot.dm @@ -82,6 +82,6 @@ var/obj/machinery/fishing_portal_generator/portal = tool.buffer return portal.link_fishing_spot(fish_source, source, user) -/datum/component/fishing_spot/proc/fish_released(datum/source, obj/item/fish/fish, mob/living/releaser) +/datum/component/fishing_spot/proc/fish_released(atom/source, obj/item/fish/fish, mob/living/releaser) SIGNAL_HANDLER - fish_source.readd_fish(fish, releaser) + fish_source.readd_fish(source, fish, releaser) diff --git a/code/datums/components/food/germ_sensitive.dm b/code/datums/components/food/germ_sensitive.dm index 85b6f0a3713..17040ad3806 100644 --- a/code/datums/components/food/germ_sensitive.dm +++ b/code/datums/components/food/germ_sensitive.dm @@ -5,9 +5,9 @@ /// Possible diseases GLOBAL_LIST_INIT(floor_diseases, list( - /datum/disease/advance/nebula_nausea = 2, - /datum/disease/advance/gastritium = 2, - /datum/disease/advance/carpellosis = 1, + /datum/disease/nebula_nausea = 2, + /datum/disease/gastritium = 2, + /datum/disease/carpellosis = 1, )) /// Makes items infective if left on floor, also sending corresponding signals to parent diff --git a/code/datums/components/food/ice_cream_holder.dm b/code/datums/components/food/ice_cream_holder.dm index 4161c749703..d509a15484b 100644 --- a/code/datums/components/food/ice_cream_holder.dm +++ b/code/datums/components/food/ice_cream_holder.dm @@ -137,8 +137,8 @@ var/image/overlay = scoop_overlays[i] if(istext(overlay)) overlay = image('icons/obj/service/kitchen.dmi', overlay) - overlay.pixel_x = x_offset - overlay.pixel_y = y_offset + added_offset + overlay.pixel_w = x_offset + overlay.pixel_z = y_offset + added_offset new_overlays += overlay added_offset += ICE_CREAM_SCOOP_OFFSET diff --git a/code/datums/components/fov_handler.dm b/code/datums/components/fov_handler.dm index 9f64c648502..eb67a90db3f 100644 --- a/code/datums/components/fov_handler.dm +++ b/code/datums/components/fov_handler.dm @@ -40,7 +40,7 @@ /datum/component/fov_handler/proc/set_fov_angle(new_angle) fov_angle = new_angle - blocker_mask.icon_state = "[fov_angle]" + blocker_mask.icon_state = "[fov_angle > 0 ? fov_angle : (360 + fov_angle)]" /// Updates the size of the FOV masks by comparing them to client view size. /datum/component/fov_handler/proc/update_fov_size() @@ -61,6 +61,9 @@ var/y_scale = view_size[2] / current_fov_y current_fov_x = view_size[1] current_fov_y = view_size[2] + if (fov_angle < 0) + x_scale *= -1 + y_scale *= -1 blocker_mask.transform = new_matrix.Scale(x_scale, y_scale) blocker_mask.transform = new_matrix.Translate(x_shift * 16, y_shift * 16) diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm index e93e0f54129..61a21666677 100644 --- a/code/datums/components/fullauto.dm +++ b/code/datums/components/fullauto.dm @@ -275,7 +275,7 @@ // Gun procs. /obj/item/gun/proc/on_autofire_start(mob/living/shooter) - if(semicd || shooter.incapacitated || !can_trigger_gun(shooter)) + if(fire_cd || shooter.incapacitated || !can_trigger_gun(shooter)) return FALSE if(!can_shoot()) shoot_with_empty_chamber(shooter) @@ -295,7 +295,7 @@ /obj/item/gun/proc/do_autofire(datum/source, atom/target, mob/living/shooter, allow_akimbo, params) SIGNAL_HANDLER - if(semicd || shooter.incapacitated) + if(fire_cd || shooter.incapacitated) return NONE if(!can_shoot()) shoot_with_empty_chamber(shooter) diff --git a/code/datums/components/hat_stabilizer.dm b/code/datums/components/hat_stabilizer.dm index 5a9844811c6..2a11d248b86 100644 --- a/code/datums/components/hat_stabilizer.dm +++ b/code/datums/components/hat_stabilizer.dm @@ -10,10 +10,10 @@ var/former_visor_flags /// If true, add_overlay will use worn overlay instead of item appearance var/use_worn_icon = TRUE - /// Pixel_y offset for the hat - var/pixel_y_offset + /// Pixel z offset for the hat + var/pixel_z_offset -/datum/component/hat_stabilizer/Initialize(use_worn_icon = FALSE, pixel_y_offset = 0, loose_hat = FALSE) +/datum/component/hat_stabilizer/Initialize(use_worn_icon = FALSE, pixel_z_offset = 0, loose_hat = FALSE) if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE @@ -21,7 +21,7 @@ source.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1 src.use_worn_icon = use_worn_icon - src.pixel_y_offset = pixel_y_offset + src.pixel_z_offset = pixel_z_offset src.loose_hat = loose_hat // Examine signals RegisterSignal(source, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) @@ -36,12 +36,13 @@ RegisterSignal(source, COMSIG_ATOM_ATTACK_HAND_SECONDARY, PROC_REF(on_secondary_attack_hand)) // Overlays - RegisterSignals(source, list(COMSIG_MODULE_GENERATE_WORN_OVERLAY, COMSIG_ITEM_GET_WORN_OVERLAYS), PROC_REF(get_worn_overlays)) + RegisterSignal(source, COMSIG_MODULE_GENERATE_WORN_OVERLAY, PROC_REF(get_worn_overlays)) + RegisterSignal(source, COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS, PROC_REF(get_separate_worn_overlays)) RegisterSignal(source, COMSIG_QDELETING, PROC_REF(on_qdel)) // Inherit the new values passed to the component -/datum/component/hat_stabilizer/InheritComponent(datum/component/hat_stabilizer/new_comp, original, use_worn_icon, pixel_y_offset, loose_hat) +/datum/component/hat_stabilizer/InheritComponent(datum/component/hat_stabilizer/new_comp, original, use_worn_icon, pixel_z_offset, loose_hat) if(!original) return @@ -49,8 +50,8 @@ src.use_worn_icon = use_worn_icon if(!isnull(use_worn_icon)) src.use_worn_icon = use_worn_icon - if(!isnull(pixel_y_offset)) - src.pixel_y_offset = pixel_y_offset + if(!isnull(pixel_z_offset)) + src.pixel_z_offset = pixel_z_offset if(!isnull(loose_hat)) src.loose_hat = loose_hat @@ -59,7 +60,7 @@ remove_hat() UnregisterSignal(parent, list(COMSIG_ATOM_EXAMINE, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_ATTACK_HAND_SECONDARY, COMSIG_MODULE_GENERATE_WORN_OVERLAY, - COMSIG_ITEM_GET_WORN_OVERLAYS, COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_QDELETING, + COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS, COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_QDELETING, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) /datum/component/hat_stabilizer/proc/on_equip(datum/source, mob/equipper, slot) @@ -102,20 +103,39 @@ base_examine += span_notice("There's nothing placed on [parent]. Yet.") /datum/component/hat_stabilizer/proc/get_worn_overlays(atom/movable/source, list/overlays, mutable_appearance/standing, isinhands, icon_file) + SIGNAL_HANDLER + if(isinhands) + return + if(!attached_hat) + return + var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER - 0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi') + worn_overlay.appearance_flags |= RESET_COLOR + // loose hats are slightly angled + if(loose_hat) + var/matrix/tilt_trix = matrix(worn_overlay.transform) + var/angle = 5 + tilt_trix.Turn(angle * pick(1, -1)) + worn_overlay.transform = tilt_trix + worn_overlay.pixel_z = pixel_z_offset + attached_hat.worn_y_offset + overlays += worn_overlay + +/datum/component/hat_stabilizer/proc/get_separate_worn_overlays(atom/movable/source, list/overlays, mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) SIGNAL_HANDLER if (isinhands) return - if(attached_hat) - var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER-0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi') - worn_overlay.appearance_flags |= RESET_COLOR - // loose hats are slightly angled - if(loose_hat) - var/matrix/tilt_trix = matrix(worn_overlay.transform) - var/angle = 5 - tilt_trix.Turn(angle * pick(1, -1)) - worn_overlay.transform = tilt_trix - worn_overlay.pixel_y = pixel_y_offset + attached_hat.worn_y_offset - overlays += worn_overlay + if(!attached_hat) + return + var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER - 0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi') + for (var/mutable_appearance/overlay in worn_overlay.overlays) + overlay.layer = ABOVE_BODY_FRONT_HEAD_LAYER - 0.1 + // loose hats are slightly angled + if(loose_hat) + var/matrix/tilt_trix = matrix(worn_overlay.transform) + var/angle = 5 + tilt_trix.Turn(angle * pick(1, -1)) + worn_overlay.transform = tilt_trix + worn_overlay.pixel_z = pixel_z_offset + attached_hat.worn_y_offset + overlays += worn_overlay /datum/component/hat_stabilizer/proc/on_qdel(atom/movable/source) SIGNAL_HANDLER diff --git a/code/datums/components/manual_heart.dm b/code/datums/components/manual_heart.dm index d8d74854900..fb815cdfdbb 100644 --- a/code/datums/components/manual_heart.dm +++ b/code/datums/components/manual_heart.dm @@ -69,7 +69,7 @@ to_chat(parent, span_userdanger("You feel your heart start beating normally again!")) var/mob/living/carbon/carbon_parent = parent if(istype(carbon_parent)) - carbon_parent.remove_client_colour(/datum/client_colour/manual_heart_blood) + carbon_parent.remove_client_colour(REF(src)) /datum/component/manual_heart/proc/restart() SIGNAL_HANDLER @@ -85,7 +85,7 @@ pump_action.build_all_button_icons(UPDATE_BUTTON_STATUS) var/mob/living/carbon/carbon_parent = parent if(istype(carbon_parent)) - carbon_parent.remove_client_colour(/datum/client_colour/manual_heart_blood) //prevents red overlay from getting stuck + carbon_parent.remove_client_colour(REF(src)) //prevents red overlay from getting stuck STOP_PROCESSING(SSdcs, src) /// Worker proc that checks logic for if a pump can happen, and applies effects from doing so @@ -98,7 +98,7 @@ if(HAS_TRAIT(carbon_owner, TRAIT_NOBLOOD)) return carbon_owner.blood_volume = min(carbon_owner.blood_volume + (blood_loss * 0.5), BLOOD_VOLUME_MAXIMUM) - carbon_owner.remove_client_colour(/datum/client_colour/manual_heart_blood) + carbon_owner.remove_client_colour(REF(src)) add_colour = TRUE carbon_owner.adjustBruteLoss(-heal_brute) carbon_owner.adjustFireLoss(-heal_burn) @@ -119,7 +119,7 @@ to_chat(carbon_parent, span_userdanger("You have to keep pumping your blood!")) COOLDOWN_START(src, heart_timer, MANUAL_HEART_GRACE_PERIOD) //give two full seconds before losing more blood if(add_colour) - carbon_parent.add_client_colour(/datum/client_colour/manual_heart_blood) + carbon_parent.add_client_colour(/datum/client_colour/manual_heart_blood, REF(src)) add_colour = FALSE ///If a new heart is added, start processing. @@ -134,7 +134,7 @@ pump_action.build_all_button_icons(UPDATE_BUTTON_STATUS) var/mob/living/carbon/carbon_parent = parent if(istype(carbon_parent)) - carbon_parent.remove_client_colour(/datum/client_colour/manual_heart_blood) //prevents red overlay from getting stuck + carbon_parent.remove_client_colour(REF(src)) //prevents red overlay from getting stuck START_PROCESSING(SSdcs, src) ///If the heart is removed, stop processing. diff --git a/code/datums/components/martial_art_giver.dm b/code/datums/components/martial_art_giver.dm index 1a0bfa9951a..a2a3bfd97da 100644 --- a/code/datums/components/martial_art_giver.dm +++ b/code/datums/components/martial_art_giver.dm @@ -7,39 +7,35 @@ if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - style = new style_type() - style.allow_temp_override = FALSE + style = new style_type(src) + +/datum/component/martial_art_giver/Destroy() + QDEL_NULL(style) + return ..() /datum/component/martial_art_giver/RegisterWithParent() RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(equipped)) RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(dropped)) + var/obj/item/item = parent + var/mob/living/wearer = item.loc + if(istype(wearer)) + equipped(item, wearer, wearer.get_slot_by_item(item)) + /datum/component/martial_art_giver/UnregisterFromParent(datum/source) - UnregisterSignal(parent, list(COMSIG_ITEM_POST_EQUIPPED, COMSIG_ITEM_POST_UNEQUIP)) - var/obj/item/parent_item = parent - if(ismob(parent_item?.loc)) - UnregisterSignal(parent, list(COMSIG_MOB_MIND_TRANSFERRED_INTO, COMSIG_MOB_MIND_INITIALIZED, COMSIG_MOB_MIND_TRANSFERRED_OUT_OF)) - QDEL_NULL(style) + UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) + + var/obj/item/item = parent + var/mob/living/wearer = item.loc + if(istype(wearer)) + dropped(item, wearer) /datum/component/martial_art_giver/proc/equipped(obj/item/source, mob/user, slot) SIGNAL_HANDLER if(!(source.slot_flags & slot)) return - RegisterSignals(user, list(COMSIG_MOB_MIND_TRANSFERRED_INTO, COMSIG_MOB_MIND_INITIALIZED), PROC_REF(teach)) - RegisterSignal(user, COMSIG_MOB_MIND_TRANSFERRED_OUT_OF, PROC_REF(forget)) - teach(user) + style.teach(user) /datum/component/martial_art_giver/proc/dropped(obj/item/source, mob/user) SIGNAL_HANDLER - forget(user) - UnregisterSignal(user, list(COMSIG_MOB_MIND_TRANSFERRED_INTO, COMSIG_MOB_MIND_INITIALIZED, COMSIG_MOB_MIND_TRANSFERRED_OUT_OF)) - -/datum/component/martial_art_giver/proc/teach(mob/source) - if(isnull(style)) - return - style.teach(source, TRUE) - -/datum/component/martial_art_giver/proc/forget(mob/source) - if(isnull(style)) - return - style.fully_remove(source) + style.unlearn(user) diff --git a/code/datums/components/material/material_container.dm b/code/datums/components/material/material_container.dm index d57f5a95d1e..3774d655f42 100644 --- a/code/datums/components/material/material_container.dm +++ b/code/datums/components/material/material_container.dm @@ -23,7 +23,7 @@ var/list/allowed_item_typecache /// Whether or not this material container allows specific amounts from sheets to be inserted var/precise_insertion = FALSE - /// The material container flags. See __DEFINES/materials.dm. + /// The material container flags. See __DEFINES/construction/materials.dm. var/mat_container_flags /// Signals that are registered with this contained var/list/registered_signals @@ -81,6 +81,7 @@ if(!(mat_container_flags & MATCONTAINER_NO_INSERT)) //to insert stuff into the container RegisterSignal(atom_target, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_item_insert)) + RegisterSignal(atom_target, COMSIG_ATOM_ITEM_INTERACTION_SECONDARY, PROC_REF(on_secondary_insert)) //screen tips for inserting items atom_target.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1 @@ -98,6 +99,7 @@ if(!(mat_container_flags & MATCONTAINER_NO_INSERT)) signals += COMSIG_ATOM_ITEM_INTERACTION + signals += COMSIG_ATOM_ITEM_INTERACTION_SECONDARY signals += COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM if(mat_container_flags & MATCONTAINER_EXAMINE) signals += COMSIG_ATOM_EXAMINE @@ -130,8 +132,9 @@ if(old_flags & MATCONTAINER_NO_INSERT && !(mat_container_flags & MATCONTAINER_NO_INSERT)) RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_item_insert)) + RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION_SECONDARY, PROC_REF(on_secondary_insert)) else if(!(old_flags & MATCONTAINER_NO_INSERT) && mat_container_flags & MATCONTAINER_NO_INSERT) - UnregisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION) + UnregisterSignal(parent, list(COMSIG_ATOM_ITEM_INTERACTION, COMSIG_ATOM_ITEM_INTERACTION_SECONDARY)) /** * 3 Types of Procs @@ -164,7 +167,7 @@ var/max_mat_value = 0 var/material_amount = 0 - var/list/item_materials = source.get_material_composition() + var/list/item_materials = source.get_material_composition(mat_container_flags) var/list/mats_consumed = list() for(var/MAT in item_materials) if(!can_hold_material(MAT)) @@ -485,16 +488,28 @@ if(!QDELETED(deleting)) //deleting parents also delete their children so we check qdel(deleting) -/// Proc that allows players to fill the parent with mats -/datum/component/material_container/proc/on_item_insert(datum/source, mob/living/user, obj/item/weapon, list/modifiers) +/datum/component/material_container/proc/on_item_insert(datum/source, mob/living/user, obj/item/weapon) SIGNAL_HANDLER + // Don't insert material items with left click + if (isstack(weapon)) + return attempt_insert(user, weapon) +/datum/component/material_container/proc/on_secondary_insert(datum/source, mob/living/user, obj/item/weapon) + SIGNAL_HANDLER + return attempt_insert(user, weapon) + +/// Proc that allows players to fill the parent with mats +/datum/component/material_container/proc/attempt_insert(mob/living/user, obj/item/weapon) //Allows you to attack the machine with iron sheets for e.g. if(!(mat_container_flags & MATCONTAINER_ANY_INTENT) && user.combat_mode) return - user_insert(weapon, user) + if(ismachinery(parent)) + var/obj/machinery/machine = parent + if(machine.machine_stat || machine.panel_open) + return + user_insert(weapon, user) return ITEM_INTERACT_SUCCESS //=============================================================================================== @@ -552,11 +567,11 @@ * Arguments: * - [I][obj/item]: the item whos materials must be retrieved */ -/datum/component/material_container/proc/get_item_material_amount(obj/item/I) - if(!istype(I) || !I.custom_materials) +/datum/component/material_container/proc/get_item_material_amount(obj/item/item) + if(!istype(item) || !item.custom_materials) return 0 var/material_amount = 0 - var/list/item_materials = I.get_material_composition() + var/list/item_materials = item.get_material_composition(mat_container_flags) for(var/MAT in item_materials) if(!can_hold_material(MAT)) continue @@ -764,7 +779,7 @@ return NONE if((held_item.flags_1 & HOLOGRAM_1) || (held_item.item_flags & NO_MAT_REDEMPTION) || (allowed_item_typecache && !is_type_in_typecache(held_item, allowed_item_typecache))) return NONE - var/list/item_materials = held_item.get_material_composition() + var/list/item_materials = held_item.get_material_composition(mat_container_flags) if(!length(item_materials)) return NONE for(var/material in item_materials) @@ -772,7 +787,9 @@ continue return NONE - context[SCREENTIP_CONTEXT_LMB] = "Insert" + if (isstack(held_item)) + context[SCREENTIP_CONTEXT_LMB] = "Insert stack" + context[SCREENTIP_CONTEXT_RMB] = "Insert" return CONTEXTUAL_SCREENTIP_SET diff --git a/code/datums/components/material/remote_materials.dm b/code/datums/components/material/remote_materials.dm index d8eb0dc060c..9f23de90d34 100644 --- a/code/datums/components/material/remote_materials.dm +++ b/code/datums/components/material/remote_materials.dm @@ -67,6 +67,7 @@ handles linking back and forth. mat_container = silo.materials if(!(mat_container_flags & MATCONTAINER_NO_INSERT)) RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_item_insert)) + RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION_SECONDARY, PROC_REF(on_secondary_insert)) if (!mat_container && allow_standalone) _MakeLocal() @@ -124,7 +125,7 @@ handles linking back and forth. if (QDELETED(old_silo) || silo != old_silo) return - UnregisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION) + UnregisterSignal(parent, list(COMSIG_ATOM_ITEM_INTERACTION, COMSIG_ATOM_ITEM_INTERACTION_SECONDARY)) silo.ore_connected_machines -= src silo = null mat_container = null @@ -164,22 +165,28 @@ handles linking back and forth. mat_container = new_container if(!(mat_container_flags & MATCONTAINER_NO_INSERT)) RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_item_insert)) + RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION_SECONDARY, PROC_REF(on_secondary_insert)) to_chat(user, span_notice("You connect [parent] to [silo] from the multitool's buffer.")) return ITEM_INTERACT_SUCCESS -///Insert mats into silo /datum/component/remote_materials/proc/on_item_insert(datum/source, mob/living/user, obj/item/target) SIGNAL_HANDLER + // Only insert stacks with left click + if(isstack(target)) + return attempt_insert(user, target) - //Allows you to attack the machine with iron sheets for e.g. +/datum/component/remote_materials/proc/on_secondary_insert(datum/source, mob/living/user, obj/item/target) + SIGNAL_HANDLER + return attempt_insert(user, target) + +/// Insert mats into silo +/datum/component/remote_materials/proc/attempt_insert(mob/living/user, obj/item/target) if(!(mat_container_flags & MATCONTAINER_ANY_INTENT) && user.combat_mode) return if(silo) mat_container.user_insert(target, user, parent) - - return ITEM_INTERACT_SUCCESS - + return ITEM_INTERACT_SUCCESS /** * Checks if the param silo is in the same level as this components parent i.e. connected machine, rcd, etc diff --git a/code/datums/components/mind_martial_art.dm b/code/datums/components/mind_martial_art.dm new file mode 100644 index 00000000000..08c64a48371 --- /dev/null +++ b/code/datums/components/mind_martial_art.dm @@ -0,0 +1,38 @@ +/// A martial art that is owned by this mind and will transfer as mind moves +/datum/component/mindbound_martial_arts + dupe_mode = COMPONENT_DUPE_SELECTIVE + /// The style transferred between minds + var/datum/martial_art/style + +/datum/component/mindbound_martial_arts/Initialize(style_type) + if(!istype(parent, /datum/mind)) + return COMPONENT_INCOMPATIBLE + + style = new style_type(src) + +/datum/component/mindbound_martial_arts/CheckDupeComponent(datum/component/new_comp, new_style_type) + return style.type == new_style_type + +/datum/component/mindbound_martial_arts/RegisterWithParent() + RegisterSignal(parent, COMSIG_MIND_TRANSFERRED, PROC_REF(mind_transferred)) + + var/datum/mind/mind = parent + style.teach(mind.current) + +/datum/component/mindbound_martial_arts/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_MIND_TRANSFERRED) + + var/datum/mind/mind = parent + style.unlearn(mind.current) + +/datum/component/mindbound_martial_arts/Destroy() + QDEL_NULL(style) + return ..() + +/// Signal proc for [COMSIG_MOB_MIND_TRANSFERRED_OUT_OF] to pass martial arts between bodies on mind transfer +/// By this point the martial art's holder is the old body, but the mind that owns it is in the new body +/datum/component/mindbound_martial_arts/proc/mind_transferred(datum/mind/source, mob/living/old_body) + SIGNAL_HANDLER + + style.unlearn(old_body) + style.teach(source.current) diff --git a/code/datums/components/omen.dm b/code/datums/components/omen.dm index e250bb7124f..7a696cefe87 100644 --- a/code/datums/components/omen.dm +++ b/code/datums/components/omen.dm @@ -66,11 +66,11 @@ /datum/component/omen/RegisterWithParent() RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(check_accident)) RegisterSignal(parent, COMSIG_ON_CARBON_SLIP, PROC_REF(check_slip)) - RegisterSignal(parent, COMSIG_CARBON_MOOD_UPDATE, PROC_REF(check_bless)) + RegisterSignal(parent, COMSIG_LIVING_BLESSED, PROC_REF(check_bless)) RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(check_death)) /datum/component/omen/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_ON_CARBON_SLIP, COMSIG_MOVABLE_MOVED, COMSIG_CARBON_MOOD_UPDATE, COMSIG_LIVING_DEATH)) + UnregisterSignal(parent, list(COMSIG_ON_CARBON_SLIP, COMSIG_MOVABLE_MOVED, COMSIG_LIVING_BLESSED, COMSIG_LIVING_DEATH)) /datum/component/omen/proc/consume_omen() incidents_left-- @@ -218,18 +218,14 @@ return /// Hijack the mood system to see if we get the blessing mood event to cancel the omen -/datum/component/omen/proc/check_bless(mob/living/our_guy, category) +/datum/component/omen/proc/check_bless(mob/living/our_guy, mob/living/priest, obj/item/book/bible/bible, bless_result) SIGNAL_HANDLER - if(incidents_left == INFINITY) - return - - if(!("blessing" in our_guy.mob_mood.mood_events)) + if(incidents_left == INFINITY || bless_result != BLESSING_SUCCESS) return playsound(our_guy, 'sound/effects/pray_chaplain.ogg', 40, TRUE) to_chat(our_guy, span_green("You feel fantastic!")) - qdel(src) /// Severe deaths. Normally lifts the curse. diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm index 642feee3ac0..73defbd2bac 100644 --- a/code/datums/components/overlay_lighting.dm +++ b/code/datums/components/overlay_lighting.dm @@ -73,12 +73,12 @@ ///Cast range for the directional cast (how far away the atom is moved) var/cast_range = 2 -/datum/component/overlay_lighting/Initialize(_range, _power, _color, starts_on, is_directional, is_beam) +/datum/component/overlay_lighting/Initialize(_range, _power, _color, starts_on, is_directional, is_beam, force) if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE var/atom/movable/movable_parent = parent - if(movable_parent.light_system != OVERLAY_LIGHT && movable_parent.light_system != OVERLAY_LIGHT_DIRECTIONAL && movable_parent.light_system != OVERLAY_LIGHT_BEAM) + if(!force && movable_parent.light_system != OVERLAY_LIGHT && movable_parent.light_system != OVERLAY_LIGHT_DIRECTIONAL && movable_parent.light_system != OVERLAY_LIGHT_BEAM) stack_trace("[type] added to [parent], with [movable_parent.light_system] value for the light_system var. Use [OVERLAY_LIGHT], [OVERLAY_LIGHT_DIRECTIONAL] or [OVERLAY_LIGHT_BEAM] instead.") return COMPONENT_INCOMPATIBLE @@ -88,12 +88,14 @@ SET_PLANE_EXPLICIT(visible_mask, O_LIGHTING_VISUAL_PLANE, movable_parent) visible_mask.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM visible_mask.alpha = 0 + visible_mask.blend_mode = BLEND_ADD if(is_directional) directional = TRUE cone = image('icons/effects/light_overlays/light_cone.dmi', icon_state = "light") SET_PLANE_EXPLICIT(cone, O_LIGHTING_VISUAL_PLANE, movable_parent) cone.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM cone.alpha = 110 + cone.blend_mode = BLEND_ADD cone.transform = cone.transform.Translate(-32, -32) set_direction(movable_parent.dir) if(is_beam) @@ -389,6 +391,9 @@ var/new_power = source.light_power set_lum_power(new_power >= 0 ? 0.5 : -0.5) set_alpha = min(230, (abs(new_power) * 120) + 30) + visible_mask.blend_mode = new_power > 0 ? BLEND_ADD : BLEND_SUBTRACT + if(directional) + cone.blend_mode = new_power > 0 ? BLEND_ADD : BLEND_SUBTRACT if(current_holder && overlay_lighting_flags & LIGHTING_ON) current_holder.underlays -= visible_mask visible_mask.alpha = set_alpha diff --git a/code/datums/components/pet_commands/obeys_commands.dm b/code/datums/components/pet_commands/obeys_commands.dm index ceabd294faf..b50c63d590f 100644 --- a/code/datums/components/pet_commands/obeys_commands.dm +++ b/code/datums/components/pet_commands/obeys_commands.dm @@ -36,8 +36,8 @@ available_commands[new_command.command_name] = new_command /datum/component/obeys_commands/Destroy(force) - . = ..() - QDEL_NULL(available_commands) + QDEL_LIST_ASSOC_VAL(available_commands) + return ..() /datum/component/obeys_commands/RegisterWithParent() RegisterSignal(parent, COMSIG_LIVING_BEFRIENDED, PROC_REF(add_friend)) diff --git a/code/datums/components/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm index 5bf95b747e3..d3fd5f5ad87 100644 --- a/code/datums/components/plumbing/_plumbing.dm +++ b/code/datums/components/plumbing/_plumbing.dm @@ -188,8 +188,8 @@ overlay.dir = direction overlay.color = color - overlay.pixel_x = duct_x - overlay.pixel_y = duct_y + overlay.pixel_w = duct_x + overlay.pixel_z = duct_y overlays += overlay @@ -198,8 +198,8 @@ var/image/edge_overlay = image('icons/obj/pipes_n_cables/hydrochem/connects.dmi', "edge-extension", layer = duct_layer) edge_overlay.dir = parent_movable.dir edge_overlay.color = color - edge_overlay.pixel_x = -parent_movable.pixel_x - parent_movable.pixel_w - edge_overlay.pixel_y = -parent_movable.pixel_y - parent_movable.pixel_z + edge_overlay.pixel_w = -parent_movable.pixel_x - parent_movable.pixel_w + edge_overlay.pixel_z = -parent_movable.pixel_y - parent_movable.pixel_z overlays += edge_overlay // only show extension for the first pipe. This means we'll only reflect that color. extension_handled = TRUE diff --git a/code/datums/components/ranged_attacks.dm b/code/datums/components/ranged_attacks.dm index e60c3645206..4501db379ef 100644 --- a/code/datums/components/ranged_attacks.dm +++ b/code/datums/components/ranged_attacks.dm @@ -85,7 +85,7 @@ target_zone = ran_zone() casing.fire_casing(target, firer, null, null, null, target_zone, 0, firer) casing.update_appearance() - casing.AddElement(/datum/element/temporary_atom, 30 SECONDS) + casing.fade_into_nothing(30 SECONDS) SEND_SIGNAL(parent, COMSIG_BASICMOB_POST_ATTACK_RANGED, target, modifiers) return diff --git a/code/datums/components/riding/riding_minigame.dm b/code/datums/components/riding/riding_minigame.dm new file mode 100644 index 00000000000..a638804f90c --- /dev/null +++ b/code/datums/components/riding/riding_minigame.dm @@ -0,0 +1,266 @@ +#define STARTING_ARROW_POSITION -50 +#define ENDING_ARROW_POSITION 20 +#define VERTICAL_ARROW_HEIGHT 13 +#define HORIZONTAL_ARROW_HEIGHT 9 +#define FADE_AWAY_TIME 0.1 SECONDS +#define PING_GRACE 0.25 SECONDS + +//a simple minigame players must win to mount and tame a mob +/datum/riding_minigame + ///our host mob + var/datum/weakref/host + ///our current rider + var/datum/weakref/mounter + ///the total amount of tries the rider gets + var/maximum_attempts = 25 + ///maximum number of failures before we fail + var/current_attempts = 0 + ///required number of successes + var/required_successes = 11 + ///what failures are we on + var/current_failures = 0 + ///we win these + var/current_succeeded = 0 + ///holder of our heart counter + var/image/heart_counter + ///list of our hearts + var/list/hearts_list = list() + ///holder of our minigame! + var/image/minigame_holder + ///cached directional icons of our host + var/list/cached_arrows = list() + ///speed of our arrow + var/arrow_speed = 45 + ///time to linger + var/linger_time = 0.3 SECONDS + ///multiplier for easy settings + var/easy_difficulty_multiplier = 1.1 + ///multiplier for hard settings + var/hard_difficulty_multiplier = 0.9 + ///cooldown when we fail + COOLDOWN_DECLARE(failure_cooldown) + +/datum/riding_minigame/New(mob/living/ridden, mob/living/rider) + . = ..() + host = WEAKREF(ridden) + mounter = WEAKREF(rider) + set_difficulty(ridden, rider) + RegisterSignal(rider, COMSIG_MOB_UNBUCKLED, PROC_REF(lose_minigame)) + RegisterSignal(ridden, COMSIG_MOVABLE_ATTEMPTED_MOVE, PROC_REF(on_ridden_moved)) + minigame_holder = image(icon='icons/effects/effects.dmi', loc=rider,icon_state="nothing", layer = 0) + minigame_holder.pixel_w = 32 + heart_counter = image(icon='icons/effects/effects.dmi', loc=rider,icon_state="nothing", layer = 0) + heart_counter.pixel_z = -32 + SET_PLANE_EXPLICIT(minigame_holder, ABOVE_HUD_PLANE, rider) + SET_PLANE_EXPLICIT(heart_counter, ABOVE_HUD_PLANE, rider) + generate_heart_counter() + generate_visuals() + rider.client.images |= list(minigame_holder, heart_counter) + START_PROCESSING(SSprocessing, src) + +/datum/riding_minigame/proc/set_difficulty(mob/living/ridden, mob/living/rider) + if(HAS_TRAIT(rider, TRAIT_BEAST_EMPATHY) || HAS_TRAIT(ridden, TRAIT_MOB_EASY_TO_MOUNT)) + linger_time *= easy_difficulty_multiplier + if(HAS_TRAIT(ridden, TRAIT_MOB_DIFFICULT_TO_MOUNT)) + linger_time *= hard_difficulty_multiplier + +/datum/riding_minigame/proc/generate_visuals() + var/static/list/void_arrow_order = list( + "north", + "west", + "south", + "east", + ) + var/x_offset = 0 + for(var/direction in void_arrow_order) + var/obj/effect/overlay/vis/ride_minigame/new_arrow = new + new_arrow.icon = 'icons/effects/riding_minigame.dmi' + new_arrow.icon_state = "blank_arrow" + new_arrow.setDir(text2dir(direction)) + new_arrow.pixel_x = x_offset + new_arrow.pixel_y = ENDING_ARROW_POSITION + new_arrow.layer = ABOVE_ALL_MOB_LAYER + minigame_holder.vis_contents += new_arrow + cached_arrows[direction] = list("visual_object" = new_arrow, "is_active" = null) + x_offset += 16 + +/datum/riding_minigame/proc/generate_heart_counter() + var/x_offset = -32 + for(var/i in 1 to required_successes) + var/obj/effect/overlay/vis/ride_minigame/heart = new + heart.icon = 'icons/effects/effects.dmi' + heart.icon_state = "empty_heart" + heart.pixel_x = x_offset + x_offset += 8 + hearts_list += heart + heart_counter.vis_contents += heart + +/datum/riding_minigame/process() + if(current_attempts >= maximum_attempts) + lose_minigame() + return + if(prob(30)) //we shake and move uncontrollably! + var/mob/living/living_host = host.resolve() + living_host.Shake(pixelshiftx = 1, pixelshifty = 0, duration = 0.75 SECONDS) + living_host.spin(spintime = 0.75 SECONDS, speed = 1) + + generate_arrow() + +/datum/riding_minigame/proc/generate_arrow() + if(current_attempts >= maximum_attempts) + return + var/static/list/possible_arrows = list( + "north" = 0, + "west" = 16, + "south" = 32, + "east" = 48, + ) + + current_attempts++ + var/picked_arrow = pick(possible_arrows) + var/obj/effect/overlay/vis/ride_minigame/new_arrow = new + new_arrow.icon = 'icons/effects/riding_minigame.dmi' + new_arrow.icon_state = "[picked_arrow]_arrow" + new_arrow.alpha = 0 + new_arrow.layer = ABOVE_ALL_MOB_LAYER + 0.1 + new_arrow.pixel_x = possible_arrows[picked_arrow] + new_arrow.pixel_y = STARTING_ARROW_POSITION + minigame_holder.vis_contents += new_arrow + + animate(new_arrow, alpha = 255, time = 0.15 SECONDS) + animate(new_arrow, pixel_y = ENDING_ARROW_POSITION, time = ((ENDING_ARROW_POSITION - STARTING_ARROW_POSITION) / arrow_speed) SECONDS) + + addtimer(CALLBACK(src, PROC_REF(add_active_arrow), new_arrow, picked_arrow), ((ENDING_ARROW_POSITION - (STARTING_ARROW_POSITION + get_arrow_height(picked_arrow))) / arrow_speed) SECONDS) + +/datum/riding_minigame/proc/get_arrow_height(text_direction) + var/direction = text2dir(text_direction) + return NSCOMPONENT(direction) ? VERTICAL_ARROW_HEIGHT : HORIZONTAL_ARROW_HEIGHT + +/datum/riding_minigame/proc/add_active_arrow(atom/arrow, direction) + if(QDELETED(arrow)) + return + + if(!COOLDOWN_FINISHED(src, failure_cooldown)) + remove_active_arrow(arrow, direction) + return + + var/mob/living/rider = mounter?.resolve() + if(isnull(rider)) + return + var/client/rider_client = rider.client + if(isnull(rider_client)) + return + cached_arrows[direction]["is_active"] = arrow + RegisterSignal(arrow, COMSIG_QDELETING, PROC_REF(on_arrow_delete)) + var/distance_to_travel = get_arrow_height(direction) * 2 + var/time_of_grace = (distance_to_travel / arrow_speed) SECONDS + linger_time + PING_GRACE - FADE_AWAY_TIME + addtimer(CALLBACK(src, PROC_REF(remove_active_arrow), arrow, direction), time_of_grace) + +/datum/riding_minigame/proc/remove_active_arrow(atom/arrow, direction) + if(QDELETED(arrow)) + return + animate(arrow, alpha = 0, time = FADE_AWAY_TIME) + QDEL_IN(arrow, FADE_AWAY_TIME) + +/datum/riding_minigame/proc/on_arrow_delete(datum/source) + SIGNAL_HANDLER + for(var/arrow in cached_arrows) + var/list/arrow_details = cached_arrows[arrow] + if(arrow_details["is_active"] != source) + continue + arrow_details["is_active"] = null + +/datum/riding_minigame/proc/on_ridden_moved(atom/movable/source, atom/new_loc, direction) + SIGNAL_HANDLER + . = NONE + if(new_loc.z != source.z || !COOLDOWN_FINISHED(src, failure_cooldown)) + return + var/list/arrow_data = cached_arrows[dir2text(direction)] + var/atom/existing_arrow = arrow_data["is_active"] + + if(!QDELETED(existing_arrow)) + qdel(existing_arrow) + var/atom/arrow_object = arrow_data["visual_object"] + flick("blank_arrow_win", arrow_object) + increment_counter() + return + + for(var/arrow_direction in cached_arrows) + var/obj/my_arrow = cached_arrows[arrow_direction]["visual_object"] + if(isnull(my_arrow)) + continue + var/atom/clickable_arrow = cached_arrows[arrow_direction]["is_active"] + if(!QDELETED(clickable_arrow)) + qdel(clickable_arrow) + my_arrow.layer = ABOVE_ALL_MOB_LAYER + 0.2 + flick("blank_arrow_lose", my_arrow) + my_arrow.Shake(duration = 2 SECONDS) + addtimer(VARSET_CALLBACK(my_arrow, layer, ABOVE_ALL_MOB_LAYER), 2 SECONDS) + + increment_failure() + +/datum/riding_minigame/proc/increment_counter() + current_succeeded++ + var/obj/new_heart = hearts_list[current_succeeded] + new_heart.icon_state = "full_heart" + new_heart.transform = new_heart.transform.Scale(2 ,2) + animate(new_heart, transform = matrix(), time = 0.3 SECONDS) + if(current_succeeded >= required_successes) + win_minigame() + +/datum/riding_minigame/proc/increment_failure() + current_failures++ + COOLDOWN_START(src, failure_cooldown, 2 SECONDS) + if(current_failures > (maximum_attempts - required_successes)) + lose_minigame() + +/datum/riding_minigame/proc/lose_minigame() + SIGNAL_HANDLER + var/mob/living/living_host = host?.resolve() + var/mob/living/living_rider = mounter?.resolve() + if(isnull(living_host) || isnull(living_rider)) + qdel(src) + return + if(LAZYFIND(living_host.buckled_mobs, living_rider)) + UnregisterSignal(living_rider, COMSIG_MOB_UNBUCKLED) //we're about to knock them down! + living_host.spin(spintime = 2 SECONDS, speed = 1) + living_rider.Knockdown(4 SECONDS) + living_host.unbuckle_mob(living_rider) + living_host.balloon_alert(living_rider, "knocks you down!") + qdel(src) + +/datum/riding_minigame/proc/win_minigame() + var/mob/living/living_host = host?.resolve() + var/mob/living/living_rider = mounter?.resolve() + if(isnull(living_host) || isnull(living_rider)) + qdel(src) + return + living_host.befriend(living_rider) + living_host.balloon_alert(living_rider, "calms down...") + qdel(src) + +/datum/riding_minigame/Destroy() + STOP_PROCESSING(SSprocessing, src) + + var/mob/living/living_mounter = mounter?.resolve() + if(living_mounter) + living_mounter.client.images -= minigame_holder + living_mounter.client.images -= heart_counter + + mounter = null + host = null + hearts_list = null + cached_arrows = null + minigame_holder = null + heart_counter = null + return ..() + +/obj/effect/overlay/vis/ride_minigame + vis_flags = VIS_INHERIT_PLANE + +#undef STARTING_ARROW_POSITION +#undef ENDING_ARROW_POSITION +#undef VERTICAL_ARROW_HEIGHT +#undef HORIZONTAL_ARROW_HEIGHT +#undef FADE_AWAY_TIME +#undef PING_GRACE diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index fb88b97606d..ad9f9af9a6c 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -707,224 +707,3 @@ /datum/component/riding/creature/raptor/fast vehicle_move_delay = 1.5 - -//a simple minigame players must win to mount and tame a mob -/datum/riding_minigame - ///our host mob - var/datum/weakref/host - ///our current rider - var/datum/weakref/mounter - ///the total amount of tries the rider gets - var/maximum_attempts = 25 - ///maximum number of failures before we fail - var/current_attempts = 0 - ///required number of successes - var/required_successes = 11 - ///what failures are we on - var/current_failures = 0 - ///we win these - var/current_succeeded = 0 - ///holder of our heart counter - var/image/heart_counter - ///list of our hearts - var/list/hearts_list = list() - ///holder of our minigame! - var/image/minigame_holder - ///cached directional icons of our host - var/list/cached_arrows = list() - ///cooldown when we fail - COOLDOWN_DECLARE(failure_cooldown) - -/datum/riding_minigame/New(mob/living/ridden, mob/living/rider) - . = ..() - host = WEAKREF(ridden) - mounter = WEAKREF(rider) - RegisterSignal(rider, COMSIG_MOB_UNBUCKLED, PROC_REF(lose_minigame)) - RegisterSignal(ridden, COMSIG_MOVABLE_ATTEMPTED_MOVE, PROC_REF(on_ridden_moved)) - minigame_holder = image(icon='icons/effects/effects.dmi', loc=rider,icon_state="nothing", layer = 0, pixel_x = 32, pixel_y = 0) - heart_counter = image(icon='icons/effects/effects.dmi', loc=rider,icon_state="nothing", layer = 0, pixel_x = 0, pixel_y = -32) - SET_PLANE_EXPLICIT(minigame_holder, ABOVE_HUD_PLANE, rider) - SET_PLANE_EXPLICIT(heart_counter, ABOVE_HUD_PLANE, rider) - generate_heart_counter() - generate_visuals() - rider.client.images |= list(minigame_holder, heart_counter) - START_PROCESSING(SSprocessing, src) - -/datum/riding_minigame/proc/generate_visuals() - var/static/list/void_arrow_angles = list( - "north" = -90, - "west" = 180, - "south" = 90, - "east" = 0, - ) - var/x_offset = 0 - for(var/direction in void_arrow_angles) - var/obj/effect/overlay/vis/ride_minigame/new_arrow = new - new_arrow.icon = 'icons/effects/riding_minigame.dmi' - new_arrow.icon_state = "blank_arrow" - new_arrow.transform = new_arrow.transform.Turn(void_arrow_angles[direction]) - new_arrow.pixel_x = x_offset - new_arrow.layer = ABOVE_ALL_MOB_LAYER - minigame_holder.vis_contents += new_arrow - cached_arrows[direction] = list("visual_object" = new_arrow, "is_active" = null) - x_offset += 16 - -/datum/riding_minigame/proc/generate_heart_counter() - var/x_offset = -32 - for(var/i in 1 to required_successes) - var/obj/effect/overlay/vis/ride_minigame/heart = new - heart.icon = 'icons/effects/effects.dmi' - heart.icon_state = "empty_heart" - heart.pixel_x = x_offset - x_offset += 8 - hearts_list += heart - heart_counter.vis_contents += heart - -/datum/riding_minigame/process() - if(current_attempts >= maximum_attempts) - lose_minigame() - return - if(prob(30)) //we shake and move uncontrollably! - var/mob/living/living_host = host.resolve() - living_host.Shake(pixelshiftx = 1, pixelshifty = 0, duration = 0.75 SECONDS) - living_host.spin(spintime = 0.75 SECONDS, speed = 1) - - - - for(var/index in 0 to 1) - addtimer(CALLBACK(src, PROC_REF(generate_arrow)), 0.3 SECONDS * index) - -/datum/riding_minigame/proc/generate_arrow() - if(current_attempts >= maximum_attempts) - return - var/static/list/possible_arrows = list( - "north" = 0, - "west" = 16, - "south" = 32, - "east" = 48, - ) - current_attempts++ - var/picked_arrow = pick(possible_arrows) - var/obj/effect/overlay/vis/ride_minigame/new_arrow = new - new_arrow.icon = 'icons/effects/riding_minigame.dmi' - new_arrow.icon_state = "[picked_arrow]_arrow" - new_arrow.alpha = 0 - new_arrow.layer = ABOVE_ALL_MOB_LAYER + 0.1 - new_arrow.pixel_x = possible_arrows[picked_arrow] - new_arrow.pixel_y = -50 - minigame_holder.vis_contents += new_arrow - animate(new_arrow, alpha = 255, time = 0.15 SECONDS) - animate(new_arrow, pixel_y = 20, time = 1.4 SECONDS) - addtimer(CALLBACK(src, PROC_REF(add_active_arrow), new_arrow, picked_arrow), 0.9 SECONDS) - -/datum/riding_minigame/proc/add_active_arrow(atom/arrow, direction) - if(QDELETED(arrow)) - return - cached_arrows[direction]["is_active"] = arrow - RegisterSignal(arrow, COMSIG_QDELETING, PROC_REF(on_arrow_delete)) - addtimer(CALLBACK(src, PROC_REF(remove_active_arrow), arrow, direction), 0.2 SECONDS) - -/datum/riding_minigame/proc/remove_active_arrow(atom/arrow, direction) - if(QDELETED(arrow)) - return - animate(arrow, alpha = 0, time = 0.1 SECONDS) - QDEL_IN(arrow, 0.1 SECONDS) - -/datum/riding_minigame/proc/on_arrow_delete(datum/source) - SIGNAL_HANDLER - for(var/arrow in cached_arrows) - var/list/arrow_details = cached_arrows[arrow] - if(arrow_details["is_active"] != source) - continue - arrow_details["is_active"] = null - -/datum/riding_minigame/proc/on_ridden_moved(atom/movable/source, atom/new_loc, direction) - SIGNAL_HANDLER - . = NONE - if(new_loc.z != source.z || !COOLDOWN_FINISHED(src, failure_cooldown)) - return - var/list/arrow_data = cached_arrows[dir2text(direction)] - var/atom/existing_arrow = arrow_data["is_active"] - - if(!QDELETED(existing_arrow)) - qdel(existing_arrow) - var/atom/arrow_object = arrow_data["visual_object"] - flick("blank_arrow_win", arrow_object) - increment_counter() - return - - for(var/arrow_direction in cached_arrows) - var/obj/my_arrow = cached_arrows[arrow_direction]["visual_object"] - if(isnull(my_arrow)) - continue - flick("blank_arrow_lose", my_arrow) - my_arrow.Shake(duration = 2 SECONDS) - - increment_failure() - -/datum/riding_minigame/proc/increment_counter() - current_succeeded++ - var/obj/new_heart = hearts_list[current_succeeded] - new_heart.icon_state = "full_heart" - new_heart.transform = new_heart.transform.Scale(2 ,2) - animate(new_heart, transform = matrix(), time = 0.3 SECONDS) - if(current_succeeded >= required_successes) - win_minigame() - -/datum/riding_minigame/proc/increment_failure() - current_failures++ - COOLDOWN_START(src, failure_cooldown, 2 SECONDS) - if(current_failures > (maximum_attempts - required_successes)) - lose_minigame() - -/datum/riding_minigame/proc/lose_minigame() - SIGNAL_HANDLER - var/mob/living/living_host = host?.resolve() - var/mob/living/living_rider = mounter?.resolve() - if(isnull(living_host) || isnull(living_rider)) - qdel(src) - return - if(LAZYFIND(living_host.buckled_mobs, living_rider)) - UnregisterSignal(living_rider, COMSIG_MOB_UNBUCKLED) //we're about to knock them down! - living_host.spin(spintime = 2 SECONDS, speed = 1) - living_rider.Knockdown(4 SECONDS) - living_host.unbuckle_mob(living_rider) - living_host.balloon_alert(living_rider, "knocks you down!") - qdel(src) - -/datum/riding_minigame/proc/win_minigame() - var/mob/living/living_host = host?.resolve() - var/mob/living/living_rider = mounter?.resolve() - if(isnull(living_host) || isnull(living_rider)) - qdel(src) - return - living_host.befriend(living_rider) - living_host.balloon_alert(living_rider, "calms down...") - qdel(src) - -/datum/riding_minigame/Destroy() - STOP_PROCESSING(SSprocessing, src) - - var/mob/living/living_mounter = mounter?.resolve() - if(living_mounter) - living_mounter.client.images -= minigame_holder - living_mounter.client.images -= heart_counter - - mounter = null - host = null - hearts_list = null - cached_arrows = null - minigame_holder = null - heart_counter = null - return ..() - -/obj/effect/overlay/vis/ride_minigame - vis_flags = VIS_INHERIT_DIR | VIS_INHERIT_PLANE - - -//SKYRAT EDIT START: Human Riding Defines -#undef OVERSIZED_OFFSET -#undef OVERSIZED_SIDE_OFFSET -#undef REGULAR_OFFSET -#undef REGULAR_SIDE_OFFSET -//SKYRAT EDIT END diff --git a/code/datums/components/seclight_attachable.dm b/code/datums/components/seclight_attachable.dm index 6b3991c9c5e..b75723bb1f8 100644 --- a/code/datums/components/seclight_attachable.dm +++ b/code/datums/components/seclight_attachable.dm @@ -273,8 +273,8 @@ var/overlay_state = "[light_overlay][light.light_on ? "_on":""]" var/mutable_appearance/flashlight_overlay = mutable_appearance(light_overlay_icon, overlay_state) - flashlight_overlay.pixel_x = overlay_x - flashlight_overlay.pixel_y = overlay_y + flashlight_overlay.pixel_w = overlay_x + flashlight_overlay.pixel_z = overlay_y overlays += flashlight_overlay /// Signal proc for [COMSIG_ATOM_UPDATE_ICON_STATE] that updates our parent's icon state, if we have one. diff --git a/code/datums/components/space_allaergy.dm b/code/datums/components/space_allergy.dm similarity index 81% rename from code/datums/components/space_allaergy.dm rename to code/datums/components/space_allergy.dm index d1bc334ce1f..4d2a1b78fd0 100644 --- a/code/datums/components/space_allaergy.dm +++ b/code/datums/components/space_allergy.dm @@ -1,4 +1,4 @@ -/// Slowly kill the thing when iuts on a planet +/// Slowly kills the affected when they're on a planet. /datum/component/planet_allergy/Initialize(...) if(!isliving(parent)) return COMPONENT_INCOMPATIBLE @@ -9,6 +9,6 @@ SIGNAL_HANDLER if(is_on_a_planet(parent) && parent.has_gravity()) - parent.apply_status_effect(/datum/status_effect/planet_allergy) //your gamer body cant stand real gravity + parent.apply_status_effect(/datum/status_effect/planet_allergy) //your gamer body cant stand real gravity < Soul else parent.remove_status_effect(/datum/status_effect/planet_allergy) diff --git a/code/datums/components/space_camo.dm b/code/datums/components/space_camo.dm index 08b6c106494..50ccab7b181 100644 --- a/code/datums/components/space_camo.dm +++ b/code/datums/components/space_camo.dm @@ -8,6 +8,12 @@ var/reveal_after_combat /// The world time after we can camo again VAR_PRIVATE/next_camo + /// Image we show to our jaunter so they can see where they are + var/image/position_indicator + /// Icon we draw our position indicator from + var/phased_mob_icon = 'icons/obj/weapons/guns/projectiles.dmi' + /// Icon state we use for our position indicator + var/phased_mob_icon_state = "solarflare" /datum/component/space_camo/Initialize(space_alpha, non_space_alpha, reveal_after_combat) if(!ismovable(parent)) @@ -17,10 +23,36 @@ src.non_space_alpha = non_space_alpha src.reveal_after_combat = reveal_after_combat +/datum/component/space_camo/RegisterWithParent() RegisterSignal(parent, COMSIG_ATOM_ENTERING, PROC_REF(on_atom_entering)) + if(!isliving(parent)) + return - if(isliving(parent)) - RegisterSignals(parent, list(COMSIG_ATOM_WAS_ATTACKED, COMSIG_MOB_ITEM_ATTACK, COMSIG_LIVING_UNARMED_ATTACK, COMSIG_ATOM_BULLET_ACT, COMSIG_ATOM_REVEAL), PROC_REF(force_exit_camo)) + var/mob/living/living_parent = parent + position_indicator = image(phased_mob_icon, living_parent, phased_mob_icon_state, ABOVE_LIGHTING_PLANE) + SET_PLANE_EXPLICIT(position_indicator, ABOVE_LIGHTING_PLANE, living_parent) + position_indicator.appearance_flags |= RESET_ALPHA + position_indicator.alpha = 0 + + RegisterSignals(parent, list(COMSIG_ATOM_WAS_ATTACKED, COMSIG_MOB_ITEM_ATTACK, COMSIG_LIVING_UNARMED_ATTACK, COMSIG_ATOM_BULLET_ACT, COMSIG_ATOM_REVEAL), PROC_REF(force_exit_camo)) + RegisterSignal(parent, COMSIG_MOB_LOGIN, PROC_REF(show_client_image)) + show_client_image(parent) + +/datum/component/space_camo/UnregisterFromParent() + UnregisterSignal(parent, list( + COMSIG_ATOM_ENTERING, + COMSIG_ATOM_WAS_ATTACKED, + COMSIG_MOB_ITEM_ATTACK, + COMSIG_LIVING_UNARMED_ATTACK, + COMSIG_ATOM_BULLET_ACT, + COMSIG_ATOM_REVEAL, + COMSIG_MOB_LOGIN, + )) + remove_client_image(parent) + +/datum/component/space_camo/Destroy(force) + . = ..() + position_indicator = null /datum/component/space_camo/proc/on_atom_entering(atom/movable/entering, atom/entered) SIGNAL_HANDLER @@ -45,10 +77,22 @@ /datum/component/space_camo/proc/enter_camo(atom/movable/parent) if(parent.alpha != space_alpha) animate(parent, alpha = space_alpha, time = 0.5 SECONDS) + if (position_indicator) + animate(position_indicator, alpha = 255, time = 0.5 SECONDS) parent.remove_from_all_data_huds() parent.add_atom_colour(SSparallax.get_parallax_color(), TEMPORARY_COLOUR_PRIORITY) /datum/component/space_camo/proc/exit_camo(atom/movable/parent) animate(parent, alpha = non_space_alpha, time = 0.5 SECONDS) + if (position_indicator) + animate(position_indicator, alpha = 0, time = 0.5 SECONDS) parent.add_to_all_human_data_huds() parent.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY) + +/datum/component/space_camo/proc/show_client_image(mob/show_to) + SIGNAL_HANDLER + show_to.client?.images |= position_indicator + +/datum/component/space_camo/proc/remove_client_image(mob/remove_from) + SIGNAL_HANDLER + remove_from.client?.images -= position_indicator diff --git a/code/datums/components/space_dive.dm b/code/datums/components/space_dive.dm index bbbeb0bb168..3a172307aab 100644 --- a/code/datums/components/space_dive.dm +++ b/code/datums/components/space_dive.dm @@ -82,3 +82,4 @@ /obj/effect/dummy/phased_mob/space_dive movespeed = 1 + phased_mob_icon_state = "solarflare" diff --git a/code/datums/components/storm_hating.dm b/code/datums/components/storm_hating.dm index ce43ba73276..4060dc09a5e 100644 --- a/code/datums/components/storm_hating.dm +++ b/code/datums/components/storm_hating.dm @@ -43,5 +43,5 @@ var/atom/parent_atom = parent if (!isturf(parent_atom.loc)) return - parent.AddElement(/datum/element/temporary_atom, life_time = 3 SECONDS, fade_time = 2 SECONDS) + parent_atom.fade_into_nothing(life_time = 3 SECONDS, fade_time = 2 SECONDS) qdel(src) diff --git a/code/datums/components/style/style.dm b/code/datums/components/style/style.dm index 364db24212f..66d9235bf31 100644 --- a/code/datums/components/style/style.dm +++ b/code/datums/components/style/style.dm @@ -344,7 +344,7 @@ add_action(ACTION_MELEED, 50 * (ismegafauna(attacked) ? 1.5 : 1)) -/datum/component/style/proc/on_mine(datum/source, turf/closed/mineral/rock, give_exp) +/datum/component/style/proc/on_mine(datum/source, turf/closed/mineral/rock, exp_multiplier) SIGNAL_HANDLER if(istype(rock, /turf/closed/mineral/gibtonite)) @@ -363,11 +363,11 @@ return if(rock.mineralType) - if(give_exp) + if(exp_multiplier) add_action(ACTION_ORE_MINED, 40) rock.mineralAmt = ROUND_UP(rock.mineralAmt * (1 + ((rank * 0.1) - 0.3))) // You start out getting 20% less ore, but it goes up to 20% more at S-tier - else if(give_exp) + else if(exp_multiplier) add_action(ACTION_ROCK_MINED, 25) /datum/component/style/proc/on_resonator_burst(datum/source, mob/creator, mob/living/hit_living) diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm index b2c19f8c6a0..671044120c0 100644 --- a/code/datums/components/tackle.dm +++ b/code/datums/components/tackle.dm @@ -106,7 +106,7 @@ RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(checkObstacle)) playsound(user, 'sound/items/weapons/thudswoosh.ogg', 40, TRUE, -1) - var/leap_word = isfeline(user) || HAS_TRAIT(user, TRAIT_TACKLING_TAILED_POUNCE) ? "pounce" : "leap" //If cat, "pounce" instead of "leap". // SKYRAT EDIT - FELINE TRAITS. Was: isfelinid(user) + var/leap_word = isfeline(user) || HAS_TRAIT(user, TRAIT_TACKLING_TAILED_POUNCE) ? "pounce" : "leap" //If cat, "pounce" instead of "leap". // BUBBER EDIT - FELINE TRAITS. Was: isfelinid(user) if(can_see(user, clicked_atom, 7)) user.visible_message(span_warning("[user] [leap_word]s at [clicked_atom]!"), span_danger("You [leap_word] at [clicked_atom]!")) else @@ -610,9 +610,14 @@ if(windscreen_casualty.type in list(/obj/structure/window, /obj/structure/window/fulltile, /obj/structure/window/unanchored, /obj/structure/window/fulltile/unanchored)) // boring unreinforced windows for(var/i in 1 to speed) var/obj/item/shard/shard = new /obj/item/shard(get_turf(user)) - shard.set_embed(/datum/embedding/glass_candy) + var/datum/embedding/embed = shard.get_embed() + embed.embed_chance = 100 + embed.ignore_throwspeed_threshold = TRUE + embed.impact_pain_mult = 1 user.hitby(shard, skipcatch = TRUE, hitpush = FALSE) - shard.set_embed(initial(shard.embed_type)) + embed.embed_chance = initial(embed.embed_chance) + embed.ignore_throwspeed_threshold = initial(embed.ignore_throwspeed_threshold) + embed.impact_pain_mult = initial(embed.impact_pain_mult) windscreen_casualty.atom_destruction() user.adjustStaminaLoss(10 * speed) user.Paralyze(3 SECONDS) diff --git a/code/datums/components/throwbonus_on_windup.dm b/code/datums/components/throwbonus_on_windup.dm index 56e3de5cd81..f93109126d1 100644 --- a/code/datums/components/throwbonus_on_windup.dm +++ b/code/datums/components/throwbonus_on_windup.dm @@ -167,5 +167,5 @@ if(4 to 5) bar_color = "windup_purple" var/mutable_appearance/bar_overlay = mutable_appearance(icon = icon, icon_state = bar_color, layer = ABOVE_HUD_PLANE) - bar_overlay.pixel_y = bar_positions[curr_number] + bar_overlay.pixel_z = bar_positions[curr_number] . += bar_overlay diff --git a/code/datums/components/toggle_attached_clothing.dm b/code/datums/components/toggle_attached_clothing.dm index 8321119d85e..a1cde8cba63 100644 --- a/code/datums/components/toggle_attached_clothing.dm +++ b/code/datums/components/toggle_attached_clothing.dm @@ -48,7 +48,7 @@ if (!isitem(parent)) return COMPONENT_INCOMPATIBLE if (!deployable_type || !equipped_slot) - return COMPONENT_INCOMPATIBLE // Not strictly true but INITIALIZE_HINT_QDEL doesn't work from components + return COMPONENT_REDUNDANT src.deployable_type = deployable_type src.equipped_slot = equipped_slot src.destroy_on_removal = destroy_on_removal diff --git a/code/datums/datum.dm b/code/datums/datum.dm index c3c800bd85c..0dc21ab494d 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -79,6 +79,8 @@ #ifdef DATUMVAR_DEBUGGING_MODE var/list/cached_vars #endif + ///The layout pref we take from the player looking at this datum's UI to know what layout to give. + var/datum/preference/choiced/layout_prefs_used = /datum/preference/choiced/tgui_layout /** * Called when a href for this datum is clicked diff --git a/code/datums/diseases/advance/floor_diseases/carpellosis.dm b/code/datums/diseases/floor_diseases/carpellosis.dm similarity index 82% rename from code/datums/diseases/advance/floor_diseases/carpellosis.dm rename to code/datums/diseases/floor_diseases/carpellosis.dm index cdeb6051537..5f5fcb9051c 100644 --- a/code/datums/diseases/advance/floor_diseases/carpellosis.dm +++ b/code/datums/diseases/floor_diseases/carpellosis.dm @@ -1,11 +1,12 @@ #define GNASHING_RANGE 7 /// Caused by dirty food. Makes you growl at people and bite them spontaneously. -/datum/disease/advance/carpellosis +/datum/disease/carpellosis name = "Carpellosis" desc = "You have an angry space carp inside." form = "Parasite" agent = "Carp Ella" + cure_text = "Chlorine" cures = list(/datum/reagent/chlorine) viable_mobtypes = list(/mob/living/carbon/human) spread_flags = DISEASE_SPREAD_NON_CONTAGIOUS @@ -21,19 +22,7 @@ /// Whether the host has carp ability var/ability_granted = FALSE -/datum/disease/advance/carpellosis/New() - symptoms = list(new/datum/symptom/headache) - ..() - -/datum/disease/advance/carpellosis/generate_cure() - cures = list(pick(cures)) - var/datum/reagent/cure = GLOB.chemical_reagents_list[cures[1]] - cure_text = cure.name - -/datum/disease/advance/carpellosis/GetDiseaseID() - return "[type]" - -/datum/disease/advance/carpellosis/stage_act(seconds_per_tick, times_fired) +/datum/disease/carpellosis/stage_act(seconds_per_tick, times_fired) . = ..() if(!.) return @@ -62,12 +51,12 @@ else if(SPT_PROB(2, seconds_per_tick) && affected_mob.stat == CONSCIOUS) affected_mob.visible_message("gnashes.", visible_message_flags = EMOTE_MESSAGE) -/datum/disease/advance/carpellosis/Destroy() +/datum/disease/carpellosis/Destroy() if(ability_granted) QDEL_NULL(rift_ability) return ..() -/datum/disease/advance/carpellosis/cure(add_resistance = TRUE) +/datum/disease/carpellosis/cure(add_resistance = TRUE) if(ability_granted) rift_ability.Remove(affected_mob) if(max_stage_reached && prob(ella_spawn_chance)) @@ -75,7 +64,7 @@ new /mob/living/basic/carp/ella(affected_mob.loc) return ..() -/datum/disease/advance/carpellosis/proc/grant_ability() +/datum/disease/carpellosis/proc/grant_ability() if(ability_granted) return rift_ability = new(src) @@ -83,13 +72,13 @@ rift_ability.HideFrom(affected_mob) ability_granted = TRUE -/datum/disease/advance/carpellosis/proc/find_nearby_human() +/datum/disease/carpellosis/proc/find_nearby_human() var/list/surroundings = orange(GNASHING_RANGE, affected_mob) for(var/mob/human as anything in typecache_filter_list(surroundings, typecacheof(/mob/living/carbon/human))) if(human.stat != DEAD && !(HAS_TRAIT(human, TRAIT_FAKEDEATH))) return human -/datum/disease/advance/carpellosis/proc/gnash_someone() +/datum/disease/carpellosis/proc/gnash_someone() var/mob/living/carbon/human/target = find_nearby_human() if(isnull(target) || !affected_mob.get_bodypart(BODY_ZONE_HEAD)) // Need mouth to gnash to_chat(affected_mob, span_warning("You want to gnash at someone...")) diff --git a/code/datums/diseases/advance/floor_diseases/gastritium.dm b/code/datums/diseases/floor_diseases/gastritium.dm similarity index 78% rename from code/datums/diseases/advance/floor_diseases/gastritium.dm rename to code/datums/diseases/floor_diseases/gastritium.dm index 318810eabd5..dfa445a0648 100644 --- a/code/datums/diseases/advance/floor_diseases/gastritium.dm +++ b/code/datums/diseases/floor_diseases/gastritium.dm @@ -1,9 +1,10 @@ /// Caused by dirty food. Makes you burp out Tritium, sometimes burning hot! -/datum/disease/advance/gastritium +/datum/disease/gastritium name = "Gastritium" desc = "If left untreated, may manifest in severe Tritium heartburn." form = "Infection" agent = "Atmobacter Polyri" + cure_text = "Milk" cures = list(/datum/reagent/consumable/milk) viable_mobtypes = list(/mob/living/carbon/human) spread_flags = DISEASE_SPREAD_NON_CONTAGIOUS @@ -13,19 +14,7 @@ /// The chance of burped out tritium to be hot during max stage var/tritium_burp_hot_chance = 10 -/datum/disease/advance/gastritium/New() - symptoms = list(new/datum/symptom/fever) - ..() - -/datum/disease/advance/gastritium/generate_cure() - cures = list(pick(cures)) - var/datum/reagent/cure = GLOB.chemical_reagents_list[cures[1]] - cure_text = cure.name - -/datum/disease/advance/gastritium/GetDiseaseID() - return "[type]" - -/datum/disease/advance/gastritium/stage_act(seconds_per_tick, times_fired) +/datum/disease/gastritium/stage_act(seconds_per_tick, times_fired) . = ..() if(!.) return @@ -49,8 +38,10 @@ to_chat(affected_mob, span_warning("You feel like you're about to delam...")) else if(SPT_PROB(1, seconds_per_tick)) tritium_burp(hot_chance = TRUE) + var/change_limit = max(affected_mob.get_body_temp_heat_damage_limit() - 5 - affected_mob.get_body_temp_normal(apply_change=FALSE), 0) + affected_mob.add_body_temperature_change("gastritium", min(15 * stage, change_limit)) -/datum/disease/advance/gastritium/proc/tritium_burp(hot_chance = FALSE) +/datum/disease/gastritium/proc/tritium_burp(hot_chance = FALSE) var/datum/gas_mixture/burp = new ADD_GAS(/datum/gas/tritium, burp.gases) burp.gases[/datum/gas/tritium][MOLES] = MOLES_GAS_VISIBLE diff --git a/code/datums/diseases/advance/floor_diseases/nebula_nausea.dm b/code/datums/diseases/floor_diseases/nebula_nausea.dm similarity index 77% rename from code/datums/diseases/advance/floor_diseases/nebula_nausea.dm rename to code/datums/diseases/floor_diseases/nebula_nausea.dm index 4961d1afeef..85d7716a1d3 100644 --- a/code/datums/diseases/advance/floor_diseases/nebula_nausea.dm +++ b/code/datums/diseases/floor_diseases/nebula_nausea.dm @@ -1,9 +1,10 @@ /// Caused by dirty food. Makes you vomit stars. -/datum/disease/advance/nebula_nausea +/datum/disease/nebula_nausea name = "Nebula Nausea" desc = "You can't contain the colorful beauty of the cosmos inside." form = "Condition" agent = "Stars" + cure_text = "Space Cleaner" cures = list(/datum/reagent/space_cleaner) viable_mobtypes = list(/mob/living/carbon/human) spread_flags = DISEASE_SPREAD_NON_CONTAGIOUS @@ -11,18 +12,6 @@ required_organ = ORGAN_SLOT_STOMACH max_stages = 5 -/datum/disease/advance/nebula_nausea/New() - symptoms = list(new/datum/symptom/vomit/nebula) - ..() - -/datum/disease/advance/nebula_nausea/generate_cure() - cures = list(pick(cures)) - var/datum/reagent/cure = GLOB.chemical_reagents_list[cures[1]] - cure_text = cure.name - -/datum/disease/advance/nebula_nausea/GetDiseaseID() - return "[type]" - /datum/disease/advance/nebula_nausea/stage_act(seconds_per_tick, times_fired) . = ..() if(!.) @@ -41,3 +30,5 @@ if(5) if(SPT_PROB(1, seconds_per_tick) && affected_mob.stat == CONSCIOUS) to_chat(affected_mob, span_warning("Your stomach has become a turbulent nebula, swirling with kaleidoscopic patterns.")) + else + affected_mob.vomit(vomit_flags = (MOB_VOMIT_MESSAGE | MOB_VOMIT_HARM), vomit_type = /obj/effect/decal/cleanable/vomit/nebula, lost_nutrition = 10, distance = 2) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index f8424a865db..98ad9f17375 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -713,8 +713,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) ..() var/structure = dna.unique_identity skin_tone = GLOB.skin_tones[deconstruct_block(get_uni_identity_block(structure, DNA_SKIN_TONE_BLOCK), GLOB.skin_tones.len)] - eye_color_left = sanitize_hexcolor(get_uni_identity_block(structure, DNA_EYE_COLOR_LEFT_BLOCK)) - eye_color_right = sanitize_hexcolor(get_uni_identity_block(structure, DNA_EYE_COLOR_RIGHT_BLOCK)) + set_eye_color(sanitize_hexcolor(get_uni_identity_block(structure, DNA_EYE_COLOR_LEFT_BLOCK)), sanitize_hexcolor(get_uni_identity_block(structure, DNA_EYE_COLOR_RIGHT_BLOCK))) set_haircolor(sanitize_hexcolor(get_uni_identity_block(structure, DNA_HAIR_COLOR_BLOCK)), update = FALSE) set_facial_haircolor(sanitize_hexcolor(get_uni_identity_block(structure, DNA_FACIAL_HAIR_COLOR_BLOCK)), update = FALSE) set_hair_gradient_color(sanitize_hexcolor(get_uni_identity_block(structure, DNA_HAIR_COLOR_GRADIENT_BLOCK)), update = FALSE) diff --git a/code/datums/elements/death_drops.dm b/code/datums/elements/death_drops.dm index c02ba37cad7..02629daaf8d 100644 --- a/code/datums/elements/death_drops.dm +++ b/code/datums/elements/death_drops.dm @@ -25,9 +25,30 @@ ///signal called by the stat of the target changing /datum/element/death_drops/proc/on_death(mob/living/target, gibbed) SIGNAL_HANDLER + var/atom/loot_loc = target.drop_location() for(var/thing_to_spawn in loot) - if(loot[thing_to_spawn]) //If this is an assoc list, use the value of that to get the right amount - for(var/index in 1 to loot[thing_to_spawn]) - new thing_to_spawn(target.drop_location()) - else - new thing_to_spawn(target.drop_location()) + for(var/i in 1 to (loot[thing_to_spawn] || 1)) + create_loot(thing_to_spawn, loot_loc, target, gibbed) + +/// Handles creating the loots +/datum/element/death_drops/proc/create_loot(typepath, atom/loot_loc, mob/living/dead, gibbed) + if(ispath(typepath, /obj/effect/mob_spawn/corpse)) + handle_corpse(typepath, loot_loc, dead, gibbed) + return + + new typepath(loot_loc) + +/// Handles snowflake case of mob corpses +/datum/element/death_drops/proc/handle_corpse(typepath, atom/loot_loc, mob/living/dead, gibbed) + var/obj/effect/mob_spawn/corpse/spawner = new typepath(loot_loc, TRUE) + var/mob/living/body = spawner.create() + // done before the gib check so the bodyparts will be damaged + body.setBruteLoss(dead.getBruteLoss()) + body.setFireLoss(dead.getFireLoss()) + // if gibbed, dispose of the body + if(gibbed) + body.gib(DROP_ALL_REMAINS) + return + // otherwise continue with the rest of the damage types + body.setToxLoss(dead.getToxLoss()) + body.setOxyLoss(dead.getOxyLoss()) diff --git a/code/datums/elements/decals/blood.dm b/code/datums/elements/decals/blood.dm index 3d16df0c612..9410558a60a 100644 --- a/code/datums/elements/decals/blood.dm +++ b/code/datums/elements/decals/blood.dm @@ -1,35 +1,43 @@ /datum/element/decal/blood + /// Whenever the parent atom has a color filter applied to it, and thus needs additional overlay handling + var/uses_filter = FALSE -/datum/element/decal/blood/Attach(datum/target, _icon, _icon_state, _dir, _plane, _layer, _alpha, _color, _smoothing, _cleanable=CLEAN_TYPE_BLOOD, _description, mutable_appearance/_pic) - if(!isitem(target)) +/datum/element/decal/blood/Attach(datum/target, _icon, _icon_state, _dir, _plane, _layer, _alpha, _color, _smoothing, _cleanable=CLEAN_TYPE_BLOOD, _description, mutable_appearance/_pic, _uses_filter) + if (!isitem(target)) return ELEMENT_INCOMPATIBLE + var/obj/item/as_item = target + if (_uses_filter != !isnull(as_item.cached_color_filter)) + as_item.AddElement(type, _icon, _icon_state, _dir, _plane, _layer, _alpha, _color, _smoothing, _cleanable, _description, _pic, !isnull(as_item.cached_color_filter)) + return + + uses_filter = _uses_filter . = ..() - RegisterSignal(target, COMSIG_ATOM_GET_EXAMINE_NAME, PROC_REF(get_examine_name), TRUE) + RegisterSignal(as_item, COMSIG_ATOM_GET_EXAMINE_NAME, PROC_REF(get_examine_name), TRUE) + RegisterSignal(as_item, COMSIG_ATOM_COLOR_UPDATED, PROC_REF(on_color_update), TRUE) /datum/element/decal/blood/Detach(atom/source) - UnregisterSignal(source, COMSIG_ATOM_GET_EXAMINE_NAME) - if(isitem(source)) + UnregisterSignal(source, list(COMSIG_ATOM_GET_EXAMINE_NAME, COMSIG_ATOM_COLOR_UPDATED)) + if (isitem(source)) var/obj/item/source_item = source REMOVE_KEEP_TOGETHER(source_item, type) return ..() /datum/element/decal/blood/generate_appearance(_icon, _icon_state, _dir, _plane, _layer, _color, _alpha, _smoothing, source) - var/obj/item/I = source - ADD_KEEP_TOGETHER(I, type) - var/icon = I.icon - var/icon_state = I.icon_state - if(!icon || !icon_state) - // It's something which takes on the look of other items, probably - icon = I.icon - icon_state = I.icon_state - var/icon/icon_for_size = icon(icon, icon_state) + var/obj/item/as_item = source + ADD_KEEP_TOGETHER(as_item, type) + var/icon/icon_for_size = icon(as_item.icon, as_item.icon_state) var/scale_factor_x = icon_for_size.Width()/ICON_SIZE_X var/scale_factor_y = icon_for_size.Height()/ICON_SIZE_Y - var/mutable_appearance/blood_splatter = mutable_appearance('icons/effects/blood.dmi', "itemblood", appearance_flags = KEEP_APART|RESET_COLOR) //MA of the blood that we apply + var/mutable_appearance/blood_splatter = mutable_appearance('icons/effects/blood.dmi', "itemblood", appearance_flags = RESET_COLOR) //MA of the blood that we apply blood_splatter.transform = blood_splatter.transform.Scale(scale_factor_x, scale_factor_y) blood_splatter.blend_mode = BLEND_INSET_OVERLAY blood_splatter.color = _color + if (uses_filter) + blood_splatter.appearance_flags |= KEEP_APART + if (!as_item.render_target) + as_item.render_target = "blood_target_[REF(as_item)]" + blood_splatter.add_filter("blood_cutout", -1, alpha_mask_filter(render_source = as_item.render_target)) pic = blood_splatter return TRUE @@ -37,3 +45,13 @@ SIGNAL_HANDLER override[EXAMINE_POSITION_BEFORE] = "blood-stained" + +/datum/element/decal/blood/proc/on_color_update(obj/item/source, color_updated) + SIGNAL_HANDLER + + if (!color_updated || uses_filter == !isnull(source.cached_color_filter)) + return + + Detach(source) + source.AddElement(type, pic.icon, base_icon_state, directional, pic.plane, pic.layer, pic.alpha, pic.color, smoothing, cleanable, description, null, !isnull(source.cached_color_filter)) + return COMPONENT_CANCEL_COLOR_APPEARANCE_UPDATE diff --git a/code/datums/elements/door_pryer.dm b/code/datums/elements/door_pryer.dm index 3e2bd2c5a43..677b5527194 100644 --- a/code/datums/elements/door_pryer.dm +++ b/code/datums/elements/door_pryer.dm @@ -69,3 +69,4 @@ return attacker.visible_message(span_warning("[attacker] forces the [airlock_target] to open.")) airlock_target.open(BYPASS_DOOR_CHECKS) + airlock_target.take_damage(AIRLOCK_PRY_DAMAGE, BRUTE, sound_effect = FALSE) diff --git a/code/datums/elements/hat_wearer.dm b/code/datums/elements/hat_wearer.dm index 504a93f688e..068c9999f33 100644 --- a/code/datums/elements/hat_wearer.dm +++ b/code/datums/elements/hat_wearer.dm @@ -46,8 +46,8 @@ if(isnull(hat)) return var/mutable_appearance/hat_overlay = mutable_appearance(hat.worn_icon, hat.icon_state) - hat_overlay.pixel_x = offsets[1] - hat_overlay.pixel_y = offsets[2] + hat_overlay.pixel_w = offsets[1] + hat_overlay.pixel_z = offsets[2] overlays += hat_overlay /datum/element/hat_wearer/proc/exited(atom/movable/source, atom/movable/exited) diff --git a/code/datums/elements/immerse.dm b/code/datums/elements/immerse.dm index f5c1e755718..60b6d67eefd 100644 --- a/code/datums/elements/immerse.dm +++ b/code/datums/elements/immerse.dm @@ -189,13 +189,13 @@ GLOBAL_LIST_INIT(immerse_ignored_movable, typecacheof(list( var/last_i = width/ICON_SIZE_X for(var/i in -1 to last_i) var/mutable_appearance/underwater = mutable_appearance(icon, icon_state) - underwater.pixel_x = ICON_SIZE_X * i - extra_width - underwater.pixel_y = -ICON_SIZE_Y - extra_height + underwater.pixel_w = ICON_SIZE_X * i - extra_width + underwater.pixel_z = -ICON_SIZE_Y - extra_height overlay_appearance.overlays += underwater var/mutable_appearance/water_level = is_below_water ? underwater : mutable_appearance(immerse_icon) - water_level.pixel_x = ICON_SIZE_X * i - extra_width - water_level.pixel_y = -extra_height + water_level.pixel_w = ICON_SIZE_X * i - extra_width + water_level.pixel_z = -extra_height overlay_appearance.overlays += water_level diff --git a/code/datums/elements/movetype_handler.dm b/code/datums/elements/movetype_handler.dm index ed10a8825b8..bc12f76b42e 100644 --- a/code/datums/elements/movetype_handler.dm +++ b/code/datums/elements/movetype_handler.dm @@ -49,6 +49,8 @@ source.movement_type |= flag if(!(old_state & (FLOATING|FLYING)) && (source.movement_type & (FLOATING|FLYING)) && !HAS_TRAIT(source, TRAIT_NO_FLOATING_ANIM)) DO_FLOATING_ANIM(source) + if(source.movement_type & UPSIDE_DOWN) + ADD_TRAIT(source, TRAIT_IGNORE_ELEVATION, SOURCE_MOVETYPES) SEND_SIGNAL(source, COMSIG_MOVETYPE_FLAG_ENABLED, flag, old_state) /// Called when a movement type trait is removed from the movable. Disables the relative bitflag if it wasn't there in the compile-time bitfield. @@ -64,6 +66,8 @@ var/turf/pitfall = source.loc //Things that don't fly fall in open space. if(istype(pitfall)) pitfall.zFall(source) + if((old_state & UPSIDE_DOWN) && !(source.movement_type & UPSIDE_DOWN)) + REMOVE_TRAIT(source, TRAIT_IGNORE_ELEVATION, SOURCE_MOVETYPES) SEND_SIGNAL(source, COMSIG_MOVETYPE_FLAG_DISABLED, flag, old_state) /// Called when the TRAIT_NO_FLOATING_ANIM trait is added to the movable. Stops it from bobbing up and down. diff --git a/code/datums/elements/slapcrafting.dm b/code/datums/elements/slapcrafting.dm index 046a8668a29..b51fa24909f 100644 --- a/code/datums/elements/slapcrafting.dm +++ b/code/datums/elements/slapcrafting.dm @@ -108,8 +108,8 @@ var/error_string = craft_sheet.construct_item(user, actual_recipe) - if(!isatom(error_string)) - to_chat(user, span_warning("crafting failed" + error_string)) + if(istext(error_string)) + to_chat(user, span_warning("Crafting failed[error_string]")) /// Alerts any examiners to the recipe, if they wish to know more. /datum/element/slapcrafting/proc/get_examine_info(atom/source, mob/user, list/examine_list) diff --git a/code/datums/elements/temporary_atom.dm b/code/datums/elements/temporary_atom.dm deleted file mode 100644 index 6f91e8360b6..00000000000 --- a/code/datums/elements/temporary_atom.dm +++ /dev/null @@ -1,17 +0,0 @@ -/// Deletes the atom with a little fading out animation after a specified time -/datum/element/temporary_atom - -/datum/element/temporary_atom/Attach(datum/target, life_time = 5 SECONDS, fade_time = 3 SECONDS) - . = ..() - if (!isatom(target)) - return ELEMENT_INCOMPATIBLE - - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), WEAKREF(target)), life_time, TIMER_DELETE_ME) - if (life_time > fade_time && fade_time > 0) - addtimer(CALLBACK(src, PROC_REF(fade_out), WEAKREF(target), fade_time), life_time - fade_time, TIMER_DELETE_ME) - -/datum/element/temporary_atom/proc/fade_out(datum/weakref/target_ref, fade_time) - var/atom/target = target_ref?.resolve() - if (isnull(target)) - return - animate(target, alpha = 0, time = fade_time, flags = ANIMATION_PARALLEL) diff --git a/code/datums/elements/undertile.dm b/code/datums/elements/undertile.dm index 54c4ebab6cd..1f79c308fa7 100644 --- a/code/datums/elements/undertile.dm +++ b/code/datums/elements/undertile.dm @@ -51,7 +51,7 @@ if(PLANE_TO_TRUE(source.plane) != FLOOR_PLANE) // We do this so that turfs that allow you to see what's underneath them don't have to be on the game plane (which causes ambient occlusion weirdness) SET_PLANE_IMPLICIT(source, FLOOR_PLANE) - source.layer = ABOVE_OPEN_TURF_LAYER + source.layer = BELOW_CATWALK_LAYER ADD_TRAIT(source, TRAIT_UNDERFLOOR, REF(src)) diff --git a/code/datums/elements/wearable_client_colour.dm b/code/datums/elements/wearable_client_colour.dm index 8757dd1098c..d2fde7cffc4 100644 --- a/code/datums/elements/wearable_client_colour.dm +++ b/code/datums/elements/wearable_client_colour.dm @@ -6,6 +6,8 @@ var/datum/client_colour/colour_type ///The slot(s) that enable the client colour var/equip_slots = NONE + ///Source for the client colour + var/colour_source ///For items that want costumizable client colours var/custom_colour ///if forced is false, we check that the user has the TRAIT_SEE_WORN_COLOURS before adding the colour. @@ -13,7 +15,7 @@ ///On examine, it'll tell which you have to press to toggle TRAIT_SEE_WORN_COLOURS. var/key_info = "Figure it out yourself how" -/datum/element/wearable_client_colour/Attach(obj/item/target, colour_type, equip_slots, custom_colour, forced = FALSE, comsig_toggle = COMSIG_CLICK_ALT) +/datum/element/wearable_client_colour/Attach(obj/item/target, colour_type, equip_slots, colour_source, custom_colour, forced = FALSE, comsig_toggle = COMSIG_CLICK_ALT) . = ..() if(!isitem(target)) return ELEMENT_INCOMPATIBLE @@ -23,6 +25,7 @@ src.colour_type = colour_type src.equip_slots = equip_slots + src.colour_source = colour_source src.custom_colour = custom_colour src.forced = forced @@ -90,19 +93,19 @@ var/datum/client_colour/colour_to_add = colour_type if(custom_colour) colour_to_add = new colour_to_add - colour_to_add.colour = custom_colour - equipper.add_client_colour(colour_to_add) + colour_to_add.color = custom_colour + equipper.add_client_colour(colour_to_add, colour_source) /datum/element/wearable_client_colour/proc/on_trait_removed(mob/source, trait) SIGNAL_HANDLER - source.remove_client_colour(colour_type) + source.remove_client_colour(colour_source) /datum/element/wearable_client_colour/proc/remove_client_colour(mob/dropper) if(!forced) UnregisterSignal(dropper, list(SIGNAL_ADDTRAIT(TRAIT_SEE_WORN_COLOURS), SIGNAL_REMOVETRAIT(TRAIT_SEE_WORN_COLOURS))) if(!HAS_TRAIT(dropper, TRAIT_SEE_WORN_COLOURS)) return - dropper.remove_client_colour(colour_type) + dropper.remove_client_colour(colour_source) /datum/element/wearable_client_colour/proc/toggle_see_worn_colors(obj/item/source, mob/clicker) SIGNAL_HANDLER diff --git a/code/datums/embedding.dm b/code/datums/embedding.dm index f52b01bec5a..b83aa4d1430 100644 --- a/code/datums/embedding.dm +++ b/code/datums/embedding.dm @@ -35,6 +35,10 @@ var/pain_stam_pct = 0 /// Traits which make target immune to us embedding into them, any trait from the list works var/list/immune_traits = list(TRAIT_PIERCEIMMUNE) + /// The embed doesn't show up on examine, only on health analyzers. + /// (Note: This means you can't rip it out) + /// It will also hide its name (and downplay its severity) when referring to in messages. + var/stealthy_embed = FALSE /// Thing that we're attached to VAR_FINAL/obj/item/parent @@ -85,6 +89,7 @@ brother.jostle_pain_mult = jostle_pain_mult brother.pain_stam_pct = pain_stam_pct brother.immune_traits = immune_traits.Copy() + brother.stealthy_embed = stealthy_embed return brother ///Someone inspected our embeddable item @@ -222,12 +227,13 @@ var/damage = parent.throwforce if (!is_harmless(consider_stamina = TRUE)) - owner.throw_alert(ALERT_EMBEDDED_OBJECT, /atom/movable/screen/alert/embeddedobject) + if(!stealthy_embed) + owner.throw_alert(ALERT_EMBEDDED_OBJECT, /atom/movable/screen/alert/embeddedobject) + owner.add_mood_event("embedded", /datum/mood_event/embedded) if (!is_harmless()) playsound(owner,'sound/items/weapons/bladeslice.ogg', 40) if (owner_limb.can_bleed()) parent.add_mob_blood(owner) // it embedded itself in you, of course it's bloody! - owner.add_mood_event("embedded", /datum/mood_event/embedded) damage += parent.w_class * impact_pain_mult SEND_SIGNAL(parent, COMSIG_ITEM_EMBEDDED, victim, target_limb) @@ -397,7 +403,10 @@ damagetype = STAMINA, ) - to_chat(owner, span_userdanger("[parent] embedded in your [owner_limb.plaintext_zone] jostles and stings!")) + if(stealthy_embed) + to_chat(owner, span_danger("Something in your [owner_limb.plaintext_zone] jostles and stings!")) + else + to_chat(owner, span_userdanger("[parent] embedded in your [owner_limb.plaintext_zone] jostles and stings!")) jostle_effects() /// Effects which should occur when the owner moves, sometimes @@ -465,8 +474,10 @@ damage = pain_stam_pct * damage, damagetype = STAMINA, ) - - to_chat(owner, span_userdanger("[parent] embedded in your [owner_limb.plaintext_zone] [pain_stam_pct < 1 ? "hurts!" : "weighs you down."]")) + if(stealthy_embed) + to_chat(owner, span_danger("Something in your [owner_limb.plaintext_zone] [pain_stam_pct < 1 ? "hurts!" : "weighs you down."]")) + else + to_chat(owner, span_userdanger("[parent] embedded in your [owner_limb.plaintext_zone] [pain_stam_pct < 1 ? "hurts!" : "weighs you down."]")) /// Called every process, return TRUE in order to abort further processing - if it falls out, etc /datum/embedding/proc/process_effect(seconds_per_tick) @@ -513,8 +524,8 @@ /// Called when then item randomly falls out of a carbon. This handles the damage and descriptors, then calls remove_embedding() /datum/embedding/proc/fall_out() if(is_harmless()) - owner.visible_message(span_danger("[parent] falls off of [owner.name]'s [owner_limb.plaintext_zone]!"), - span_userdanger("[parent] falls off of your [owner_limb.plaintext_zone]!")) + owner.visible_message(span_warning("[parent] falls off of [owner.name]'s [owner_limb.plaintext_zone]!"), + span_warning("[parent] falls off of your [owner_limb.plaintext_zone]!")) remove_embedding() return diff --git a/code/datums/greyscale/_greyscale_config.dm b/code/datums/greyscale/_greyscale_config.dm index fb878776d3f..1367ab747b0 100644 --- a/code/datums/greyscale/_greyscale_config.dm +++ b/code/datums/greyscale/_greyscale_config.dm @@ -30,6 +30,9 @@ /// The md5 file hash for the json configuration. Used to check if the file has changed var/json_config_hash + /// The raw string contents of the JSON config file. + var/raw_json_string + /// String path to the icon file, used for reloading var/string_icon_file @@ -113,13 +116,13 @@ var/changed = FALSE json_config = file(string_json_config) - var/json_hash = md5asfile(json_config) + var/json_hash = rustg_hash_file("md5", string_json_config) if(json_config_hash != json_hash) json_config_hash = json_hash changed = TRUE icon_file = file(string_icon_file) - var/icon_hash = md5asfile(icon_file) + var/icon_hash = rustg_hash_file("md5", icon_file) if(icon_file_hash != icon_hash) icon_file_hash = icon_hash changed = TRUE @@ -131,7 +134,8 @@ if(!changed) return FALSE - var/list/raw = json_decode(file2text(json_config)) + raw_json_string = rustg_file_read(string_json_config) + var/list/raw = json_decode(raw_json_string) ReadIconStateConfiguration(raw) if(!length(icon_states)) diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm index 83491e77907..f9a2c25d8f3 100644 --- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm +++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm @@ -830,3 +830,12 @@ SKYRAT EDIT END */ /datum/greyscale_config/jester_hat/worn name = "Jester Hat (Worn)" icon_file = 'icons/mob/clothing/head/costume.dmi' + +/datum/greyscale_config/fedora + name = "Fedora" + icon_file = 'icons/obj/clothing/head/hats.dmi' + json_config = 'code/datums/greyscale/json_configs/fedora.json' + +/datum/greyscale_config/fedora/worn + name = "Fedora (Worn)" + icon_file = 'icons/mob/clothing/head/hats.dmi' diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_effects.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_effects.dm index 91cfb618c21..4d55a21963f 100644 --- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_effects.dm +++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_effects.dm @@ -3,7 +3,7 @@ icon_file = 'icons/effects/96x96.dmi' json_config = 'code/datums/greyscale/json_configs/heretic_rune.json' -/datum/greyscale_config/manipulator_hand - name = "Manipulator Hand" +/datum/greyscale_config/manipulator_arm + name = "Manipulator Arm" icon_file = 'icons/obj/machines/big_manipulator_parts/big_manipulator_hand.dmi' json_config = 'code/datums/greyscale/json_configs/manipulator_hand.json' diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_objects.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_objects.dm index 9556612be18..4f17ad5ae57 100644 --- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_objects.dm +++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_objects.dm @@ -122,6 +122,11 @@ icon_file = 'icons/obj/pipes_n_cables/stationary_canisters.dmi' json_config = 'code/datums/greyscale/json_configs/smooth_canister_stationary.json' +/datum/greyscale_config/stationary_canister_overlays + name = "Stationary Canister" + icon_file = 'icons/obj/pipes_n_cables/stationary_canisters_misc.dmi' + json_config = 'code/datums/greyscale/json_configs/smooth_canister_stationary_overlays.json' + // MISC ATMOSPHERICS /datum/greyscale_config/meter name = "Meter" diff --git a/code/datums/greyscale/json_configs/fedora.json b/code/datums/greyscale/json_configs/fedora.json new file mode 100644 index 00000000000..2b7f6d0f89f --- /dev/null +++ b/code/datums/greyscale/json_configs/fedora.json @@ -0,0 +1,16 @@ +{ + "fedora_greyscale": [ + { + "type": "icon_state", + "icon_state": "fedora_base", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "fedora_sash", + "blend_mode": "overlay", + "color_ids": [ 2 ] + } + ] +} diff --git a/code/datums/greyscale/json_configs/smooth_canister_stationary.json b/code/datums/greyscale/json_configs/smooth_canister_stationary.json index df01ce1e6d2..62e97d22f76 100644 --- a/code/datums/greyscale/json_configs/smooth_canister_stationary.json +++ b/code/datums/greyscale/json_configs/smooth_canister_stationary.json @@ -1,184 +1,376 @@ { - "smooth": [ + "canister-0": [ { "type": "icon_state", - "icon_state": "smooth", + "icon_state": "canister-0", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "window-fg": [ + "canister-1": [ { "type": "icon_state", - "icon_state": "window-fg", + "icon_state": "canister-1", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "window-bg": [ + "canister-2": [ { "type": "icon_state", - "icon_state": "window-bg", + "icon_state": "canister-2", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "1-i": [ + "canister-3": [ { "type": "icon_state", - "icon_state": "1-i", + "icon_state": "canister-3", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "2-i": [ + "canister-4": [ { "type": "icon_state", - "icon_state": "2-i", + "icon_state": "canister-4", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "3-i": [ + "canister-5": [ { "type": "icon_state", - "icon_state": "3-i", + "icon_state": "canister-5", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "4-i": [ + "canister-6": [ { "type": "icon_state", - "icon_state": "4-i", + "icon_state": "canister-6", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "1-n": [ + "canister-7": [ { "type": "icon_state", - "icon_state": "1-n", + "icon_state": "canister-7", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "2-n": [ + "canister-8": [ { "type": "icon_state", - "icon_state": "2-n", + "icon_state": "canister-8", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "3-s": [ + "canister-9": [ { "type": "icon_state", - "icon_state": "3-s", + "icon_state": "canister-9", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "4-s": [ + "canister-10": [ { "type": "icon_state", - "icon_state": "4-s", + "icon_state": "canister-10", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "1-w": [ + "canister-11": [ { "type": "icon_state", - "icon_state": "1-w", + "icon_state": "canister-11", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "2-e": [ + "canister-12": [ { "type": "icon_state", - "icon_state": "2-e", + "icon_state": "canister-12", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "3-w": [ + "canister-13": [ { "type": "icon_state", - "icon_state": "3-w", + "icon_state": "canister-13", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "4-e": [ + "canister-14": [ { "type": "icon_state", - "icon_state": "4-e", + "icon_state": "canister-14", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "1-nw": [ + "canister-15": [ { "type": "icon_state", - "icon_state": "1-nw", + "icon_state": "canister-15", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "2-ne": [ + "canister-21": [ { "type": "icon_state", - "icon_state": "2-ne", + "icon_state": "canister-21", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "3-sw": [ + "canister-23": [ { "type": "icon_state", - "icon_state": "3-sw", + "icon_state": "canister-23", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "4-se": [ + "canister-29": [ { "type": "icon_state", - "icon_state": "4-se", + "icon_state": "canister-29", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "1-f": [ + "canister-31": [ { "type": "icon_state", - "icon_state": "1-f", + "icon_state": "canister-31", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "2-f": [ + "canister-38": [ { "type": "icon_state", - "icon_state": "2-f", + "icon_state": "canister-38", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "3-f": [ + "canister-39": [ { "type": "icon_state", - "icon_state": "3-f", + "icon_state": "canister-39", "blend_mode": "overlay", "color_ids": [ 1 ] } ], - "4-f": [ + "canister-46": [ { "type": "icon_state", - "icon_state": "4-f", + "icon_state": "canister-46", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-47": [ + { + "type": "icon_state", + "icon_state": "canister-47", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-55": [ + { + "type": "icon_state", + "icon_state": "canister-55", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-63": [ + { + "type": "icon_state", + "icon_state": "canister-63", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-74": [ + { + "type": "icon_state", + "icon_state": "canister-74", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-75": [ + { + "type": "icon_state", + "icon_state": "canister-75", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-78": [ + { + "type": "icon_state", + "icon_state": "canister-78", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-79": [ + { + "type": "icon_state", + "icon_state": "canister-79", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-95": [ + { + "type": "icon_state", + "icon_state": "canister-95", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-110": [ + { + "type": "icon_state", + "icon_state": "canister-110", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-111": [ + { + "type": "icon_state", + "icon_state": "canister-111", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-127": [ + { + "type": "icon_state", + "icon_state": "canister-127", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-137": [ + { + "type": "icon_state", + "icon_state": "canister-137", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-139": [ + { + "type": "icon_state", + "icon_state": "canister-139", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-141": [ + { + "type": "icon_state", + "icon_state": "canister-141", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-143": [ + { + "type": "icon_state", + "icon_state": "canister-143", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-157": [ + { + "type": "icon_state", + "icon_state": "canister-157", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-159": [ + { + "type": "icon_state", + "icon_state": "canister-159", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-175": [ + { + "type": "icon_state", + "icon_state": "canister-175", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-191": [ + { + "type": "icon_state", + "icon_state": "canister-191", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-203": [ + { + "type": "icon_state", + "icon_state": "canister-203", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-207": [ + { + "type": "icon_state", + "icon_state": "canister-207", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-223": [ + { + "type": "icon_state", + "icon_state": "canister-223", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-239": [ + { + "type": "icon_state", + "icon_state": "canister-239", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "canister-255": [ + { + "type": "icon_state", + "icon_state": "canister-255", "blend_mode": "overlay", "color_ids": [ 1 ] } diff --git a/code/datums/greyscale/json_configs/smooth_canister_stationary_overlays.json b/code/datums/greyscale/json_configs/smooth_canister_stationary_overlays.json new file mode 100644 index 00000000000..6dc7e73c32b --- /dev/null +++ b/code/datums/greyscale/json_configs/smooth_canister_stationary_overlays.json @@ -0,0 +1,18 @@ +{ + "window-fg": [ + { + "type": "icon_state", + "icon_state": "window-fg", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "window-bg": [ + { + "type": "icon_state", + "icon_state": "window-bg", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/http.dm b/code/datums/http.dm index 8665b351ab7..080ca37a9d1 100644 --- a/code/datums/http.dm +++ b/code/datums/http.dm @@ -9,9 +9,12 @@ /// If present response body will be saved to this file. var/output_file + /// If present request will timeout after this duration + var/timeout_seconds + var/_raw_response -/datum/http_request/proc/prepare(method, url, body = "", list/headers, output_file) +/datum/http_request/proc/prepare(method, url, body = "", list/headers, output_file, timeout_seconds) if (!length(headers)) headers = "" else @@ -22,6 +25,7 @@ src.body = body src.headers = headers src.output_file = output_file + src.timeout_seconds = timeout_seconds /datum/http_request/proc/execute_blocking() _raw_response = rustg_http_request_blocking(method, url, body, headers, build_options()) @@ -39,9 +43,10 @@ in_progress = TRUE /datum/http_request/proc/build_options() - if(output_file) - return json_encode(list("output_filename"=output_file,"body_filename"=null)) - return null + return json_encode(list( + "output_filename"=(output_file ? output_file : null), + "body_filename"=null, + "timeout_seconds"=(timeout_seconds ? timeout_seconds : null))) /datum/http_request/proc/is_complete() if (isnull(id)) diff --git a/code/datums/id_trim/ruins.dm b/code/datums/id_trim/ruins.dm index b6f6422393c..6664058ce96 100644 --- a/code/datums/id_trim/ruins.dm +++ b/code/datums/id_trim/ruins.dm @@ -187,9 +187,3 @@ /datum/id_trim/away/director assignment = "Director" - -//Lizard Gas Station ID -/datum/id_trim/away/lizardgas - assignment = "Lizard Gas Employee" - access = list(ACCESS_FACTION_PUBLIC) - big_pointer = TRUE diff --git a/code/datums/martial/_martial.dm b/code/datums/martial/_martial.dm index 8475c9e43f9..59e6856e36d 100644 --- a/code/datums/martial/_martial.dm +++ b/code/datums/martial/_martial.dm @@ -4,22 +4,22 @@ /// ID of the martial art var/id = "" /// The streak of attacks the user has performed - var/streak = "" + VAR_FINAL/streak = "" /// The maximum length of streaks allowed var/max_streak_length = 6 + /// Are we being actively used by a mob? + var/active = FALSE + /// Where this martial art is from, sometimes the same as the holder if it's tied to them + /// If the origin is deleted, this martial art will be too. + VAR_PRIVATE/datum/origin /// The current mob associated with this martial art datum. Do not set directly. VAR_PRIVATE/mob/living/holder /// Weakref to the last mob we attacked, for determining when to reset streaks VAR_PRIVATE/datum/weakref/current_target - /// Used for temporary martial arts. - /// This is a reference to the last martial art that was replaced by this one. - VAR_PRIVATE/datum/martial_art/base /// Path to verb to display help text for this martial art. var/help_verb - /// If TRUE, this martial art can be overridden and stored (via base) by other martial arts if deemed "temporary" via teach(). - var/allow_temp_override = TRUE /// If TRUE, this martial art smashes tables when performing table slams and head smashes var/smashes_tables = FALSE /// If TRUE, a combo meter will be displayed on the HUD for the current streak @@ -30,11 +30,9 @@ var/timerid /// If TRUE, this style allows you to punch people despite being a pacifist (IE: Boxing, which does no damage) var/pacifist_style = FALSE - -/datum/martial_art/Destroy() - if(!isnull(holder)) - remove(holder) - return ..() + /// If TRUE, the user is locked to using this martial art, and can't swap to other ones they know. + /// If the mob has two locked martial arts, it's first come first serve. + var/locked_to_use = FALSE /datum/martial_art/serialize_list(list/options, list/semvers) . = ..() @@ -46,6 +44,33 @@ SET_SERIALIZATION_SEMVER(semvers, "1.0.0") return . +/datum/martial_art/New(datum/new_origin) + set_origin(new_origin) + +/datum/martial_art/Destroy() + if(!isnull(holder)) + unlearn(holder) + if(!isnull(origin)) + set_origin(null) + return ..() + +/datum/martial_art/proc/set_origin(datum/new_origin) + if(origin) + UnregisterSignal(origin, COMSIG_QDELETING) + origin = null + if(isnull(new_origin)) + return + src.origin = new_origin + RegisterSignal(origin, COMSIG_QDELETING, PROC_REF(clear_origin)) + +/datum/martial_art/proc/clear_origin() + SIGNAL_HANDLER + qdel(src) + +/datum/martial_art/proc/clear_holder(datum/source) + SIGNAL_HANDLER + unlearn(holder) + /// Signal proc for [COMSIG_LIVING_UNARMED_ATTACK] to hook into the appropriate proc /datum/martial_art/proc/unarmed_strike(mob/living/source, atom/attack_target, proximity, modifiers) SIGNAL_HANDLER @@ -222,141 +247,132 @@ if(display_combos && update_icon) holder.hud_used?.combo_display.update_icon_state(streak) +/datum/martial_art/proc/smash_table(mob/living/source, mob/living/pushed_mob, obj/structure/table/table) + SIGNAL_HANDLER + if(smashes_tables) + table.deconstruct(FALSE) + /** * Teaches the passed mob this martial art. * * Arguments * * mob/living/new_holder - The mob to teach this martial art to. - * * make_temporary - If FALSE, this martial art will completely replace any existing martial arts. - * If TRUE, any existing martial art will be stored in the base variable, and will be restored when this martial art is removed. - * This can only occur if allow_temp_override is TRUE. * * Returns * * TRUE - The martial art was successfully taught. * * FALSE - The mob failed to learn the martial art, for whatever reason. */ -/datum/martial_art/proc/teach(mob/living/new_holder, make_temporary = FALSE) - SHOULD_CALL_PARENT(TRUE) +/datum/martial_art/proc/teach(mob/living/new_holder) + SHOULD_NOT_OVERRIDE(TRUE) - if(!istype(new_holder) || isnull(new_holder.mind)) + if(!can_teach(new_holder) || holder == new_holder) return FALSE - var/datum/martial_art/existing_martial = new_holder.mind.martial_art - if(!isnull(existing_martial)) - if(make_temporary && !existing_martial.allow_temp_override) - return FALSE - - if(!isnull(existing_martial.base)) - store_martial_art(existing_martial.base) - existing_martial.unstore_martial_art() - else if(make_temporary) - store_martial_art(existing_martial) - - // Nulls out any existing martial art, it'll get GC'd if nothing owns it - existing_martial.remove(new_holder) - - new_holder.mind.martial_art = src holder = new_holder - on_teach(new_holder) + if(origin != new_holder) + RegisterSignal(holder, COMSIG_QDELETING, PROC_REF(clear_holder)) + // locked martial arts always get inserted as the next up + // (so if you learn two locked martial arts, and you get rid of the first, the second will slot itself in) + if(locked_to_use && LAZYLEN(new_holder.martial_arts) >= 2) + LAZYINSERT(new_holder.martial_arts, 2, src) + else + LAZYADD(new_holder.martial_arts, src) + if(LAZYLEN(new_holder.martial_arts) >= 2) + // newly learned martials are preferred to be the active one + add_verb(new_holder, /mob/living/proc/verb_switch_style) + // if the active one is locked, this will no-op, which is fine + new_holder.switch_style(GET_ACTIVE_MARTIAL_ART(new_holder), src) + else if(!active) + activate_style(new_holder) return TRUE -/// Stores the passed martial art in the base var. -/datum/martial_art/proc/store_martial_art(datum/martial_art/martial) - if(!isnull(base)) - UnregisterSignal(base, COMSIG_QDELETING) - - base = martial - RegisterSignal(base, COMSIG_QDELETING, PROC_REF(base_deleted)) - -/// Unstores the base var. -/datum/martial_art/proc/unstore_martial_art() - UnregisterSignal(base, COMSIG_QDELETING) - base = null - -/datum/martial_art/proc/base_deleted(datum/source) - SIGNAL_HANDLER - base = null +/** + * Checks if the passed mob can be taught this martial art. + * + * Arguments + * * mob/living/new_holder - The mob to check + * + * Returns + * * TRUE - The mob can be taught this martial art + * * FALSE - The mob cannot be taught this martial art + */ +/datum/martial_art/proc/can_teach(mob/living/new_holder) + return isliving(new_holder) /** - * Removes this martial art from the passed mob AND their mind. + * Removes this martial art from the passed mob. * * Arguments * * mob/living/old_holder - The mob to remove this martial art from. */ -/datum/martial_art/proc/remove(mob/living/old_holder) - SHOULD_CALL_PARENT(TRUE) +/datum/martial_art/proc/unlearn(mob/living/old_holder) + SHOULD_NOT_OVERRIDE(TRUE) - ASSERT(old_holder == holder) - ASSERT(old_holder.mind.martial_art == src) - - on_remove(old_holder) - old_holder.mind.martial_art = null - if(!isnull(base)) - base.teach(old_holder) - unstore_martial_art() - holder = null - -/** - * A helper proc to remove the martial art from the passed mob fully, e - * ven if stored in another martial art's base. - * - * Arguments - * * mob/living/maybe_holder - The mob to check. - * - * Returns - * * TRUE - If the martial art was removed in some way - * * FALSE - If nothing happened - */ -/datum/martial_art/proc/fully_remove(mob/living/maybe_holder) - var/datum/martial_art/holder_art = maybe_holder.mind?.martial_art - if(isnull(holder_art)) + if(old_holder != holder) return FALSE - if(holder_art == src) - remove(maybe_holder) - return TRUE - - if(holder_art.base == src) - holder_art.unstore_martial_art() - return TRUE - - return FALSE + if(LAZYLEN(old_holder.martial_arts) >= 2 && !QDELING(old_holder)) + old_holder.switch_style(src, GET_NEXT_MARTIAL_ART(old_holder)) + else if(active) + deactivate_style(old_holder) + if(origin != old_holder) + UnregisterSignal(old_holder, COMSIG_QDELETING) + LAZYREMOVE(old_holder.martial_arts, src) + holder = null + if(LAZYLEN(old_holder.martial_arts) <= 1) + remove_verb(old_holder, /mob/living/proc/verb_switch_style) + return TRUE /** * Called when this martial art is added to a mob. */ -/datum/martial_art/proc/on_teach(mob/living/new_holder) +/datum/martial_art/proc/activate_style(mob/living/new_holder) + SHOULD_CALL_PARENT(TRUE) + active = TRUE if(help_verb) add_verb(new_holder, help_verb) - RegisterSignal(new_holder, COMSIG_QDELETING, PROC_REF(holder_deleted)) RegisterSignal(new_holder, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(unarmed_strike)) RegisterSignal(new_holder, COMSIG_LIVING_GRAB, PROC_REF(attempt_grab)) - RegisterSignal(new_holder, COMSIG_MOB_MIND_TRANSFERRED_OUT_OF, PROC_REF(transfer_martial_arts)) + RegisterSignals(new_holder, list(COMSIG_LIVING_TABLE_SLAMMING, COMSIG_LIVING_TABLE_LIMB_SLAMMING), PROC_REF(smash_table)) /** * Called when this martial art is removed from a mob. */ -/datum/martial_art/proc/on_remove(mob/living/remove_from) +/datum/martial_art/proc/deactivate_style(mob/living/remove_from) + SHOULD_CALL_PARENT(TRUE) + active = FALSE if(help_verb) remove_verb(remove_from, help_verb) - UnregisterSignal(remove_from, list(COMSIG_QDELETING, COMSIG_LIVING_UNARMED_ATTACK, COMSIG_LIVING_GRAB, COMSIG_MOB_MIND_TRANSFERRED_OUT_OF)) + UnregisterSignal(remove_from, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_LIVING_GRAB, COMSIG_LIVING_TABLE_SLAMMING, COMSIG_LIVING_TABLE_LIMB_SLAMMING)) -/datum/martial_art/proc/holder_deleted(datum/source) - SIGNAL_HANDLER - holder = null +/mob/living/proc/verb_switch_style() + set name = "Swap Style" + set desc = "Switch to a different martial arts style." + set category = "IC" -/// Signal proc for [COMSIG_MOB_MIND_TRANSFERRED_OUT_OF] to pass martial arts between bodies on mind transfer -/// By this point the martial art's holder is the old body, but the mind that owns it is in the new body -/datum/martial_art/proc/transfer_martial_arts(mob/living/old_body, mob/living/new_body) - SIGNAL_HANDLER + var/datum/martial_art/current = GET_ACTIVE_MARTIAL_ART(src) + var/datum/martial_art/next = GET_NEXT_MARTIAL_ART(src) - // This has some notable issues in that martial arts granted by items like Krav Maga - // will follow the body swap, the easiest fix would be to move martial arts off of the mind - - if(!isnull(base)) // If we're home to a temporary one just don't touch it, give the base to the new body and leave it at that - base.teach(new_body) - unstore_martial_art() + if(current.locked_to_use) + to_chat(src, span_warning("You can't stop practicing [current]! It's too ingrained in your muscle memory.")) return - on_remove(old_body) // on_remove rather than remove, because by this point the mind is already in the new body, which remove handles. - teach(new_body) + switch_style(GET_ACTIVE_MARTIAL_ART(src), GET_NEXT_MARTIAL_ART(src)) + to_chat(src, span_notice("You stop practicing [current] and start practicing [next].")) + +/// Deactivates the current martial art and activates the next one. +/mob/living/proc/switch_style(datum/martial_art/current_martial, datum/martial_art/next_martial) + if(current_martial.locked_to_use) + return + // something's wrong if this assertion fails, but not terribly wrong that we need a stack trace + if(!current_martial.active || next_martial.active) + return + + current_martial.deactivate_style(src) + next_martial.activate_style(src) + // front of the list with ye + LAZYREMOVE(martial_arts, next_martial) + LAZYINSERT(martial_arts, 1, next_martial) + // back of the list with ye + LAZYREMOVE(martial_arts, current_martial) + LAZYADD(martial_arts, current_martial) diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm index 18f70fce94a..9d9407636d8 100644 --- a/code/datums/martial/boxing.dm +++ b/code/datums/martial/boxing.dm @@ -16,14 +16,15 @@ /// Balloon alert cooldown for warning our boxer to alternate their blows to get more damage COOLDOWN_DECLARE(warning_cooldown) -/datum/martial_art/boxing/teach(mob/living/new_holder, make_temporary) - if(!ishuman(new_holder)) - return FALSE +/datum/martial_art/boxing/can_teach(mob/living/new_holder) + return ishuman(new_holder) + +/datum/martial_art/boxing/activate_style(mob/living/new_holder) + . = ..() new_holder.add_traits(boxing_traits, BOXING_TRAIT) RegisterSignal(new_holder, COMSIG_LIVING_CHECK_BLOCK, PROC_REF(check_block)) - return ..() -/datum/martial_art/boxing/on_remove(mob/living/remove_from) +/datum/martial_art/boxing/deactivate_style(mob/living/remove_from) remove_from.remove_traits(boxing_traits, BOXING_TRAIT) UnregisterSignal(remove_from, list(COMSIG_LIVING_CHECK_BLOCK)) return ..() diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 35f8a254e17..27c192d0aa5 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -15,12 +15,12 @@ /// Probability of successfully blocking attacks while on throw mode var/block_chance = 75 -/datum/martial_art/cqc/on_teach(mob/living/new_holder) +/datum/martial_art/cqc/activate_style(mob/living/new_holder) . = ..() RegisterSignal(new_holder, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) RegisterSignal(new_holder, COMSIG_LIVING_CHECK_BLOCK, PROC_REF(check_block)) -/datum/martial_art/cqc/on_remove(mob/living/remove_from) +/datum/martial_art/cqc/deactivate_style(mob/living/remove_from) UnregisterSignal(remove_from, list(COMSIG_ATOM_ATTACKBY, COMSIG_LIVING_CHECK_BLOCK)) return ..() diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index d670b8eb638..135473cdaec 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -27,12 +27,13 @@ . = ..() if(!.) return - if (owner.mind.martial_art.streak == "neck_chop") + var/datum/martial_art/source = target + if (source.streak == "neck_chop") owner.visible_message(span_danger("[owner] assumes a neutral stance."), "Your next attack is cleared.") - owner.mind.martial_art.streak = "" + source.streak = "" else owner.visible_message(span_danger("[owner] assumes the Neck Chop stance!"), "Your next attack will be a Neck Chop.") - owner.mind.martial_art.streak = "neck_chop" + source.streak = "neck_chop" /datum/action/leg_sweep name = "Leg Sweep - Trips the victim, knocking them down for a brief moment." @@ -44,12 +45,13 @@ . = ..() if(!.) return - if (owner.mind.martial_art.streak == "leg_sweep") + var/datum/martial_art/source = target + if (source.streak == "leg_sweep") owner.visible_message(span_danger("[owner] assumes a neutral stance."), "Your next attack is cleared.") - owner.mind.martial_art.streak = "" + source.streak = "" else owner.visible_message(span_danger("[owner] assumes the Leg Sweep stance!"), "Your next attack will be a Leg Sweep.") - owner.mind.martial_art.streak = "leg_sweep" + source.streak = "leg_sweep" /datum/action/lung_punch//referred to internally as 'quick choke' name = "Lung Punch - Delivers a strong punch just above the victim's abdomen, constraining the lungs. The victim will be unable to breathe for a short time." @@ -61,14 +63,15 @@ . = ..() if(!.) return - if (owner.mind.martial_art.streak == "quick_choke") + var/datum/martial_art/source = target + if (source.streak == "quick_choke") owner.visible_message(span_danger("[owner] assumes a neutral stance."), "Your next attack is cleared.") - owner.mind.martial_art.streak = "" + source.streak = "" else owner.visible_message(span_danger("[owner] assumes the Lung Punch stance!"), "Your next attack will be a Lung Punch.") - owner.mind.martial_art.streak = "quick_choke"//internal name for lung punch + source.streak = "quick_choke"//internal name for lung punch -/datum/martial_art/krav_maga/on_teach(mob/living/new_holder) +/datum/martial_art/krav_maga/activate_style(mob/living/new_holder) . = ..() to_chat(new_holder, span_userdanger("You know the arts of [name]!")) to_chat(new_holder, span_danger("Place your cursor over a move at the top of the screen to see what it does.")) @@ -76,7 +79,7 @@ legsweep.Grant(new_holder) lungpunch.Grant(new_holder) -/datum/martial_art/krav_maga/on_remove(mob/living/remove_from) +/datum/martial_art/krav_maga/deactivate_style(mob/living/remove_from) to_chat(remove_from, span_userdanger("You suddenly forget the arts of [name]...")) neckchop?.Remove(remove_from) legsweep?.Remove(remove_from) diff --git a/code/datums/martial/mushpunch.dm b/code/datums/martial/mushpunch.dm index e571f46be35..4c21d4f00ef 100644 --- a/code/datums/martial/mushpunch.dm +++ b/code/datums/martial/mushpunch.dm @@ -47,7 +47,7 @@ to_chat(user, span_spiderbroodmother("You devour [src], \ and a confluence of skill and power from the mushroom enhances your punches! \ You do need a short moment to charge these powerful punches.")) - var/datum/martial_art/mushpunch/mush = new() + var/datum/martial_art/mushpunch/mush = new(user) mush.teach(user) visible_message( span_warning("[user] devours [src]."), diff --git a/code/datums/martial/plasma_fist.dm b/code/datums/martial/plasma_fist.dm index 8e24e876dec..ee52fb026b2 100644 --- a/code/datums/martial/plasma_fist.dm +++ b/code/datums/martial/plasma_fist.dm @@ -168,7 +168,7 @@ set desc = "Remember the martial techniques of the Plasma Fist." set category = "Plasma Fist" - var/datum/martial_art/plasma_fist/martial = usr.mind.martial_art + var/datum/martial_art/plasma_fist/martial = GET_ACTIVE_MARTIAL_ART(src) to_chat(usr, "You clench your fists and have a flashback of knowledge...") to_chat(usr, "[span_notice("Tornado Sweep")]: Punch Punch Shove. Repulses opponent and everyone back.") to_chat(usr, "[span_notice("Throwback")]: Shove Punch Shove. Throws the opponent and an item at them.") diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index fdfd6e404ec..f3ab575363e 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -5,13 +5,12 @@ /datum/martial_art/the_sleeping_carp name = "The Sleeping Carp" id = MARTIALART_SLEEPINGCARP - allow_temp_override = FALSE help_verb = /mob/living/proc/sleeping_carp_help display_combos = TRUE /// List of traits applied to users of this martial art. var/list/scarp_traits = list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD, TRAIT_HARDLY_WOUNDED, TRAIT_NODISMEMBER, TRAIT_HEAVY_SLEEPER) -/datum/martial_art/the_sleeping_carp/on_teach(mob/living/new_holder) +/datum/martial_art/the_sleeping_carp/activate_style(mob/living/new_holder) . = ..() new_holder.add_traits(scarp_traits, SLEEPING_CARP_TRAIT) RegisterSignal(new_holder, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) @@ -19,7 +18,7 @@ new_holder.faction |= FACTION_CARP //:D new_holder.grant_language(/datum/language/carptongue, ALL, type) -/datum/martial_art/the_sleeping_carp/on_remove(mob/living/remove_from) +/datum/martial_art/the_sleeping_carp/deactivate_style(mob/living/remove_from) remove_from.remove_traits(scarp_traits, SLEEPING_CARP_TRAIT) UnregisterSignal(remove_from, list(COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_PRE_BULLET_ACT)) remove_from.faction -= FACTION_CARP //:( diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm index 4bcaf02b2d5..1358cc20e34 100644 --- a/code/datums/martial/wrestling.dm +++ b/code/datums/martial/wrestling.dm @@ -76,8 +76,9 @@ If you make a derivative work from this code, you must include this notification . = ..() if(!.) return + var/datum/martial_art/source = target owner.visible_message(span_danger("[owner] prepares to BODY SLAM!"), "Your next attack will be a BODY SLAM.") - owner.mind.martial_art.streak = "slam" + source.streak = "slam" /datum/action/throw_wrassle name = "Throw (Cinch) - Spin a cinched opponent around and throw them." @@ -88,8 +89,9 @@ If you make a derivative work from this code, you must include this notification . = ..() if(!.) return + var/datum/martial_art/source = target owner.visible_message(span_danger("[owner] prepares to THROW!"), "Your next attack will be a THROW.") - owner.mind.martial_art.streak = "throw" + source.streak = "throw" /datum/action/kick name = "Kick - A powerful kick, sends people flying away from you. Also useful for escaping from bad situations." @@ -100,8 +102,9 @@ If you make a derivative work from this code, you must include this notification . = ..() if(!.) return + var/datum/martial_art/source = target owner.visible_message(span_danger("[owner] prepares to KICK!"), "Your next attack will be a KICK.") - owner.mind.martial_art.streak = "kick" + source.streak = "kick" /datum/action/strike name = "Strike - Hit a neaby opponent with a quick attack." @@ -112,8 +115,9 @@ If you make a derivative work from this code, you must include this notification . = ..() if(!.) return + var/datum/martial_art/source = target owner.visible_message(span_danger("[owner] prepares to STRIKE!"), "Your next attack will be a STRIKE.") - owner.mind.martial_art.streak = "strike" + source.streak = "strike" /datum/action/drop name = "Drop - Smash down onto an opponent." @@ -124,10 +128,11 @@ If you make a derivative work from this code, you must include this notification . = ..() if(!.) return + var/datum/martial_art/source = target owner.visible_message(span_danger("[owner] prepares to LEG DROP!"), "Your next attack will be a LEG DROP.") - owner.mind.martial_art.streak = "drop" + source.streak = "drop" -/datum/martial_art/wrestling/on_teach(mob/living/new_holder) +/datum/martial_art/wrestling/activate_style(mob/living/new_holder) . = ..() to_chat(new_holder, span_userdanger("SNAP INTO A THIN TIM!")) to_chat(new_holder, span_danger("Place your cursor over a move at the top of the screen to see what it does.")) @@ -137,7 +142,7 @@ If you make a derivative work from this code, you must include this notification throw_wrassle.Grant(new_holder) strike.Grant(new_holder) -/datum/martial_art/wrestling/on_remove(mob/living/remove_from) +/datum/martial_art/wrestling/deactivate_style(mob/living/remove_from) to_chat(remove_from, span_userdanger("You no longer feel that the tower of power is too sweet to be sour...")) drop?.Remove(remove_from) kick?.Remove(remove_from) diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm index d179be2dc01..58b2817e94f 100644 --- a/code/datums/materials/_material.dm +++ b/code/datums/materials/_material.dm @@ -168,7 +168,7 @@ Simple datum which is instanced once per type and is used for every object of sa * Arguments: * - amount: The amount of the material to break down. */ -/datum/material/proc/return_composition(amount = 1) +/datum/material/proc/return_composition(amount = 1, flags) // Yes we need the parenthesis, without them BYOND stringifies src into "src" and things break. return list((src) = amount) diff --git a/code/datums/materials/alloys.dm b/code/datums/materials/alloys.dm index ff4c71c2f3e..b1025f4130e 100644 --- a/code/datums/materials/alloys.dm +++ b/code/datums/materials/alloys.dm @@ -7,13 +7,16 @@ /// The materials this alloy is made from weighted by their ratios. var/list/composition = null -/datum/material/alloy/return_composition(amount = 1) +/datum/material/alloy/return_composition(amount = 1, flags) + if(flags & MATCONTAINER_ACCEPT_ALLOYS) + return ..() + . = list() var/list/cached_comp = composition for(var/comp_mat in cached_comp) var/datum/material/component_material = GET_MATERIAL_REF(comp_mat) - var/list/component_composition = component_material.return_composition(cached_comp[comp_mat]) + var/list/component_composition = component_material.return_composition(cached_comp[comp_mat], flags) for(var/comp_comp_mat in component_composition) .[comp_comp_mat] += component_composition[comp_comp_mat] * amount diff --git a/code/datums/mind/_mind.dm b/code/datums/mind/_mind.dm index 59efd4bc149..1439418ba8b 100644 --- a/code/datums/mind/_mind.dm +++ b/code/datums/mind/_mind.dm @@ -51,8 +51,6 @@ var/special_role var/list/restricted_roles = list() - /// Martial art on this mind - var/datum/martial_art/martial_art /// List of antag datums on this mind var/list/antag_datums /// this mind's ANTAG_HUD should have this icon_state @@ -124,7 +122,6 @@ .["name"] = name .["ghostname"] = ghostname .["memories"] = memories - .["martial_art"] = martial_art .["antag_datums"] = antag_datums .["holy_role"] = holy_role .["special_role"] = special_role diff --git a/code/datums/mood.dm b/code/datums/mood.dm index e05212cd983..eb41971ad96 100644 --- a/code/datums/mood.dm +++ b/code/datums/mood.dm @@ -32,10 +32,6 @@ /// List of mood events currently active on this datum var/list/mood_events = list() - /// Tracks the last mob stat, updates on change - /// Used to stop processing SSmood - var/last_stat = CONSCIOUS - /datum/mood/New(mob/living/mob_to_make_moody) if (!istype(mob_to_make_moody)) stack_trace("Tried to apply mood to a non-living atom!") @@ -83,40 +79,31 @@ /datum/mood/process(seconds_per_tick) switch(mood_level) if(MOOD_LEVEL_SAD4) - set_sanity(sanity - 0.3 * seconds_per_tick, SANITY_INSANE) + adjust_sanity(-0.3 * seconds_per_tick, SANITY_INSANE) if(MOOD_LEVEL_SAD3) - set_sanity(sanity - 0.15 * seconds_per_tick, SANITY_INSANE) + adjust_sanity(-0.15 * seconds_per_tick, SANITY_INSANE) if(MOOD_LEVEL_SAD2) - set_sanity(sanity - 0.1 * seconds_per_tick, SANITY_CRAZY) + adjust_sanity(-0.1 * seconds_per_tick, SANITY_CRAZY) if(MOOD_LEVEL_SAD1) - set_sanity(sanity - 0.05 * seconds_per_tick, SANITY_UNSTABLE) + adjust_sanity(-0.05 * seconds_per_tick, SANITY_UNSTABLE) if(MOOD_LEVEL_NEUTRAL) - set_sanity(sanity, SANITY_UNSTABLE) //This makes sure that mood gets increased should you be below the minimum. + adjust_sanity(0, SANITY_UNSTABLE) //This makes sure that mood gets increased should you be below the minimum. if(MOOD_LEVEL_HAPPY1) - set_sanity(sanity + 0.2 * seconds_per_tick, SANITY_UNSTABLE) + adjust_sanity(0.2 * seconds_per_tick, SANITY_UNSTABLE) if(MOOD_LEVEL_HAPPY2) - set_sanity(sanity + 0.3 * seconds_per_tick, SANITY_UNSTABLE) + adjust_sanity(0.3 * seconds_per_tick, SANITY_UNSTABLE) if(MOOD_LEVEL_HAPPY3) - set_sanity(sanity + 0.4 * seconds_per_tick, SANITY_NEUTRAL, SANITY_MAXIMUM) + adjust_sanity(0.4 * seconds_per_tick, SANITY_NEUTRAL, SANITY_MAXIMUM) if(MOOD_LEVEL_HAPPY4) - set_sanity(sanity + 0.6 * seconds_per_tick, SANITY_NEUTRAL, SANITY_MAXIMUM) + adjust_sanity(0.6 * seconds_per_tick, SANITY_NEUTRAL, SANITY_MAXIMUM) - // 0.416% is 15 successes / 3600 seconds. Calculated with 2 minute - // mood runtime, so 50% average uptime across the hour. - if(HAS_TRAIT(mob_parent, TRAIT_DEPRESSION) && SPT_PROB(0.416, seconds_per_tick)) - add_mood_event("depression", /datum/mood_event/depression) - - if(HAS_TRAIT(mob_parent, TRAIT_JOLLY) && SPT_PROB(0.416, seconds_per_tick)) - add_mood_event("jolly", /datum/mood_event/jolly) - -/datum/mood/proc/handle_mob_death(datum/source) +/datum/mood/proc/handle_mob_death(datum/source, new_stat, old_stat) SIGNAL_HANDLER - if (last_stat == DEAD && mob_parent.stat != DEAD) + if (old_stat == DEAD && new_stat != DEAD) START_PROCESSING(SSmood, src) - else if (last_stat != DEAD && mob_parent.stat == DEAD) + else if (old_stat != DEAD && new_stat == DEAD) STOP_PROCESSING(SSmood, src) - last_stat = mob_parent.stat /// Handles mood given by nutrition /datum/mood/proc/update_nutrition_moodlets() @@ -172,15 +159,15 @@ var/datum/mood_event/the_event if (mood_events[category]) the_event = mood_events[category] - if (the_event.type != type) - clear_mood_event(category) - else + if (the_event.type == type) if (the_event.timeout) if (!isnull(mood_to_copy_from)) the_event.timeout = mood_to_copy_from.timeout addtimer(CALLBACK(src, PROC_REF(clear_mood_event), category), the_event.timeout, (TIMER_UNIQUE|TIMER_OVERRIDE)) qdel(mood_to_copy_from) return // Don't need to update the event. + + clear_mood_event(category) var/list/params = args.Copy(3) params.Insert(1, mob_parent) @@ -216,6 +203,9 @@ qdel(event) update_mood() +/datum/mood/proc/get_mood_event(category) + return mood_events[category] + /// Updates the mobs mood. /// Called after mood events have been added/removed. /datum/mood/proc/update_mood() @@ -224,13 +214,12 @@ mood = 0 shown_mood = 0 - SEND_SIGNAL(mob_parent, COMSIG_CARBON_MOOD_UPDATE) - for(var/category in mood_events) var/datum/mood_event/the_event = mood_events[category] mood += the_event.mood_change if (!the_event.hidden) shown_mood += the_event.mood_change + mood *= mood_modifier shown_mood *= mood_modifier @@ -255,6 +244,7 @@ mood_level = MOOD_LEVEL_HAPPY4 update_mood_icon() + SEND_SIGNAL(mob_parent, COMSIG_CARBON_MOOD_UPDATE) /// Updates the mob's mood icon /datum/mood/proc/update_mood_icon() @@ -335,25 +325,62 @@ if(user != mob_parent) return + if(user.stat >= UNCONSCIOUS) + return print_mood(user) /// Prints the users mood, sanity, and moodies to chat /datum/mood/proc/print_mood(mob/user) - var/msg = "[span_info("My current mental status:")]\n" + var/msg = "[span_info("My current mental status:")]
" + + if(!HAS_TRAIT(src, TRAIT_NOHUNGER)) + msg += span_notice("My hunger: ") + var/nutrition = mob_parent.nutrition + switch(nutrition) + if(NUTRITION_LEVEL_FULL to INFINITY) + msg += "[span_info("I'm completely stuffed!")]
" + if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL) + msg += "[span_info("I'm well fed!")]
" + if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED) + msg += "[span_info("I'm not hungry.")]
" + if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED) + msg += "[span_info("I could use a bite to eat.")]
" + if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) + msg += "[span_warning("I feel quite hungry.")]
" + if(0 to NUTRITION_LEVEL_STARVING) + msg += "[span_boldwarning("I'm starving!")]
" + + var/drunkness = mob_parent.get_drunk_amount() + if(drunkness >= 1) + msg += span_notice("My current drunkenness: ") + switch(drunkness) + if(1 to 10) + msg += "[span_info("I'm feeling a little tipsy.")]
" + if(11 to 21) + msg += "[span_info("I'm feeling a bit drunk.")]
" + if(21 to 41) + msg += "[span_info("I'm feeling quite drunk.")]
" + if(41 to 61) + msg += "[span_info("I'm feeling very drunk.")]
" + if(61 to 81) + msg += "[span_warning("I'm feeling like a mess.")]
" + if(81 to INFINITY) + msg += "[span_boldwarning("I'm completely wasted.")]
" + msg += span_notice("My current sanity: ") //Long term //ORIGINAL /* switch(sanity) if(SANITY_GREAT to INFINITY) - msg += "[span_boldnicegreen("My mind feels like a temple!")]\n" + msg += "[span_boldnicegreen("My mind feels like a temple!")]
" if(SANITY_NEUTRAL to SANITY_GREAT) - msg += "[span_nicegreen("I have been feeling great lately!")]\n" + msg += "[span_nicegreen("I have been feeling great lately!")]
" if(SANITY_DISTURBED to SANITY_NEUTRAL) - msg += "[span_nicegreen("I have felt quite decent lately.")]\n" + msg += "[span_nicegreen("I have felt quite decent lately.")]
" if(SANITY_UNSTABLE to SANITY_DISTURBED) - msg += "[span_warning("I'm feeling a little bit unhinged...")]\n" + msg += "[span_warning("I'm feeling a little bit unhinged...")]
" if(SANITY_CRAZY to SANITY_UNSTABLE) - msg += "[span_warning("I'm freaking out!!")]\n" + msg += "[span_warning("I'm freaking out!!")]
" if(SANITY_INSANE to SANITY_CRAZY) msg += "[span_boldwarning("AHAHAHAHAHAHAHAHAHAH!!")]\n" */ @@ -381,21 +408,21 @@ /* switch(mood_level) if(MOOD_LEVEL_SAD4) - msg += "[span_boldwarning("I wish I was dead!")]\n" + msg += "[span_boldwarning("I wish I was dead!")]
" if(MOOD_LEVEL_SAD3) - msg += "[span_boldwarning("I feel terrible...")]\n" + msg += "[span_boldwarning("I feel terrible...")]
" if(MOOD_LEVEL_SAD2) - msg += "[span_boldwarning("I feel very upset.")]\n" + msg += "[span_boldwarning("I feel very upset.")]
" if(MOOD_LEVEL_SAD1) - msg += "[span_warning("I'm a bit sad.")]\n" + msg += "[span_warning("I'm a bit sad.")]
" if(MOOD_LEVEL_NEUTRAL) - msg += "[span_grey("I'm alright.")]\n" + msg += "[span_grey("I'm alright.")]
" if(MOOD_LEVEL_HAPPY1) - msg += "[span_nicegreen("I feel pretty okay.")]\n" + msg += "[span_nicegreen("I feel pretty okay.")]
" if(MOOD_LEVEL_HAPPY2) - msg += "[span_boldnicegreen("I feel pretty good.")]\n" + msg += "[span_boldnicegreen("I feel pretty good.")]
" if(MOOD_LEVEL_HAPPY3) - msg += "[span_boldnicegreen("I feel amazing!")]\n" + msg += "[span_boldnicegreen("I feel amazing!")]
" if(MOOD_LEVEL_HAPPY4) msg += "[span_boldnicegreen("I love life!")]\n" */ @@ -423,28 +450,36 @@ else msg += "[span_notice("No clue.")]\n" - msg += "[span_notice("Moodlets:")]\n"//All moodlets - msg += get_alcohol_processing(user) - msg += get_drunk_mood(user) + var/list/additional_lines = list() + SEND_SIGNAL(user, COMSIG_CARBON_MOOD_CHECK, additional_lines) + if (length(additional_lines)) + msg += "[additional_lines.Join("
")]
" + + msg += "[span_notice("Moodlets:")]
"//All moodlets if(mood_events.len && !HAS_TRAIT(user, TRAIT_MOOD_NOEXAMINE)) // ORIGINAL - //if(mood_events.len) //SKYRAT EDIT CHANGE END for(var/category in mood_events) var/datum/mood_event/event = mood_events[category] + msg += "• " switch(event.mood_change) if(-INFINITY to MOOD_SAD2) - msg += span_boldwarning(event.description + "\n") + msg += "[span_boldwarning(event.description)]
" if(MOOD_SAD2 to MOOD_SAD1) - msg += span_warning(event.description + "\n") + msg += "[span_warning(event.description)]
" if(MOOD_SAD1 to MOOD_NEUTRAL) - msg += span_grey(event.description + "\n") + msg += "[span_grey(event.description)]
" if(MOOD_NEUTRAL to MOOD_HAPPY1) - msg += span_info(event.description + "\n") + msg += "[span_info(event.description)]
" if(MOOD_HAPPY1 to MOOD_HAPPY2) - msg += span_nicegreen(event.description + "\n") + msg += "[span_nicegreen(event.description)]
" if(MOOD_HAPPY2 to INFINITY) - msg += span_boldnicegreen(event.description + "\n") + msg += "[span_boldnicegreen(event.description)]
" else - msg += "[span_grey("I don't have much of a reaction to anything right now.")]\n" + msg += "• [span_grey("I don't have much of a reaction to anything right now.")]
" + + if(LAZYLEN(mob_parent.quirks)) + msg += span_notice("You have these quirks: [mob_parent.get_quirk_string(FALSE, CAT_QUIRK_ALL)].") + to_chat(user, boxed_message(msg)) /// Updates the mob's moodies, if the area provides a mood bonus @@ -524,10 +559,16 @@ // If the new amount would move towards the acceptable range faster then use it instead if(amount < minimum && sanity < minimum) amount = sanity + 0.7 - if((!override && HAS_TRAIT(mob_parent, TRAIT_UNSTABLE)) || amount > maximum) + + if(!override && HAS_TRAIT(mob_parent, TRAIT_UNSTABLE)) amount = min(sanity, amount) + + if (amount > maximum) + amount = min(amount, maximum) + if(amount == sanity) //Prevents stuff from flicking around. return + sanity = amount SEND_SIGNAL(mob_parent, COMSIG_CARBON_SANITY_UPDATE, amount) switch(sanity) @@ -563,13 +604,17 @@ sanity_level = SANITY_LEVEL_GREAT // Crazy or insane = add some uncommon hallucinations - if(sanity_level >= SANITY_CRAZY) + if(sanity_level >= SANITY_LEVEL_CRAZY) mob_parent.apply_status_effect(/datum/status_effect/hallucination/sanity) else mob_parent.remove_status_effect(/datum/status_effect/hallucination/sanity) update_mood_icon() +/// Adjusts sanity by a value +/datum/mood/proc/adjust_sanity(amount, minimum = SANITY_INSANE, maximum = SANITY_GREAT, override = FALSE) + set_sanity(sanity + amount, minimum, maximum, override) + /// Sets the insanity effect on the mob /datum/mood/proc/set_insanity_effect(newval) if (newval == insanity_effect) @@ -589,7 +634,7 @@ /// Helper to forcefully drain sanity /datum/mood/proc/direct_sanity_drain(amount) - set_sanity(sanity + amount, override = TRUE) + adjust_sanity(amount, override = TRUE) /** * Returns true if you already have a mood from a provided category. diff --git a/code/datums/mood_events/_mood_event.dm b/code/datums/mood_events/_mood_event.dm index 8f319533800..499b5f892e6 100644 --- a/code/datums/mood_events/_mood_event.dm +++ b/code/datums/mood_events/_mood_event.dm @@ -20,12 +20,12 @@ /// Owner of this mood event var/mob/living/owner /// List of required jobs for this mood event - var/list/required_job = list() + var/list/required_job /datum/mood_event/New(mob/living/emotional_mob, ...) owner = emotional_mob var/list/params = args.Copy(2) - if ((length(required_job) > 0) && owner.mind && !(owner.mind.assigned_role.type in required_job)) + if (LAZYLEN(required_job) && !is_type_in_list(owner.mind?.assigned_role, required_job)) qdel(src) return add_effects(arglist(params)) diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index af30aa6e33f..7fa9cf37d91 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -153,12 +153,12 @@ mood_change = -3 /datum/mood_event/claustrophobia - description = "Why do I feel trapped?! Let me out!!!" + description = "Why do I feel trapped?! Let me out!!!" mood_change = -7 timeout = 1 MINUTES /datum/mood_event/bright_light - description = "I hate it in the light...I need to find a darker place..." + description = "I hate it in the light... I need to find a darker place..." mood_change = -12 /datum/mood_event/family_heirloom_missing @@ -516,3 +516,16 @@ description = "I didn't want to believe it, but there are people out there that are genuinely evil." mood_change = -4 timeout = 1 MINUTES + +/datum/mood_event/smoke_in_face + description = "Cigarette smoke is disgusting." + mood_change = -3 + timeout = 30 SECONDS + +/datum/mood_event/smoke_in_face/add_effects(param) + if(HAS_TRAIT(owner, TRAIT_ANOSMIA)) + description = "Cigarette smoke is unpleasant." + mood_change = -1 + if(HAS_TRAIT(owner, TRAIT_SMOKER)) + description = "Blowing smoke in my face, really?" + mood_change = 0 diff --git a/code/datums/mutable_appearance.dm b/code/datums/mutable_appearance.dm index db5acbca388..0d115c63db8 100644 --- a/code/datums/mutable_appearance.dm +++ b/code/datums/mutable_appearance.dm @@ -49,3 +49,11 @@ check_topdown_validity(appearance) return appearance + +/// Takes an input mutable appearance, returns a copy of it with the hidden flag flipped to avoid inheriting dir from what it's drawn on +/// This inheriting thing is handled by a hidden flag on the /image (MAs are subtypes of /image) +/proc/make_mutable_appearance_directional(mutable_appearance/to_process, dir = NORTH) + // We use the image() proc in combo with a manually set dir to flip this flag + // We can then copy the image's appearance to retain the flag, even on MAs and such + var/image/holder = image(to_process, dir = dir) + return new /mutable_appearance(holder) diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm index 676cf455bfc..5656d8c8598 100644 --- a/code/datums/progressbar.dm +++ b/code/datums/progressbar.dm @@ -69,9 +69,9 @@ continue progress_bar.listindex-- - progress_bar.bar.pixel_y = ICON_SIZE_Y + offset_y + (PROGRESSBAR_HEIGHT * (progress_bar.listindex - 1)) + progress_bar.bar.pixel_z = ICON_SIZE_Y + offset_y + (PROGRESSBAR_HEIGHT * (progress_bar.listindex - 1)) var/dist_to_travel = ICON_SIZE_Y + offset_y + (PROGRESSBAR_HEIGHT * (progress_bar.listindex - 1)) - PROGRESSBAR_HEIGHT - animate(progress_bar.bar, pixel_y = dist_to_travel, time = PROGRESSBAR_ANIMATION_TIME, easing = SINE_EASING) + animate(progress_bar.bar, pixel_z = dist_to_travel, time = PROGRESSBAR_ANIMATION_TIME, easing = SINE_EASING) LAZYREMOVEASSOC(user.progressbars, bar_loc, src) user = null @@ -120,10 +120,10 @@ ///Adds a smoothly-appearing progress bar image to the player's screen. /datum/progressbar/proc/add_prog_bar_image_to_client() - bar.pixel_y = 0 + bar.pixel_z = 0 bar.alpha = 0 user_client.images += bar - animate(bar, pixel_y = ICON_SIZE_Y + offset_y + (PROGRESSBAR_HEIGHT * (listindex - 1)), alpha = 255, time = PROGRESSBAR_ANIMATION_TIME, easing = SINE_EASING) + animate(bar, pixel_z = ICON_SIZE_Y + offset_y + (PROGRESSBAR_HEIGHT * (listindex - 1)), alpha = 255, time = PROGRESSBAR_ANIMATION_TIME, easing = SINE_EASING) ///Updates the progress bar image visually. diff --git a/code/datums/proximity_monitor/fields/heretic_arena.dm b/code/datums/proximity_monitor/fields/heretic_arena.dm index af949963a7c..ebf782cf400 100644 --- a/code/datums/proximity_monitor/fields/heretic_arena.dm +++ b/code/datums/proximity_monitor/fields/heretic_arena.dm @@ -154,7 +154,7 @@ GLOBAL_LIST_EMPTY(heretic_arenas) /datum/status_effect/arena_tracker/proc/on_crit_somebody() owner.cut_overlay(crown_overlay) crown_overlay = mutable_appearance('icons/mob/effects/crown.dmi', "arena_victor", -HALO_LAYER) - crown_overlay.pixel_y = 24 + crown_overlay.pixel_z = 24 owner.add_overlay(crown_overlay) owner.remove_traits(list(TRAIT_ELDRITCH_ARENA_PARTICIPANT, TRAIT_NO_TELEPORT), TRAIT_STATUS_EFFECT(id)) @@ -200,7 +200,7 @@ GLOBAL_LIST_EMPTY(heretic_arenas) RegisterSignal(owner, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(damage_taken)) owner.add_traits(list(TRAIT_ELDRITCH_ARENA_PARTICIPANT, TRAIT_NO_TELEPORT), TRAIT_STATUS_EFFECT(id)) crown_overlay = mutable_appearance('icons/mob/effects/crown.dmi', "arena_fighter", -HALO_LAYER) - crown_overlay.pixel_y = 24 + crown_overlay.pixel_z = 24 owner.add_overlay(crown_overlay) return TRUE diff --git a/code/datums/quirks/_quirk.dm b/code/datums/quirks/_quirk.dm index 85fd0fb806d..c9f6173a8f3 100644 --- a/code/datums/quirks/_quirk.dm +++ b/code/datums/quirks/_quirk.dm @@ -125,7 +125,7 @@ if(!quirk_transfer && lose_text) to_chat(quirk_holder, lose_text) - if(mob_trait && !QDELETED(quirk_holder)) // BUBBER EDIT CHANGE - Original: if(mob_trait) - Temp fix until https://github.com/tgstation/tgstation/pull/90044 + if(mob_trait && !QDELETED(quirk_holder)) REMOVE_TRAIT(quirk_holder, mob_trait, QUIRK_TRAIT) if(quirk_flags & QUIRK_PROCESSES) diff --git a/code/datums/quirks/negative_quirks/addict.dm b/code/datums/quirks/negative_quirks/addict.dm index 09b25ef46b2..e19b8f69bf9 100644 --- a/code/datums/quirks/negative_quirks/addict.dm +++ b/code/datums/quirks/negative_quirks/addict.dm @@ -36,7 +36,7 @@ if(istype(drug_instance, /obj/item/storage/pill_bottle)) var/pill_state = "pill[rand(1,20)]" for(var/i in 1 to 7) - var/obj/item/reagent_containers/pill/pill = new(drug_instance) + var/obj/item/reagent_containers/applicator/pill/pill = new(drug_instance) pill.icon_state = pill_state pill.reagents.add_reagent(reagent_type, 3) diff --git a/code/datums/quirks/negative_quirks/all_nighter.dm b/code/datums/quirks/negative_quirks/all_nighter.dm index cb11ba0d5fa..8220972ad22 100644 --- a/code/datums/quirks/negative_quirks/all_nighter.dm +++ b/code/datums/quirks/negative_quirks/all_nighter.dm @@ -80,6 +80,7 @@ /datum/quirk/all_nighter/process(seconds_per_tick) var/happy_camper = TRUE var/beauty_sleep = TRUE + var/all_nighter = quirk_holder.mob_mood?.get_mood_event("all_nighter") if(quirk_holder.IsSleeping()) five_more_minutes += SLEEP_BANK_MULTIPLIER * seconds_per_tick @@ -93,9 +94,9 @@ happy_camper = FALSE //adjusts the mood event accordingly - if(("all_nighter" in quirk_holder.mob_mood?.mood_events) && happy_camper) + if(all_nighter && happy_camper) quirk_holder.clear_mood_event("all_nighter", /datum/mood_event/all_nighter) - if(!("all_nighter" in quirk_holder.mob_mood?.mood_events) && !happy_camper) + if(!all_nighter && !happy_camper) quirk_holder.add_mood_event("all_nighter", /datum/mood_event/all_nighter) to_chat(quirk_holder, span_danger("You start feeling tired again.")) diff --git a/code/datums/quirks/negative_quirks/claustrophobia.dm b/code/datums/quirks/negative_quirks/claustrophobia.dm index 6091324deda..2b70dcada6f 100644 --- a/code/datums/quirks/negative_quirks/claustrophobia.dm +++ b/code/datums/quirks/negative_quirks/claustrophobia.dm @@ -5,53 +5,11 @@ value = -4 medical_record_text = "Patient demonstrates a fear of tight spaces." hardcore_value = 5 - quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES + quirk_flags = QUIRK_HUMAN_ONLY mail_goodies = list(/obj/item/reagent_containers/syringe/convermol) // to help breathing - maximum_process_stat = SOFT_CRIT - no_process_traits = list(TRAIT_MIND_TEMPORARILY_GONE, TRAIT_FEARLESS, TRAIT_KNOCKEDOUT) + +/datum/quirk/claustrophobia/add(client/client_source) + quirk_holder.AddComponentFrom(type, /datum/component/fearful, list(/datum/terror_handler/simple_source/claustrophobia, /datum/terror_handler/simple_source/clausophobia)) /datum/quirk/claustrophobia/remove() - quirk_holder.clear_mood_event("claustrophobia") - -/datum/quirk/claustrophobia/process(seconds_per_tick) - // BUBBER EDIT START: Vore - if(istype(quirk_holder.loc, /obj/vore_belly)) - quirk_holder.clear_mood_event("claustrophobia") - return - // BUBBER EDIT END - var/nick_spotted = FALSE - -/* SKYRAT EDIT REMOVAL START - for(var/mob/living/carbon/human/possible_claus in view(5, quirk_holder)) - if(evaluate_jolly_levels(possible_claus)) - nick_spotted = TRUE - break -SKYRAT EDIT REMOVAL END */ - - if(!nick_spotted && isturf(quirk_holder.loc)) - quirk_holder.clear_mood_event("claustrophobia") - return - - quirk_holder.add_mood_event("claustrophobia", /datum/mood_event/claustrophobia) - quirk_holder.losebreath += 0.25 // miss a breath one in four times - if(SPT_PROB(25, seconds_per_tick)) - if(nick_spotted) - to_chat(quirk_holder, span_warning("Santa Claus is here! I gotta get out of here!")) - else - to_chat(quirk_holder, span_warning("You feel trapped! Must escape... can't breathe...")) - -///investigates whether possible_saint_nick possesses a high level of christmas cheer -/datum/quirk/claustrophobia/proc/evaluate_jolly_levels(mob/living/carbon/human/possible_saint_nick) - if(!istype(possible_saint_nick)) - return FALSE - - if(istype(possible_saint_nick.back, /obj/item/storage/backpack/santabag)) - return TRUE - - if(istype(possible_saint_nick.head, /obj/item/clothing/head/costume/santa) || istype(possible_saint_nick.head, /obj/item/clothing/head/helmet/space/santahat)) - return TRUE - - if(istype(possible_saint_nick.wear_suit, /obj/item/clothing/suit/space/santa)) - return TRUE - - return FALSE + quirk_holder.RemoveComponentSource(type, /datum/component/fearful) diff --git a/code/datums/quirks/negative_quirks/depression.dm b/code/datums/quirks/negative_quirks/depression.dm index 0bf15516105..b72b5791db9 100644 --- a/code/datums/quirks/negative_quirks/depression.dm +++ b/code/datums/quirks/negative_quirks/depression.dm @@ -2,11 +2,19 @@ name = "Depression" desc = "You sometimes just hate life." icon = FA_ICON_FROWN - mob_trait = TRAIT_DEPRESSION value = -3 gain_text = span_danger("You start feeling depressed.") lose_text = span_notice("You no longer feel depressed.") //if only it were that easy! medical_record_text = "Patient has a mild mood disorder causing them to experience acute episodes of depression." - quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_MOODLET_BASED + quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_MOODLET_BASED|QUIRK_PROCESSES hardcore_value = 2 mail_goodies = list(/obj/item/storage/pill_bottle/happinesspsych) + +/datum/quirk/depression/process(seconds_per_tick) + // 0.416% is 15 successes / 3600 seconds. Calculated with 2 minute + // mood runtime, so 50% average uptime across the hour. + if(SPT_PROB(0.416, seconds_per_tick)) + quirk_holder.add_mood_event("depression", /datum/mood_event/depression) + +/datum/quirk/depression/remove() + quirk_holder.clear_mood_event("depression") diff --git a/code/datums/quirks/negative_quirks/insanity.dm b/code/datums/quirks/negative_quirks/insanity.dm index c5fc1afdf0d..9401d006b67 100644 --- a/code/datums/quirks/negative_quirks/insanity.dm +++ b/code/datums/quirks/negative_quirks/insanity.dm @@ -17,7 +17,7 @@ if(!iscarbon(quirk_holder)) return var/mob/living/carbon/carbon_quirk_holder = quirk_holder - + // Setup our special RDS mild hallucination. // Not a unique subtype so not to plague subtypesof, // also as we inherit the names and values from our quirk. @@ -28,6 +28,7 @@ added_trauma.scan_desc = LOWER_TEXT(name) added_trauma.gain_text = null added_trauma.lose_text = null + added_trauma.uncapped = client_source?.prefs?.read_preference(/datum/preference/toggle/rds_limit) carbon_quirk_holder.gain_trauma(added_trauma) added_trama_ref = WEAKREF(added_trauma) @@ -39,3 +40,7 @@ /datum/quirk/insanity/remove() QDEL_NULL(added_trama_ref) + +/datum/quirk_constant_data/rds_limit + associated_typepath = /datum/quirk/insanity + customization_options = list(/datum/preference/toggle/rds_limit) diff --git a/code/datums/quirks/negative_quirks/nyctophobia.dm b/code/datums/quirks/negative_quirks/nyctophobia.dm index 94664f43f85..cf958ab84da 100644 --- a/code/datums/quirks/negative_quirks/nyctophobia.dm +++ b/code/datums/quirks/negative_quirks/nyctophobia.dm @@ -9,39 +9,7 @@ no_process_traits = list(TRAIT_MIND_TEMPORARILY_GONE, TRAIT_FEARLESS, TRAIT_KNOCKEDOUT) /datum/quirk/nyctophobia/add(client/client_source) - RegisterSignal(quirk_holder, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) + quirk_holder.AddComponentFrom(type, /datum/component/fearful, list(/datum/terror_handler/simple_source/nyctophobia)) /datum/quirk/nyctophobia/remove() - UnregisterSignal(quirk_holder, COMSIG_MOVABLE_MOVED) - quirk_holder.clear_mood_event("nyctophobia") - -/// Called when the quirk holder moves. Updates the quirk holder's mood. -/datum/quirk/nyctophobia/proc/on_holder_moved(mob/living/source, atom/old_loc, dir, forced) - SIGNAL_HANDLER - - if(quirk_holder.stat != CONSCIOUS || quirk_holder.IsSleeping() || quirk_holder.IsUnconscious()) - return - - if(HAS_TRAIT(quirk_holder, TRAIT_FEARLESS)) - return - - var/mob/living/carbon/human/human_holder = quirk_holder - - if(human_holder.dna?.species.id in list(SPECIES_SHADOW, SPECIES_NIGHTMARE)) - return - - if((human_holder.sight & SEE_TURFS) == SEE_TURFS) - return - - var/turf/holder_turf = get_turf(quirk_holder) - - var/lums = holder_turf.get_lumcount() - - if(lums > LIGHTING_TILE_IS_DARK) - quirk_holder.clear_mood_event("nyctophobia") - return - - if(quirk_holder.move_intent == MOVE_INTENT_RUN) - to_chat(quirk_holder, span_warning("Easy, easy, take it slow... you're in the dark...")) - quirk_holder.toggle_move_intent() - quirk_holder.add_mood_event("nyctophobia", /datum/mood_event/nyctophobia) + quirk_holder.RemoveComponentSource(type, /datum/component/fearful) diff --git a/code/datums/quirks/negative_quirks/prosopagnosia.dm b/code/datums/quirks/negative_quirks/prosopagnosia.dm index 9b41713e6ce..3911cb45056 100644 --- a/code/datums/quirks/negative_quirks/prosopagnosia.dm +++ b/code/datums/quirks/negative_quirks/prosopagnosia.dm @@ -3,23 +3,34 @@ desc = "You have a mental disorder that prevents you from being able to recognize faces at all." icon = FA_ICON_USER_SECRET value = -4 - mob_trait = TRAIT_PROSOPAGNOSIA medical_record_text = "Patient suffers from prosopagnosia and cannot recognize faces." hardcore_value = 5 mail_goodies = list(/obj/item/skillchip/appraiser) // bad at recognizing faces but good at recognizing IDs /datum/quirk/prosopagnosia/add(client/client_source) RegisterSignal(quirk_holder, COMSIG_MOB_REQUESTING_SCREENTIP_NAME_FROM_USER, PROC_REF(screentip_name_override)) + RegisterSignal(quirk_holder, COMSIG_LIVING_PERCEIVE_EXAMINE_NAME, PROC_REF(examine_name_override)) quirk_holder.mob_flags |= MOB_HAS_SCREENTIPS_NAME_OVERRIDE /datum/quirk/prosopagnosia/remove() - UnregisterSignal(quirk_holder, COMSIG_MOB_REQUESTING_SCREENTIP_NAME_FROM_USER) + UnregisterSignal(quirk_holder, list(COMSIG_MOB_REQUESTING_SCREENTIP_NAME_FROM_USER, COMSIG_LIVING_PERCEIVE_EXAMINE_NAME)) -/datum/quirk/prosopagnosia/proc/screentip_name_override(datum/source, list/returned_name, obj/item/held_item, atom/hovered) +/datum/quirk/prosopagnosia/proc/examine_name_override(datum/source, mob/living/carbon/human/examined, visible_name, list/name_override) SIGNAL_HANDLER - if(!ishuman(hovered)) + if(!ishuman(examined) || source == examined) return NONE - returned_name[1] = "Unknown" + var/id_name = examined.get_id_name("") + name_override[1] = id_name ? "[id_name]?" : "Unknown" + return COMPONENT_EXAMINE_NAME_OVERRIDEN + +/datum/quirk/prosopagnosia/proc/screentip_name_override(datum/source, list/returned_name, obj/item/held_item, mob/living/carbon/human/hovered) + SIGNAL_HANDLER + + if(!ishuman(hovered) || source == hovered) + return NONE + + var/id_name = hovered.get_id_name("") + returned_name[1] = id_name ? "[id_name]?" : "Unknown" return SCREENTIP_NAME_SET diff --git a/code/datums/quirks/negative_quirks/pushover.dm b/code/datums/quirks/negative_quirks/pushover.dm index 663d8173759..1c781ac0a50 100644 --- a/code/datums/quirks/negative_quirks/pushover.dm +++ b/code/datums/quirks/negative_quirks/pushover.dm @@ -1,6 +1,6 @@ /datum/quirk/pushover name = "Pushover" - desc = "Your first instinct is always to let people push you around. Resisting out of grabs will take conscious effort." + desc = "Your first instinct is always to let people push you around. Resisting out of grabs is noticeably more difficult." icon = FA_ICON_HANDSHAKE value = -8 mob_trait = TRAIT_GRABWEAKNESS diff --git a/code/datums/quirks/neutral_quirks/monochromatic.dm b/code/datums/quirks/neutral_quirks/monochromatic.dm index 6c1b8c2ef78..3295ca321a8 100644 --- a/code/datums/quirks/neutral_quirks/monochromatic.dm +++ b/code/datums/quirks/neutral_quirks/monochromatic.dm @@ -12,7 +12,7 @@ ) /datum/quirk/monochromatic/add(client/client_source) - quirk_holder.add_client_colour(/datum/client_colour/monochrome) + quirk_holder.add_client_colour(/datum/client_colour/monochrome, QUIRK_TRAIT) /datum/quirk/monochromatic/post_add() if(is_detective_job(quirk_holder.mind.assigned_role)) @@ -20,4 +20,4 @@ quirk_holder.playsound_local(quirk_holder, 'sound/ambience/security/ambidet1.ogg', 50, FALSE) /datum/quirk/monochromatic/remove() - quirk_holder.remove_client_colour(/datum/client_colour/monochrome) + quirk_holder.remove_client_colour(QUIRK_TRAIT) diff --git a/code/datums/quirks/positive_quirks/jolly.dm b/code/datums/quirks/positive_quirks/jolly.dm index 7f6c334ba9d..a6d9ea3c199 100644 --- a/code/datums/quirks/positive_quirks/jolly.dm +++ b/code/datums/quirks/positive_quirks/jolly.dm @@ -3,7 +3,15 @@ desc = "You sometimes just feel happy, for no reason at all." icon = FA_ICON_GRIN value = 4 - mob_trait = TRAIT_JOLLY - quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_MOODLET_BASED + quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_MOODLET_BASED|QUIRK_PROCESSES medical_record_text = "Patient demonstrates constant euthymia irregular for environment. It's a bit much, to be honest." mail_goodies = list(/obj/item/clothing/mask/joy) + +/datum/quirk/jolly/process(seconds_per_tick) + // 0.416% is 15 successes / 3600 seconds. Calculated with 2 minute + // mood runtime, so 50% average uptime across the hour. + if(SPT_PROB(0.416, seconds_per_tick)) + quirk_holder.add_mood_event("jolly", /datum/mood_event/jolly) + +/datum/quirk/jolly/remove() + quirk_holder.clear_mood_event("jolly") diff --git a/code/datums/quirks/positive_quirks/spacer.dm b/code/datums/quirks/positive_quirks/spacer.dm index 006cc163d9d..a33f46aae56 100644 --- a/code/datums/quirks/positive_quirks/spacer.dm +++ b/code/datums/quirks/positive_quirks/spacer.dm @@ -14,7 +14,7 @@ medical_record_text = "Patient is well-adapted to non-terrestrial environments." mail_goodies = list( /obj/item/storage/pill_bottle/ondansetron, - /obj/item/reagent_containers/pill/gravitum, + /obj/item/reagent_containers/applicator/pill/gravitum, ) /// How high spacers get bumped up to var/modded_height = HUMAN_HEIGHT_TALLER diff --git a/code/datums/quirks/positive_quirks/strong_stomach.dm b/code/datums/quirks/positive_quirks/strong_stomach.dm index 8c0a3f3b137..3cfcc085233 100644 --- a/code/datums/quirks/positive_quirks/strong_stomach.dm +++ b/code/datums/quirks/positive_quirks/strong_stomach.dm @@ -8,5 +8,5 @@ lose_text = span_danger("Looking at food on the ground makes you feel a little queasy.") medical_record_text = "Patient has a stronger than average immune system...to food poisoning, at least." mail_goodies = list( - /obj/item/reagent_containers/pill/ondansetron, + /obj/item/reagent_containers/applicator/pill/ondansetron, ) diff --git a/code/datums/records/manifest.dm b/code/datums/records/manifest.dm index 3e81468a9b8..072fd93179c 100644 --- a/code/datums/records/manifest.dm +++ b/code/datums/records/manifest.dm @@ -98,7 +98,7 @@ GLOBAL_DATUM_INIT(manifest, /datum/manifest, new) /// Injects a record into the manifest. -/datum/manifest/proc/inject(mob/living/carbon/human/person, client/person_client) // SKYRAT EDIT - RP Records - ORIGINAL: /datum/manifest/proc/inject(mob/living/carbon/human/person) +/datum/manifest/proc/inject(mob/living/carbon/human/person, atom/appearance_proxy, client/person_client) // SKYRAT EDIT - RP Records - ORIGINAL: /datum/manifest/proc/inject(mob/living/carbon/human/person, atom/appearance_proxy) set waitfor = FALSE if(!(person.mind?.assigned_role.job_flags & JOB_CREW_MANIFEST)) return @@ -107,7 +107,7 @@ GLOBAL_DATUM_INIT(manifest, /datum/manifest, new) var/obj/item/card/id/id_card = person.get_idcard(hand_first = FALSE) var/assignment = id_card?.get_trim_assignment() || person.mind.assigned_role.title - var/mutable_appearance/character_appearance = new(person.appearance) + var/mutable_appearance/character_appearance = new(appearance_proxy?.appearance || person.appearance) var/person_gender = "Other" if(person.gender == "male") person_gender = "Male" @@ -179,6 +179,14 @@ GLOBAL_DATUM_INIT(manifest, /datum/manifest, new) target.rank = assignment target.trim = trim +///Removes a record based on its name. +/datum/manifest/proc/remove(name) + var/datum/record/crew/target = find_record(name) + if(!target) + return + general -= target + qdel(target) + /** * Using the name to find the record, and person in reference to the body, we recreate photos for the manifest (and records). * Args: diff --git a/code/datums/records/record.dm b/code/datums/records/record.dm index 1b168530057..f855d8849a5 100644 --- a/code/datums/records/record.dm +++ b/code/datums/records/record.dm @@ -250,7 +250,7 @@ var/mutable_appearance/appearance = character_appearance appearance.setDir(orientation) if(add_height_chart) - appearance.underlays += mutable_appearance('icons/obj/machines/photobooth.dmi', "height_chart", alpha = 125, appearance_flags = RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM) + appearance.underlays += mutable_appearance('icons/obj/machines/photobooth.dmi', "height_chart", alpha = 125, appearance_flags = RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM|KEEP_APART) picture_image = getFlatIcon(appearance) else picture_image = character_appearance diff --git a/code/datums/shuttles/mining.dm b/code/datums/shuttles/mining.dm index 909bc6c928e..21747a488e3 100644 --- a/code/datums/shuttles/mining.dm +++ b/code/datums/shuttles/mining.dm @@ -52,10 +52,6 @@ suffix = "nebula" name = "mining shuttle (Nebula)" -/datum/map_template/shuttle/mining/nebula - suffix = "nebula" - name = "mining shuttle (Nebula)" - // MINING COMMON SHUTTLES /datum/map_template/shuttle/mining_common port_id = "mining_common" diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index f1d2db3e898..be76fa8d6f3 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -437,7 +437,7 @@ owner.log_message("entered a blood frenzy", LOG_ATTACK) to_chat(owner, span_narsiesmall("KILL, KILL, KILL! YOU HAVE NO ALLIES ANYMORE, NO TEAM MATES OR ALLEGIANCES! KILL THEM ALL!")) - var/datum/client_colour/colour = owner.add_client_colour(/datum/client_colour/bloodlust) + var/datum/client_colour/colour = owner.add_client_colour(/datum/client_colour/bloodlust, REF(src)) QDEL_IN(colour, 1.1 SECONDS) return TRUE diff --git a/code/datums/status_effects/buffs/bioware/cortex.dm b/code/datums/status_effects/buffs/bioware/cortex.dm index de11dab1eac..6134b9d7f6b 100644 --- a/code/datums/status_effects/buffs/bioware/cortex.dm +++ b/code/datums/status_effects/buffs/bioware/cortex.dm @@ -13,8 +13,18 @@ // Imprinted brain - Cures basic traumas continuously /datum/status_effect/bioware/cortex/imprinted - tick_interval = 2 SECONDS -/datum/status_effect/bioware/cortex/imprinted/tick(seconds_between_ticks) +/datum/status_effect/bioware/cortex/imprinted/bioware_gained() var/mob/living/carbon/human/human_owner = owner - human_owner.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) + human_owner.cure_all_traumas(resilience = TRAUMA_RESILIENCE_BASIC) + RegisterSignal(human_owner, COMSIG_CARBON_GAIN_TRAUMA, PROC_REF(on_gain_trauma)) + +/datum/status_effect/bioware/cortex/imprinted/bioware_lost() + UnregisterSignal(owner, COMSIG_CARBON_GAIN_TRAUMA) + +/datum/status_effect/bioware/cortex/imprinted/proc/on_gain_trauma(datum/source, datum/brain_trauma/trauma, resilience) + SIGNAL_HANDLER + if(isnull(resilience)) + resilience = trauma.resilience + if(resilience <= TRAUMA_RESILIENCE_BASIC) // there SHOULD be nothing lower than TRAUMA_RESILIENCE_BASIC, but I'd prefer to not make assumptions in case this ever gets some sort of refactor + return COMSIG_CARBON_BLOCK_TRAUMA diff --git a/code/datums/status_effects/buffs/stop_drop_roll.dm b/code/datums/status_effects/buffs/stop_drop_roll.dm index 96db96372dd..e7ff393a1dd 100644 --- a/code/datums/status_effects/buffs/stop_drop_roll.dm +++ b/code/datums/status_effects/buffs/stop_drop_roll.dm @@ -17,13 +17,7 @@ RegisterSignal(owner, COMSIG_LIVING_SET_BODY_POSITION, PROC_REF(body_position_changed)) ADD_TRAIT(owner, TRAIT_HANDS_BLOCKED, TRAIT_STATUS_EFFECT(id)) // they're kinda busy! - owner.visible_message( - span_danger("[owner] rolls on the floor, trying to put [owner.p_them()]self out!"), - span_notice("You stop, drop, and roll!"), - ) - // Start with one weaker roll - owner.spin(spintime = actual_interval, speed = actual_interval / 4) - owner.adjust_fire_stacks(-0.25) + start_rolling() for (var/obj/item/dropped in owner.loc) dropped.extinguish() // Effectively extinguish your items by rolling on them @@ -33,6 +27,14 @@ UnregisterSignal(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_SET_BODY_POSITION)) REMOVE_TRAIT(owner, TRAIT_HANDS_BLOCKED, TRAIT_STATUS_EFFECT(id)) +/datum/status_effect/stop_drop_roll/proc/start_rolling() + owner.visible_message( + span_danger("[owner] rolls on the floor, trying to put [owner.p_them()]self out!"), + span_notice("You stop, drop, and roll!"), + ) + // Start with one weaker roll + reduce_firestacks(0.25) + /datum/status_effect/stop_drop_roll/tick(seconds_between_ticks) if(HAS_TRAIT(owner, TRAIT_IMMOBILIZED) || HAS_TRAIT(owner, TRAIT_INCAPACITATED)) qdel(src) @@ -44,17 +46,17 @@ return owner.spin(spintime = actual_interval, speed = actual_interval / 4) - owner.adjust_fire_stacks(-1) - - if(owner.fire_stacks > 0) + if(!reduce_firestacks(1)) return - owner.visible_message( - span_danger("[owner] successfully extinguishes [owner.p_them()]self!"), - span_notice("You extinguish yourself."), - ) - qdel(src) + stop_rolling_successful() +/// Return TRUE to stop the us from rolling. +/datum/status_effect/stop_drop_roll/proc/reduce_firestacks(amt = 1) + owner.adjust_fire_stacks(-1 * amt) + return owner.fire_stacks <= 0 + +/// Called when we just, stop rolling, due to movement or other reasons. Maybe still on fire, maybe not. /datum/status_effect/stop_drop_roll/proc/stop_rolling(datum/source, ...) SIGNAL_HANDLER @@ -62,8 +64,54 @@ to_chat(owner, span_notice("You stop rolling around.")) qdel(src) +/// Called when we've successfully extinguished ourselves. +/datum/status_effect/stop_drop_roll/proc/stop_rolling_successful() + owner.visible_message( + span_danger("[owner] successfully extinguishes [owner.p_them()]self!"), + span_notice("You extinguish yourself."), + ) + qdel(src) + /datum/status_effect/stop_drop_roll/proc/body_position_changed(datum/source, new_value, old_value) SIGNAL_HANDLER if(new_value != LYING_DOWN) stop_rolling() + +/// Subtype of rolling triggered when someone hallucinating fire tries to stop, drop, and roll. +/datum/status_effect/stop_drop_roll/hallucinating + /// Weakref to the fire hallucination + var/datum/weakref/hallucination_weakref + +/datum/status_effect/stop_drop_roll/hallucinating/on_creation(mob/living/new_owner, datum/weakref/hallucination_weakref) + src.hallucination_weakref = hallucination_weakref + return ..() + +/datum/status_effect/stop_drop_roll/hallucinating/start_rolling() + owner.visible_message( + span_danger("[owner] starts rolling around on the floor, flailing about!"), + span_notice("You stop, drop, and roll!"), + ) + reduce_firestacks(1) // more effective cause it's not real + +/datum/status_effect/stop_drop_roll/hallucinating/reduce_firestacks(amt = 1) + var/datum/hallucination/fire/hallucination = hallucination_weakref?.resolve() + if(!istype(hallucination)) + return TRUE + + hallucination.fake_firestacks += (-1 * amt) + if(hallucination.fake_firestacks <= 0) + hallucination.clear_fire() + return TRUE + return FALSE + +/datum/status_effect/stop_drop_roll/hallucinating/stop_rolling_successful() + var/datum/hallucination/fire/hallucination = hallucination_weakref?.resolve() + if(istype(hallucination)) + hallucination.clear_fire() + + owner.visible_message( + span_danger("[owner] stops flailing around on the ground."), + span_notice("You extinguish yourself."), + ) + qdel(src) diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm index 274b6133c53..4ee7f46ce85 100644 --- a/code/datums/status_effects/debuffs/debuffs.dm +++ b/code/datums/status_effects/debuffs/debuffs.dm @@ -368,8 +368,8 @@ return FALSE marked_underlay = new() - marked_underlay.pixel_x = -owner.pixel_x - marked_underlay.pixel_y = -owner.pixel_y + marked_underlay.pixel_w = -owner.pixel_x + marked_underlay.pixel_z = -owner.pixel_y marked_underlay.transform *= 0.5 owner.vis_contents += marked_underlay animate(marked_underlay, ready_delay, transform = matrix() * 1.2, flags = CIRCULAR_EASING | EASE_IN) @@ -390,7 +390,7 @@ name = "Crusher mark underlay" icon = 'icons/effects/effects.dmi' icon_state = "shield" - appearance_flags = TILE_BOUND|LONG_GLIDE|RESET_COLOR|PIXEL_SCALE + appearance_flags = TILE_BOUND|LONG_GLIDE|RESET_COLOR|PIXEL_SCALE|KEEP_APART vis_flags = VIS_UNDERLAY mouse_opacity = MOUSE_OPACITY_TRANSPARENT @@ -578,7 +578,7 @@ return FALSE RegisterSignal(owner, COMSIG_MOVABLE_HEAR, PROC_REF(hypnotize)) ADD_TRAIT(owner, TRAIT_MUTE, TRAIT_STATUS_EFFECT(id)) - owner.add_client_colour(/datum/client_colour/monochrome/trance) + owner.add_client_colour(/datum/client_colour/monochrome, REF(src)) owner.visible_message("[stun ? span_warning("[owner] stands still as [owner.p_their()] eyes seem to focus on a distant point.") : ""]", \ span_warning(pick("You feel your thoughts slow down...", "You suddenly feel extremely dizzy...", "You feel like you're in the middle of a dream...","You feel incredibly relaxed..."))) return TRUE @@ -592,7 +592,7 @@ UnregisterSignal(owner, COMSIG_MOVABLE_HEAR) REMOVE_TRAIT(owner, TRAIT_MUTE, TRAIT_STATUS_EFFECT(id)) owner.remove_status_effect(/datum/status_effect/dizziness) - owner.remove_client_colour(/datum/client_colour/monochrome/trance) + owner.remove_client_colour(REF(src)) to_chat(owner, span_warning("You snap out of your trance!")) /datum/status_effect/trance/get_examine_text() diff --git a/code/datums/status_effects/debuffs/hallucination.dm b/code/datums/status_effects/debuffs/hallucination.dm index 6ab7df7f244..c6a06b22e87 100644 --- a/code/datums/status_effects/debuffs/hallucination.dm +++ b/code/datums/status_effects/debuffs/hallucination.dm @@ -5,22 +5,26 @@ alert_type = null tick_interval = 2 SECONDS remove_on_fullheal = TRUE + processing_speed = STATUS_EFFECT_NORMAL_PROCESS /// Biotypes which cannot hallucinate. var/barred_biotypes = NO_HALLUCINATION_BIOTYPES /// The lower range of when the next hallucination will trigger after one occurs. - var/lower_tick_interval = 10 SECONDS + var/lower_tick_interval = 20 SECONDS /// The upper range of when the next hallucination will trigger after one occurs. - var/upper_tick_interval = 60 SECONDS + var/upper_tick_interval = 80 SECONDS + /// The maximum hallucination tier that can be picked. + var/max_hallucination_tier = HALLUCINATION_TIER_COMMON + /// If TRUE, we only select hallucinations from the hallucination_tier. + /// If FALSE, it will also include anything below the hallucination_tier. + var/strict_tier = FALSE + /// Tier can be variable, based on the duration of the hallucination. + var/variable_tier = TRUE /// The cooldown for when the next hallucination can occur COOLDOWN_DECLARE(hallucination_cooldown) -/datum/status_effect/hallucination/on_creation(mob/living/new_owner, duration, lower_tick_interval, upper_tick_interval) - if(isnum(duration)) - src.duration = duration - if(isnum(lower_tick_interval)) - src.lower_tick_interval = lower_tick_interval - if(isnum(upper_tick_interval)) - src.upper_tick_interval = upper_tick_interval +/datum/status_effect/hallucination/on_creation(mob/living/new_owner, new_duration) + if(isnum(new_duration)) + src.duration = new_duration return ..() /datum/status_effect/hallucination/on_apply() @@ -86,15 +90,39 @@ if(!COOLDOWN_FINISHED(src, hallucination_cooldown)) return - var/datum/hallucination/picked_hallucination = pick_weight(GLOB.random_hallucination_weighted_list) - owner.cause_hallucination(picked_hallucination, "[id] status effect") - COOLDOWN_START(src, hallucination_cooldown, rand(lower_tick_interval, upper_tick_interval)) + var/lower_cd = lower_tick_interval + var/upper_cd = upper_tick_interval + if(!variable_tier) + var/seconds_left = (duration - world.time) / 10 + switch(seconds_left) + if(0 to 20) + max_hallucination_tier = HALLUCINATION_TIER_COMMON + lower_tick_interval *= 1.2 + upper_tick_interval *= 1.2 + if(20 to 60) + max_hallucination_tier = prob(10) ? HALLUCINATION_TIER_RARE : HALLUCINATION_TIER_UNCOMMON + if(60 to 120) + max_hallucination_tier = HALLUCINATION_TIER_RARE + lower_cd *= 0.75 + upper_cd *= 0.75 + if(120 to INFINITY) + max_hallucination_tier = HALLUCINATION_TIER_VERYSPECIAL + lower_cd *= 0.5 + upper_cd *= 0.5 + + var/datum/hallucination/picked_hallucination = get_random_hallucination(max_hallucination_tier, strict_tier) + if(!owner.cause_hallucination(picked_hallucination, "[id] status effect")) + lower_cd *= 0.25 + upper_cd *= 0.25 + COOLDOWN_START(src, hallucination_cooldown, rand(lower_cd, upper_cd)) // Sanity related hallucinations /datum/status_effect/hallucination/sanity id = "low sanity" status_type = STATUS_EFFECT_REFRESH duration = STATUS_EFFECT_PERMANENT // This lasts "forever", only goes away with sanity gain + max_hallucination_tier = HALLUCINATION_TIER_UNCOMMON + variable_tier = FALSE /datum/status_effect/hallucination/sanity/on_health_scan(datum/source, list/render_list, advanced, mob/user, mode, tochat) return @@ -133,3 +161,18 @@ else stack_trace("[type] was assigned a mob which was not crazy or insane. (was: [owner.mob_mood.sanity_level])") qdel(src) + +/datum/status_effect/hallucination/perceptomatrix + id = "perceptomatrix_hallucination" + status_type = STATUS_EFFECT_REFRESH + strict_tier = TRUE + variable_tier = FALSE + +/datum/status_effect/hallucination/perceptomatrix/refresh(mob/living/refresh_owner, new_duration) + src.duration += new_duration + +/datum/status_effect/hallucination/perceptomatrix/on_creation(mob/living/new_owner, new_duration) + if(isnum(new_duration)) + src.lower_tick_interval = new_duration * 0.2 + src.upper_tick_interval = new_duration + return ..() diff --git a/code/datums/status_effects/debuffs/jitteriness.dm b/code/datums/status_effects/debuffs/jitteriness.dm index 32460b433b0..ad9a7625133 100644 --- a/code/datums/status_effects/debuffs/jitteriness.dm +++ b/code/datums/status_effects/debuffs/jitteriness.dm @@ -22,9 +22,7 @@ /datum/status_effect/jitter/on_remove() UnregisterSignal(owner, COMSIG_LIVING_DEATH) owner.clear_mood_event(id) - // juuust in case, reset our x and y's from our jittering - owner.pixel_x = 0 - owner.pixel_y = 0 + owner.update_offsets() /datum/status_effect/jitter/get_examine_text() switch(duration - world.time) diff --git a/code/datums/status_effects/debuffs/terrified.dm b/code/datums/status_effects/debuffs/terrified.dm index 61c4abcea3b..dcbe2f1f80e 100644 --- a/code/datums/status_effects/debuffs/terrified.dm +++ b/code/datums/status_effects/debuffs/terrified.dm @@ -1,155 +1,26 @@ -/// Amount of terror passively generated (or removed) on every tick based on lighting. -#define DARKNESS_TERROR_AMOUNT 10 -/// How much terror a random panic attack will give the victim. -#define PANIC_ATTACK_TERROR_AMOUNT 35 -/// Amount of terror actively removed (or generated) upon being hugged. -#define HUG_TERROR_AMOUNT 60 +/// How much terror is applied upon first cast of Terrify +#define TERROR_INITIAL_AMOUNT 100 /// Amount of terror caused by subsequent casting of the Terrify spell. #define STACK_TERROR_AMOUNT 135 -/// The soft cap on how much passively generated terror you can have. Takes about 30 seconds to reach without the victim being actively terrorized. -#define DARKNESS_TERROR_CAP 400 - -/// The terror_buildup threshold for minor fear effects to occur. -#define TERROR_FEAR_THRESHOLD 140 -/// The terror_buildup threshold for the more serious effects. Takes about 20 seconds of darkness buildup to reach. -#define TERROR_PANIC_THRESHOLD 300 -/// Terror buildup will cause a heart attack and knock them out, removing the status effect. -#define TERROR_HEART_ATTACK_THRESHOLD 600 - /datum/status_effect/terrified id = "terrified" status_type = STATUS_EFFECT_REFRESH remove_on_fullheal = TRUE alert_type = /atom/movable/screen/alert/status_effect/terrified - ///A value that represents how much "terror" the victim has built up. Higher amounts cause more averse effects. - var/terror_buildup = 100 - -/datum/status_effect/terrified/refresh(effect, ...) //Don't call parent, just add to the current amount - freak_out(STACK_TERROR_AMOUNT) /datum/status_effect/terrified/on_apply() - RegisterSignal(owner, COMSIG_CARBON_PRE_MISC_HELP, PROC_REF(comfort_owner)) - owner.emote("scream") to_chat(owner, span_alert("The darkness closes in around you, shadows dance around the corners of your vision... It feels like something is watching you!")) + owner.emote("scream") + owner.AddComponentFrom("terrified", /datum/component/fearful, list(/datum/terror_handler/simple_source/nyctophobia/terrified), TERROR_INITIAL_AMOUNT) return TRUE /datum/status_effect/terrified/on_remove() - UnregisterSignal(owner, COMSIG_CARBON_HELPED) - owner.remove_fov_trait(id, FOV_270_DEGREES) + owner.RemoveComponentSource("terrified", /datum/component/fearful) -/datum/status_effect/terrified/tick(seconds_between_ticks) - if(check_surrounding_darkness()) - if(terror_buildup < DARKNESS_TERROR_CAP) - terror_buildup += DARKNESS_TERROR_AMOUNT - else - terror_buildup -= DARKNESS_TERROR_AMOUNT - - if(terror_buildup <= 0) //If we've completely calmed down, we remove the status effect. - qdel(src) - return - - if(terror_buildup >= TERROR_FEAR_THRESHOLD) //The onset, minor effects of terror buildup - owner.adjust_dizzy_up_to(10 SECONDS * seconds_between_ticks, 10 SECONDS) - owner.adjust_stutter_up_to(10 SECONDS * seconds_between_ticks, 10 SECONDS) - owner.adjust_jitter_up_to(10 SECONDS * seconds_between_ticks, 10 SECONDS) - - if(terror_buildup >= TERROR_PANIC_THRESHOLD) //If you reach this amount of buildup in an engagement, it's time to start looking for a way out. - owner.playsound_local(get_turf(owner), 'sound/effects/health/slowbeat.ogg', 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE) - owner.add_fov_trait(id, FOV_270_DEGREES) //Terror induced tunnel vision - owner.adjust_eye_blur_up_to(10 SECONDS * seconds_between_ticks, 10 SECONDS) - if(prob(5)) //We have a little panic attack. Consider it GENTLE ENCOURAGEMENT to start running away. - freak_out(PANIC_ATTACK_TERROR_AMOUNT) - owner.visible_message( - span_warning("[owner] drops to the floor for a moment, clutching their chest."), - span_alert("Your heart lurches in your chest. You can't take much more of this!"), - span_hear("You hear a grunt."), - ) - else - owner.remove_fov_trait(id, FOV_270_DEGREES) - - if(terror_buildup >= TERROR_HEART_ATTACK_THRESHOLD) //You should only be able to reach this by actively terrorizing someone - owner.visible_message( - span_warning("[owner] clutches [owner.p_their()] chest for a moment, then collapses to the floor."), - span_alert("The shadows begin to creep up from the corners of your vision, and then there is nothing..."), - span_hear("You hear something heavy collide with the ground."), - ) - var/datum/disease/heart_failure/heart_attack = new(src) - heart_attack.stage_prob = 2 //Advances twice as fast - owner.ForceContractDisease(heart_attack) - owner.Unconscious(20 SECONDS) - qdel(src) //Victim passes out from fear, calming them down and permenantly damaging their heart. - -/datum/status_effect/terrified/get_examine_text() - if(terror_buildup > DARKNESS_TERROR_CAP) //If we're approaching a heart attack - return span_boldwarning("[owner.p_They()] [owner.p_are()] seizing up, about to collapse in fear!") - - if(terror_buildup >= TERROR_PANIC_THRESHOLD) - return span_boldwarning("[owner] is visibly trembling and twitching. It looks like [owner.p_theyre()] freaking out!") - - if(terror_buildup >= TERROR_FEAR_THRESHOLD) - return span_warning("[owner] looks very worried about something. [owner.p_are(TRUE)] [owner.p_they()] alright?") - - return span_notice("[owner] looks rather anxious. [owner.p_They()] could probably use a hug...") - -/// If we get a hug from a friend, we calm down! If we get a hug from a nightmare, we FREAK OUT. -/datum/status_effect/terrified/proc/comfort_owner(datum/source, mob/living/hugger) - SIGNAL_HANDLER - - if(hugger == owner) - return - - if(isnightmare(hugger)) //hey wait a minute, that's not a comforting, friendly hug! - if(check_surrounding_darkness()) - addtimer(CALLBACK(src, PROC_REF(freak_out), HUG_TERROR_AMOUNT)) - owner.visible_message( - span_warning("[owner] recoils in fear as [hugger] waves [hugger.p_their()] arms and shrieks at [owner.p_them()]!"), - span_boldwarning("The shadows lash out at you, and you drop to the ground in fear!"), - span_hear("You hear someone shriek in fear. How embarassing!"), - ) - return COMPONENT_BLOCK_MISC_HELP - - terror_buildup -= HUG_TERROR_AMOUNT - owner.visible_message( - span_notice("[owner] seems to relax as [hugger] gives [owner.p_them()] a comforting hug."), - span_nicegreen("You feel yourself calm down as [hugger] gives you a reassuring hug."), - span_hear("You hear shuffling and a sigh of relief."), - ) - -/** - * Checks the surroundings of our victim and returns TRUE if the user is surrounded by enough darkness - * - * Checks the surrounded tiles for light amount. If the user has more light nearby, return true. - * Otherwise, return false - */ - -/datum/status_effect/terrified/proc/check_surrounding_darkness() - var/lit_tiles = 0 - var/unlit_tiles = 0 - - for(var/turf/open/turf_to_check in range(1, owner.loc)) - var/light_amount = turf_to_check.get_lumcount() - if(light_amount > 0.2) - lit_tiles++ - else - unlit_tiles++ - - return lit_tiles < unlit_tiles - -/** - * Adds to the victim's terror buildup, makes them scream, and knocks them over for a moment. - * - * Makes the victm scream and adds the passed amount to their buildup. - * Knocks over the victim for a brief moment. - * - * * amount - how much terror buildup this freakout will cause - */ - -/datum/status_effect/terrified/proc/freak_out(amount) - terror_buildup += amount - owner.Knockdown(0.5 SECONDS) - if(prob(50)) - owner.emote("scream") +/datum/status_effect/terrified/refresh(effect, ...) + // Jank way of adding terror to the existing component + owner.AddComponentFrom("terrified", /datum/component/fearful, null, STACK_TERROR_AMOUNT) /// The status effect popup for the terror status effect /atom/movable/screen/alert/status_effect/terrified @@ -157,11 +28,5 @@ desc = "You feel a supernatural darkness settle in around you, overwhelming you with panic! Get into the light!" icon_state = "terrified" -#undef DARKNESS_TERROR_AMOUNT -#undef PANIC_ATTACK_TERROR_AMOUNT -#undef HUG_TERROR_AMOUNT +#undef TERROR_INITIAL_AMOUNT #undef STACK_TERROR_AMOUNT -#undef DARKNESS_TERROR_CAP -#undef TERROR_FEAR_THRESHOLD -#undef TERROR_PANIC_THRESHOLD -#undef TERROR_HEART_ATTACK_THRESHOLD diff --git a/code/datums/status_effects/debuffs/vision/blindness.dm b/code/datums/status_effects/debuffs/vision/blindness.dm index c0e5249cad6..caf8e98a2b0 100644 --- a/code/datums/status_effects/debuffs/vision/blindness.dm +++ b/code/datums/status_effects/debuffs/vision/blindness.dm @@ -4,6 +4,8 @@ /// Blindness /datum/status_effect/grouped/blindness + // This is not "remove on fullheal" as in practice, + // fullheal should instead remove all the sources and in turn cure this id = "blindness" tick_interval = STATUS_EFFECT_NO_TICK alert_type = /atom/movable/screen/alert/status_effect/blind @@ -11,37 +13,52 @@ SIGNAL_REMOVETRAIT(TRAIT_SIGHT_BYPASS), SIGNAL_ADDTRAIT(TRAIT_SIGHT_BYPASS), ) - // This is not "remove on fullheal" as in practice, - // fullheal should instead remove all the sources and in turn cure this + /// List of sources which prevent SIGHT_BYPASS from working + var/static/list/blocking_sources = list( + QUIRK_TRAIT, // Meant to be completely immutable + ECHOLOCATION_TRAIT, // Breaks the UI badly + UNCONSCIOUS_TRAIT, // Duh + ) /datum/status_effect/grouped/blindness/on_apply() - if(!CAN_BE_BLIND(owner)) + if (!CAN_BE_BLIND(owner)) return FALSE RegisterSignals(owner, update_signals, PROC_REF(update_blindness)) - update_blindness() - return ..() +/datum/status_effect/grouped/blindness/source_added(source, ...) + update_blindness() + +/datum/status_effect/grouped/blindness/source_removed(source, removing) + if (!removing) + update_blindness() + /datum/status_effect/grouped/blindness/proc/update_blindness() - if(!CAN_BE_BLIND(owner)) // future proofing + if (!CAN_BE_BLIND(owner)) // future proofing qdel(src) return - if(HAS_TRAIT(owner, TRAIT_SIGHT_BYPASS)) - make_unblind() + if (!HAS_TRAIT(owner, TRAIT_SIGHT_BYPASS)) + make_blind() return - make_blind() + + for (var/blocker in blocking_sources) + if (owner.is_blind_from(blocker)) + make_blind() + return + + make_unblind() /datum/status_effect/grouped/blindness/proc/make_blind() owner.overlay_fullscreen(id, /atom/movable/screen/fullscreen/blind) // You are blind - at most, able to make out shapes near you - owner.add_client_colour(/datum/client_colour/monochrome/blind) + owner.add_client_colour(/datum/client_colour/monochrome, REF(src)) /datum/status_effect/grouped/blindness/proc/make_unblind() owner.clear_fullscreen(id) - owner.remove_client_colour(/datum/client_colour/monochrome/blind) + owner.remove_client_colour(REF(src)) /datum/status_effect/grouped/blindness/on_remove() make_unblind() diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index 4a3dc8bd0b7..dd80a09e43f 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -734,6 +734,8 @@ id = "spotlight_light" processing_speed = STATUS_EFFECT_NORMAL_PROCESS alert_type = null + /// Color of the light + var/spotlight_color = "#e2e2ca" /// Dummy lighting object to simulate the spotlight highlighting the mob. var/obj/effect/dummy/lighting_obj/moblight/mob_light_obj /// First visual overlay, this one sits on the back of the mob. @@ -747,14 +749,16 @@ return ..() /datum/status_effect/spotlight_light/on_apply() - mob_light_obj = owner.mob_light(2, 1.5, "#e2e2ca") + mob_light_obj = owner.mob_light(2, 1.5, spotlight_color) beam_from_above_a = new /obj/effect/overlay/spotlight + beam_from_above_a.color = spotlight_color beam_from_above_a.alpha = BEAM_ALPHA owner.vis_contents += beam_from_above_a beam_from_above_a.layer = BELOW_MOB_LAYER beam_from_above_b = new /obj/effect/overlay/spotlight + beam_from_above_b.color = spotlight_color beam_from_above_b.alpha = BEAM_ALPHA beam_from_above_b.layer = ABOVE_MOB_LAYER beam_from_above_b.pixel_y = -2 //Slight vertical offset for an illusion of volume @@ -763,9 +767,14 @@ return TRUE /datum/status_effect/spotlight_light/on_remove() - if(beam_from_above_a || beam_from_above_b) - owner.vis_contents -= beam_from_above_a - owner.vis_contents -= beam_from_above_b + owner.vis_contents -= beam_from_above_a + owner.vis_contents -= beam_from_above_b + QDEL_NULL(beam_from_above_a) + QDEL_NULL(beam_from_above_b) QDEL_NULL(mob_light_obj) +/datum/status_effect/spotlight_light/divine + id = "divine_spotlight" + duration = 3 SECONDS + #undef BEAM_ALPHA diff --git a/code/datums/status_effects/stacking_effect.dm b/code/datums/status_effects/stacking_effect.dm index d3f128045ce..5f396a6817f 100644 --- a/code/datums/status_effects/stacking_effect.dm +++ b/code/datums/status_effects/stacking_effect.dm @@ -120,10 +120,10 @@ status_overlay = mutable_appearance(overlay_file, "[overlay_state][stacks]") status_underlay = mutable_appearance(underlay_file, "[underlay_state][stacks]") var/icon_height = owner.get_cached_height() - status_overlay.pixel_x = -owner.pixel_x - status_overlay.pixel_y = FLOOR(icon_height * 0.25, 1) + status_overlay.pixel_w = -owner.pixel_x + status_overlay.pixel_z = FLOOR(icon_height * 0.25, 1) status_overlay.transform = matrix() * (icon_height/ICON_SIZE_Y) //scale the status's overlay size based on the target's icon size - status_underlay.pixel_x = -owner.pixel_x + status_underlay.pixel_w = -owner.pixel_x status_underlay.transform = matrix() * (icon_height/ICON_SIZE_Y) * 3 status_underlay.alpha = 40 owner.add_overlay(status_overlay) diff --git a/code/datums/storage/subtypes/pockets.dm b/code/datums/storage/subtypes/pockets.dm index 961d4941261..aed72ddacad 100644 --- a/code/datums/storage/subtypes/pockets.dm +++ b/code/datums/storage/subtypes/pockets.dm @@ -94,7 +94,7 @@ /obj/item/scalpel, /obj/item/dnainjector, /obj/item/reagent_containers/syringe, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator/pill, /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, /obj/item/implanter, diff --git a/code/datums/wires/_wires.dm b/code/datums/wires/_wires.dm index d81e68d8bc1..a7e0eaf7b62 100644 --- a/code/datums/wires/_wires.dm +++ b/code/datums/wires/_wires.dm @@ -88,6 +88,7 @@ LAZYCLEARLIST(assemblies) return ..() +/// Adds a number of wires which do absolutely nothing. /datum/wires/proc/add_duds(duds) while(duds) var/dud = WIRE_DUD_PREFIX + "[--duds]" @@ -102,30 +103,35 @@ qdel(src) /datum/wires/proc/randomize() - var/static/list/possible_colors = list( - "blue", - "brown", - "crimson", - "cyan", - "gold", - "green", - "grey", - "lime", - "magenta", - "orange", - "pink", - "purple", - "red", - "silver", - "violet", - "white", - "yellow", + var/static/list/default_possible_colors = list( + "blue", + "brown", + "crimson", + "cyan", + "gold", + "green", + "grey", + "lime", + "magenta", + "orange", + "pink", + "purple", + "red", + "silver", + "violet", + "white", + "yellow", ) - var/list/my_possible_colors = possible_colors.Copy() + if(length(wires) > length(default_possible_colors)) + stack_trace("Wire type [type] has more wires than possible colors, consider adding more colors or removing wires.") + + var/list/possible_colors = default_possible_colors.Copy() for(var/wire in shuffle(wires)) - colors[pick_n_take(my_possible_colors)] = wire + if(!length(possible_colors)) + possible_colors = default_possible_colors.Copy() + colors[pick_n_take(possible_colors)] = wire /datum/wires/proc/shuffle_wires() colors.Cut() diff --git a/code/datums/wires/big_manipulator.dm b/code/datums/wires/big_manipulator.dm index b23050c2978..f66786d06d0 100644 --- a/code/datums/wires/big_manipulator.dm +++ b/code/datums/wires/big_manipulator.dm @@ -21,11 +21,11 @@ /datum/wires/big_manipulator/get_status() var/obj/machinery/big_manipulator/manipulator_big = holder var/list/status = list() - status += "The big light bulb is [manipulator_big.on_button_cutted ? "went out" : manipulator_big.on ? "green" : "red"]." + status += "The big light bulb [manipulator_big.power_access_wire_cut ? "has went out" : "is glowing [manipulator_big.on ? "green" : "red"]"]." status += "The small red light shows: [isnull(manipulator_big.containment_obj) ? "empty" : "full"]." status += "Text on the yellow board shows: [manipulator_big.selected_type.name]." - status += "There are [manipulator_big.manipulate_mode] text on the small blue panel." - status += "The purple light is [manipulator_big.only_highest_priority ? "on" : "off"]." + status += "There are [manipulator_big.interaction_mode] text on the small blue panel." + status += "The purple light is [manipulator_big.override_priority ? "on" : "off"]." status += "The number on small white panel shows [manipulator_big.manipulator_throw_range]." return status @@ -35,20 +35,20 @@ if(WIRE_ON) manipulator_big.try_press_on(usr) if(WIRE_DROP) - manipulator_big.drop_containment_item() + manipulator_big.drop_held_object() if(WIRE_ITEM_TYPE) - manipulator_big.change_what_take_type() + manipulator_big.cycle_pickup_type() if(WIRE_CHANGE_MODE) manipulator_big.change_mode() if(WIRE_ONE_PRIORITY_BUTTON) - manipulator_big.only_highest_priority = !manipulator_big.only_highest_priority + manipulator_big.override_priority = !manipulator_big.override_priority if(WIRE_THROW_RANGE) - manipulator_big.change_throw_range() + manipulator_big.cycle_throw_range() /datum/wires/big_manipulator/on_cut(wire, mend, source) var/obj/machinery/big_manipulator/manipulator_big = holder if(wire == WIRE_ON) if(mend) - manipulator_big.on_button_cutted = FALSE + manipulator_big.power_access_wire_cut = FALSE return - manipulator_big.on_button_cutted = TRUE + manipulator_big.power_access_wire_cut = TRUE diff --git a/code/datums/wires/explosive.dm b/code/datums/wires/explosive.dm index c8d576cf4f3..2b474f4cb1d 100644 --- a/code/datums/wires/explosive.dm +++ b/code/datums/wires/explosive.dm @@ -42,23 +42,30 @@ return . = ..() -/datum/wires/explosive/chem_grenade/attach_assembly(color, obj/item/assembly/S) - if(istype(S,/obj/item/assembly/timer)) - var/obj/item/grenade/chem_grenade/G = holder - var/obj/item/assembly/timer/T = S - G.det_time = T.saved_time*10 - else if(istype(S,/obj/item/assembly/prox_sensor)) - var/obj/item/assembly/prox_sensor/sensor = S - var/obj/item/grenade/chem_grenade/grenade = holder +/datum/wires/explosive/chem_grenade/attach_assembly(color, obj/item/assembly/assembly) + fingerprint = assembly.fingerprintslast + var/obj/item/grenade/chem_grenade/grenade = holder + if(!assembly.secured) + assembly.toggle_secure() + + if(istype(assembly, /obj/item/assembly/timer)) + var/obj/item/assembly/timer/timer = assembly + grenade.det_time = timer.saved_time SECONDS + return ..() + + if(istype(assembly, /obj/item/assembly/prox_sensor)) + var/obj/item/assembly/prox_sensor/sensor = assembly grenade.landminemode = sensor sensor.proximity_monitor.set_ignore_if_not_on_turf(FALSE) - else if(istype(S,/obj/item/assembly/health)) - var/obj/item/assembly/health/sensor = S - if(!sensor.secured) - sensor.toggle_secure() - if(!sensor.scanning) - sensor.toggle_scan() - fingerprint = S.fingerprintslast + sensor.time = grenade.det_time * 0.1 + return ..() + + if(!istype(assembly, /obj/item/assembly/health)) + return ..() + + var/obj/item/assembly/health/sensor = assembly + if(!sensor.scanning) + sensor.toggle_scan() return ..() /datum/wires/explosive/chem_grenade/explode() @@ -71,8 +78,7 @@ if(!grenade.dud_flags) message_admins(message) log_game(message) - var/mob/M = get_mob_by_ckey(fingerprint) - grenade.log_grenade(M) //Used in arm_grenade() too but this one conveys where the mob who triggered the bomb is + grenade.log_grenade(get_mob_by_ckey(fingerprint)) //Used in arm_grenade() too but this one conveys where the mob who triggered the bomb is if(grenade.landminemode) grenade.detonate() ///already armed else @@ -80,22 +86,24 @@ /datum/wires/explosive/chem_grenade/detach_assembly(color) - var/obj/item/assembly/S = get_attached(color) - if(S && istype(S)) - assemblies -= color - S.connected = null - S.holder = null - S.forceMove(holder.drop_location()) - var/obj/item/grenade/chem_grenade/G = holder - G.landminemode = null - return S + var/obj/item/assembly/assembly = get_attached(color) + if(!istype(assembly)) + return + + var/obj/item/grenade/chem_grenade/grenade = holder + assemblies -= color + assembly.connected = null + assembly.holder = null + assembly.forceMove(holder.drop_location()) + grenade.landminemode = null + return assembly /datum/wires/explosive/c4 // Also includes X4 holder_type = /obj/item/grenade/c4 /datum/wires/explosive/c4/explode() - var/obj/item/grenade/c4/P = holder - P.detonate() + var/obj/item/grenade/c4/bomb = holder + bomb.detonate() /datum/wires/explosive/pizza holder_type = /obj/item/pizzabox @@ -110,37 +118,38 @@ /datum/wires/explosive/pizza/interactable(mob/user) if(!..()) return FALSE - var/obj/item/pizzabox/P = holder - if(P.open && P.bomb) + var/obj/item/pizzabox/pizza_bomb = holder + if(pizza_bomb.open && pizza_bomb.bomb) return TRUE /datum/wires/explosive/pizza/get_status() - var/obj/item/pizzabox/P = holder + var/obj/item/pizzabox/pizza_bomb = holder var/list/status = list() - status += "The red light is [P.bomb_active ? "on" : "off"]." - status += "The green light is [P.bomb_defused ? "on": "off"]." + status += "The red light is [pizza_bomb.bomb_active ? "on" : "off"]." + status += "The green light is [pizza_bomb.bomb_defused ? "on": "off"]." return status /datum/wires/explosive/pizza/on_pulse(wire) - var/obj/item/pizzabox/P = holder - switch(wire) - if(WIRE_DISARM) // Pulse to toggle - P.bomb_defused = !P.bomb_defused - else // Boom - explode() + var/obj/item/pizzabox/pizza_bomb = holder + if(wire == WIRE_DISARM) // Pulse to toggle + pizza_bomb.bomb_defused = !pizza_bomb.bomb_defused + else // Boom + explode() /datum/wires/explosive/pizza/on_cut(wire, mend, source) - var/obj/item/pizzabox/P = holder - switch(wire) - if(WIRE_DISARM) // Disarm and untrap the box. - if(!mend) - P.bomb_defused = TRUE - else - if(!mend && !P.bomb_defused) - if (!isnull(source)) - log_combat(source, holder, "cut the detonation wire for") - explode() + if (mend) + return + + var/obj/item/pizzabox/pizza_bomb = holder + if(wire == WIRE_DISARM) // Disarm and untrap the box. + pizza_bomb.bomb_defused = TRUE + return + + if(!pizza_bomb.bomb_defused) + if (!isnull(source)) + log_combat(source, holder, "cut the detonation wire for") + explode() /datum/wires/explosive/pizza/explode() - var/obj/item/pizzabox/P = holder - P.bomb.detonate() + var/obj/item/pizzabox/pizza_bomb = holder + pizza_bomb.bomb.detonate() diff --git a/code/datums/wires/holopad.dm b/code/datums/wires/holopad.dm new file mode 100644 index 00000000000..72a8a518b21 --- /dev/null +++ b/code/datums/wires/holopad.dm @@ -0,0 +1,47 @@ +/datum/wires/holopad + holder_type = /obj/machinery/holopad + proper_name = "holopad" + +/datum/wires/holopad/interactable(mob/user) + var/obj/machinery/holopad/holopad = holder + + return holopad.panel_open ? ..() : FALSE + +/datum/wires/holopad/New(atom/holder) + wires = list( + WIRE_LOOP_MODE, + WIRE_REPLAY_MODE + ) + return ..() + +/datum/wires/holopad/get_status() + var/obj/machinery/holopad/holopad = holder + var/list/status = list() + status += "The purple light is [holopad.loop_mode ? "on" : "off"]." + status += "The red light is [holopad.replay_mode ? "on" : "off"]." + return status + +/datum/wires/holopad/on_pulse(wire) + var/obj/machinery/holopad/holopad = holder + switch(wire) + if(WIRE_LOOP_MODE) + holopad.loop_mode = !holopad.loop_mode + if(WIRE_REPLAY_MODE) + if (!holopad.replay_mode) + holopad.replay_start() + holopad.replay_mode = TRUE + else + holopad.replay_stop() + holopad.replay_mode = FALSE + return ..() + +/datum/wires/holopad/on_cut(wire, mend, source) + var/obj/machinery/holopad/holopad = holder + if(wire == WIRE_REPLAY_MODE) + if(mend) + holopad.replay_stop() + holopad.replay_mode = FALSE + else + holopad.replay_start() + holopad.replay_mode = TRUE + return ..() diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm index d7f98f07deb..3b79e3c4188 100644 --- a/code/datums/wires/syndicatebomb.dm +++ b/code/datums/wires/syndicatebomb.dm @@ -4,109 +4,140 @@ randomize = TRUE /datum/wires/syndicatebomb/New(atom/holder) + setup_wires() + return ..() + +/** + * Handles setting up the wires list. + * + * * num_booms: The number of boom wires to add. + * * num_duds: The number of dud wires to add. + */ +/datum/wires/syndicatebomb/proc/setup_wires(num_booms = 2, num_duds = 0) wires = list( - WIRE_BOOM, WIRE_BOOM2, WIRE_UNBOLT, - WIRE_ACTIVATE, WIRE_DELAY, WIRE_PROCEED + WIRE_ACTIVATE, + WIRE_DELAY, + WIRE_PROCEED, + WIRE_UNBOLT, ) - ..() + add_booms(num_booms) + add_duds(num_duds) + shuffle_wires() + +/// Adds a number of wires which will explode the bomb if pulse/cut +/datum/wires/syndicatebomb/proc/add_booms(booms = 2) + for(var/i in 1 to booms) + wires += "[WIRE_BOOM] [i]" /datum/wires/syndicatebomb/interactable(mob/user) - if(!..()) + var/obj/machinery/syndicatebomb/bomb = holder + return ..() && bomb.open_panel + +/// Translates numbered boom wires into WIRE_BOOM. +/datum/wires/syndicatebomb/proc/parse_wire(wire) + return findtext(wire, WIRE_BOOM) ? WIRE_BOOM : wire + +/// Checks if the bomb, if detonated, is dangerous to the user. +/datum/wires/syndicatebomb/proc/is_dangerous() + var/obj/machinery/syndicatebomb/bomb = holder + if(isnull(bomb.payload)) return FALSE - var/obj/machinery/syndicatebomb/P = holder - if(P.open_panel) - return TRUE + if(istype(bomb.payload, /obj/item/bombcore/training)) + return FALSE + return TRUE -/datum/wires/syndicatebomb/on_pulse(wire) - var/obj/machinery/syndicatebomb/B = holder - switch(wire) - if(WIRE_BOOM,WIRE_BOOM2) - if(B.active) - holder.visible_message(span_danger("[icon2html(B, viewers(holder))] An alarm sounds! It's go-")) - B.explode_now = TRUE - if(!istype(B.payload, /obj/machinery/syndicatebomb/training)) - tell_admins(B) - // Cursed usr use but no easy way to get the pulser - if(isliving(usr)) - add_memory_in_range(B, 7, /datum/memory/bomb_defuse_failure, protagonist = usr, antagonist = B) +/datum/wires/syndicatebomb/on_pulse(wire, mob/user) + var/obj/machinery/syndicatebomb/bomb = holder + switch(parse_wire(wire)) + if(WIRE_BOOM) + if(!bomb.active) + holder.visible_message(span_notice("[icon2html(bomb, viewers(holder))] Nothing happens.")) + return - else - holder.visible_message(span_notice("[icon2html(B, viewers(holder))] Nothing happens.")) + holder.visible_message(span_danger("[icon2html(bomb, viewers(holder))] An alarm sounds! It's go-")) + bomb.explode_now = TRUE + if(is_dangerous()) + tell_admins(bomb, user, "detonated via boom wire") + if(isliving(user)) + add_memory_in_range(bomb, 7, /datum/memory/bomb_defuse_failure, protagonist = user, antagonist = bomb) if(WIRE_UNBOLT) - holder.visible_message(span_notice("[icon2html(B, viewers(holder))] The bolts spin in place for a moment.")) + holder.visible_message(span_notice("[icon2html(bomb, viewers(holder))] The bolts spin in place for a moment.")) if(WIRE_DELAY) - if(B.delayedbig) - holder.visible_message(span_notice("[icon2html(B, viewers(holder))] Nothing happens.")) - else - holder.visible_message(span_notice("[icon2html(B, viewers(holder))] The bomb chirps.")) - playsound(B, 'sound/machines/chime.ogg', 30, TRUE) - B.detonation_timer += 300 - if(B.active) - B.delayedbig = TRUE + if(bomb.delayedbig) + holder.visible_message(span_notice("[icon2html(bomb, viewers(holder))] Nothing happens.")) + return + + holder.visible_message(span_notice("[icon2html(bomb, viewers(holder))] The bomb chirps.")) + playsound(bomb, 'sound/machines/chime.ogg', 30, TRUE) + bomb.detonation_timer += (30 SECONDS) + if(bomb.active) + bomb.delayedbig = TRUE if(WIRE_PROCEED) - holder.visible_message(span_danger("[icon2html(B, viewers(holder))] The bomb buzzes ominously!")) - playsound(B, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE) - var/seconds = B.seconds_remaining() + holder.visible_message(span_danger("[icon2html(bomb, viewers(holder))] The bomb buzzes ominously!")) + playsound(bomb, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE) + var/seconds = bomb.seconds_remaining() if(seconds >= 61) // Long fuse bombs can suddenly become more dangerous if you tinker with them. - B.detonation_timer = world.time + 600 + bomb.detonation_timer = world.time + (60 SECONDS) else if(seconds >= 21) - B.detonation_timer -= 100 + bomb.detonation_timer -= (10 SECONDS) else if(seconds >= 11) // Both to prevent negative timers and to have a little mercy. - B.detonation_timer = world.time + 100 + bomb.detonation_timer = world.time + (10 SECONDS) if(WIRE_ACTIVATE) - if(!B.active) - holder.visible_message(span_danger("[icon2html(B, viewers(holder))] You hear the bomb start ticking!")) - B.activate() - B.update_appearance() - else if(B.delayedlittle) - holder.visible_message(span_notice("[icon2html(B, viewers(holder))] Nothing happens.")) + if(!bomb.active) + holder.visible_message(span_danger("[icon2html(bomb, viewers(holder))] You hear the bomb start ticking!")) + bomb.activate() + bomb.update_appearance() + else if(bomb.delayedlittle) + holder.visible_message(span_notice("[icon2html(bomb, viewers(holder))] Nothing happens.")) else - holder.visible_message(span_notice("[icon2html(B, viewers(holder))] The bomb seems to hesitate for a moment.")) - B.detonation_timer += 100 - B.delayedlittle = TRUE + holder.visible_message(span_notice("[icon2html(bomb, viewers(holder))] The bomb seems to hesitate for a moment.")) + bomb.detonation_timer += 100 + bomb.delayedlittle = TRUE /datum/wires/syndicatebomb/on_cut(wire, mend, source) - var/obj/machinery/syndicatebomb/B = holder - switch(wire) - if(WIRE_BOOM,WIRE_BOOM2) - if(!mend && B.active) - holder.visible_message(span_danger("[icon2html(B, viewers(holder))] An alarm sounds! It's go-")) - B.explode_now = TRUE - if(!istype(B.payload, /obj/machinery/syndicatebomb/training)) - tell_admins(B) - if(isliving(source)) - log_combat(source, holder, "cut the detonation wire for") - add_memory_in_range(B, 7, /datum/memory/bomb_defuse_failure, protagonist = source, antagonist = B) + var/obj/machinery/syndicatebomb/bomb = holder + switch(parse_wire(wire)) + if(WIRE_BOOM) + if(mend || !bomb.active) + return + holder.visible_message(span_danger("[icon2html(bomb, viewers(holder))] An alarm sounds! It's go-")) + bomb.explode_now = TRUE + if(is_dangerous()) + tell_admins(bomb, source, "detonated via boom wire") + if(isliving(source)) + add_memory_in_range(bomb, 7, /datum/memory/bomb_defuse_failure, protagonist = source, antagonist = bomb) if(WIRE_UNBOLT) - if(!mend && B.anchored) - holder.visible_message(span_notice("[icon2html(B, viewers(holder))] The bolts lift out of the ground!")) - playsound(B, 'sound/effects/stealthoff.ogg', 30, TRUE) - B.set_anchored(FALSE) + if(mend || !bomb.anchored) + return + holder.visible_message(span_notice("[icon2html(bomb, viewers(holder))] The bolts lift out of the ground!")) + playsound(bomb, 'sound/effects/stealthoff.ogg', 30, TRUE) + bomb.set_anchored(FALSE) if(WIRE_PROCEED) - if(!mend && B.active) - holder.visible_message(span_danger("[icon2html(B, viewers(holder))] The digital display on the device deactivates.")) - B.examinable_countdown = FALSE - + if(mend || !bomb.active) + return + holder.visible_message(span_danger("[icon2html(bomb, viewers(holder))] The digital display on the device deactivates.")) + bomb.examinable_countdown = FALSE if(WIRE_ACTIVATE) - if(!mend && B.active) - var/bomb_time_left = B.seconds_remaining() - holder.visible_message(span_notice("[icon2html(B, viewers(holder))] The timer stops! The bomb has been defused!")) - B.active = FALSE - B.delayedlittle = FALSE - B.delayedbig = FALSE - B.examinable_countdown = TRUE - B.update_appearance() - if(isliving(usr)) - add_memory_in_range(B, 7, /datum/memory/bomb_defuse_success, protagonist = usr, antagonist = B, bomb_time_left = bomb_time_left) + if(mend || !bomb.active) + return + var/bomb_time_left = bomb.seconds_remaining() + holder.visible_message(span_notice("[icon2html(bomb, viewers(holder))] The timer stops! The bomb has been defused!")) + bomb.defuse() + if(is_dangerous()) + tell_admins(bomb, source, "defused") + if(isliving(source)) + add_memory_in_range(bomb, 7, /datum/memory/bomb_defuse_success, protagonist = source, antagonist = bomb, bomb_time_left = bomb_time_left) -/datum/wires/syndicatebomb/proc/tell_admins(obj/machinery/syndicatebomb/B) - var/turf/T = get_turf(B) - log_game("\A [B] was detonated via boom wire at [AREACOORD(T)].") - message_admins("A [B.name] was detonated via boom wire at [ADMIN_VERBOSEJMP(T)].") +/datum/wires/syndicatebomb/proc/tell_admins(obj/machinery/syndicatebomb/bomb, atom/source, what_happened) + var/turf/bombloc = get_turf(bomb) + log_game("\A [bomb] was [what_happened] at [AREACOORD(bombloc)] by [source || "nothing(?)"].") + message_admins("\A [bomb] was [what_happened] at [ADMIN_VERBOSEJMP(bombloc)] by [source ? ADMIN_LOOKUPFLW(source) : "nothing(?)"].") + if(isliving(source)) + log_combat(source, bomb, what_happened) diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index 406fbd8fa45..0dbf1a9d7c7 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -23,7 +23,8 @@ var/keyword var/log = TRUE var/key_valid - var/require_comms_key = FALSE + /// If the comms.txt config key is required. If you flip this to false, ensure the code is correct and the query you receive is legit. + var/require_comms_key = TRUE /datum/world_topic/proc/TryRun(list/input) key_valid = (CONFIG_GET(string/comms_key) == input["key"]) && CONFIG_GET(string/comms_key) && input["key"] @@ -42,12 +43,18 @@ /datum/world_topic/proc/Run(list/input) CRASH("Run() not implemented for [type]!") -// TOPICS +/** TOPICS + * These are the handlers for world.Export() -> World.Topic() server communication. + * Double check to ensure any calls are correct and the query is legit. + * World.Topic() exploits can be very devastating since these can be called via a normal player connection without a client. + * https://secure.byond.com/docs/ref/index.html#/world/proc/Topic +*/ // If you modify the protocol for this, update tools/Tgstation.PRAnnouncer /datum/world_topic/ping keyword = "ping" log = FALSE + require_comms_key = FALSE /datum/world_topic/ping/Run(list/input) . = 0 @@ -57,6 +64,7 @@ /datum/world_topic/playing keyword = "playing" log = FALSE + require_comms_key = FALSE /datum/world_topic/playing/Run(list/input) return GLOB.player_list.len @@ -64,7 +72,6 @@ // If you modify the protocol for this, update tools/Tgstation.PRAnnouncer /datum/world_topic/pr_announce keyword = "announce" - require_comms_key = TRUE var/static/list/PRcounts = list() //PR id -> number of times announced this round /datum/world_topic/pr_announce/Run(list/input) @@ -83,14 +90,12 @@ /datum/world_topic/ahelp_relay keyword = "Ahelp" - require_comms_key = TRUE /datum/world_topic/ahelp_relay/Run(list/input) relay_msg_admins(span_adminnotice("HELP: [input["source"]] [input["message_sender"]]: [input["message"]]")) /datum/world_topic/comms_console keyword = "Comms_Console" - require_comms_key = TRUE var/list/timers @@ -161,7 +166,6 @@ /datum/world_topic/news_report keyword = "News_Report" - require_comms_key = TRUE /datum/world_topic/news_report/Run(list/input) @@ -169,14 +173,12 @@ /datum/world_topic/adminmsg keyword = "adminmsg" - require_comms_key = TRUE /datum/world_topic/adminmsg/Run(list/input) return TgsPm(input[keyword], input["msg"], input["sender"]) /datum/world_topic/namecheck keyword = "namecheck" - require_comms_key = TRUE /datum/world_topic/namecheck/Run(list/input) log_admin("world/Topic Name Check: [input["sender"]] on [input["namecheck"]]") @@ -186,13 +188,13 @@ /datum/world_topic/adminwho keyword = "adminwho" - require_comms_key = TRUE /datum/world_topic/adminwho/Run(list/input) return tgsadminwho() /datum/world_topic/status keyword = "status" + require_comms_key = FALSE /datum/world_topic/status/Run(list/input) . = list() diff --git a/code/datums/wounds/_wounds.dm b/code/datums/wounds/_wounds.dm index fdecc89680a..62b48e6910e 100644 --- a/code/datums/wounds/_wounds.dm +++ b/code/datums/wounds/_wounds.dm @@ -19,6 +19,8 @@ /datum/wound /// What it's named var/name = "Wound" + /// Optional, what is the wound named when someone is checking themselves (IE, no scanner - just with their eyes and hands) + var/undiagnosed_name /// The description shown on the scanners var/desc = "" /// The basic treatment suggested by health analyzers @@ -601,7 +603,7 @@ /datum/wound/proc/get_examine_description(mob/user) . = get_wound_description(user) if(HAS_TRAIT(src, TRAIT_WOUND_SCANNED)) - . += span_notice("\nThere is a holo-image next to the wound that seems to contain indications for treatment.") + . += span_notice("
There is a holo-image next to the wound that seems to contain indications for treatment.") return . @@ -618,6 +620,30 @@ return get_desc_intensity(desc) +/** + * Used when a mob is examining themselves / their limbs + * + * Reports what this wound looks like to them + * + * It should be formatted as an extension of the limb: + * Input is something like "Your chest is bruised.", + * you would add something like "It is bleeding." + * + * * self_aware - if TRUE, the examiner is more aware of themselves and thus may get more detailed information + * + * Return a string, to be concatenated with other organ / limb status strings. Include spans and punctuation. + */ +/datum/wound/proc/get_self_check_description(self_aware) + switch(severity) + if(WOUND_SEVERITY_TRIVIAL) + return span_danger("It's suffering [a_or_from] [LOWER_TEXT(undiagnosed_name || name)].") + if(WOUND_SEVERITY_MODERATE) + return span_warning("It's suffering [a_or_from] [LOWER_TEXT(undiagnosed_name || name)].") + if(WOUND_SEVERITY_SEVERE) + return span_boldwarning("It's suffering [a_or_from] [LOWER_TEXT(undiagnosed_name || name)]!") + if(WOUND_SEVERITY_CRITICAL) + return span_boldwarning("It's suffering [a_or_from] [LOWER_TEXT(undiagnosed_name || name)]!!") + /// A hook proc used to modify desc before it is spanned via [get_desc_intensity]. Useful for inserting spans yourself. /datum/wound/proc/modify_desc_before_span(desc, mob/user) return desc diff --git a/code/datums/wounds/blunt.dm b/code/datums/wounds/blunt.dm index 219b7dd8805..e0716513958 100644 --- a/code/datums/wounds/blunt.dm +++ b/code/datums/wounds/blunt.dm @@ -1,3 +1,5 @@ /datum/wound/blunt name = "Blunt Wound" sound_effect = 'sound/effects/wounds/crack1.ogg' + undiagnosed_name = "Painful Bruising" + a_or_from = "some" diff --git a/code/datums/wounds/bones.dm b/code/datums/wounds/bones.dm index 1771a87e579..a50ef89b714 100644 --- a/code/datums/wounds/bones.dm +++ b/code/datums/wounds/bones.dm @@ -107,7 +107,7 @@ if(!victim || !limb) qdel(src) return - to_chat(victim, span_green("Your [limb.plaintext_zone] has recovered from its [name]!")) + to_chat(victim, span_green("Your [limb.plaintext_zone] has recovered from its [LOWER_TEXT(undiagnosed_name || name)]!")) remove_wound() /// If we're a human who's punching something with a broken arm, we might hurt ourselves doing so @@ -228,6 +228,8 @@ /// Joint Dislocation (Moderate Blunt) /datum/wound/blunt/bone/moderate name = "Joint Dislocation" + undiagnosed_name = "Dislocation" + a_or_from = "a" desc = "Patient's limb has been unset from socket, causing pain and reduced motor function." treat_text = "Apply Bonesetter to the affected limb. \ Manual relocation by via an aggressive grab and a tight hug to the affected limb may also suffice." @@ -270,6 +272,9 @@ return ..() +/datum/wound/blunt/bone/moderate/get_self_check_description(self_aware) + return span_warning("It feels dislocated!") + /// Getting smushed in an airlock/firelock is a last-ditch attempt to try relocating your limb /datum/wound/blunt/bone/moderate/proc/door_crush() SIGNAL_HANDLER @@ -284,7 +289,7 @@ return FALSE if(user.grab_state == GRAB_PASSIVE) - to_chat(user, span_warning("You must have [victim] in an aggressive grab to manipulate [victim.p_their()] [LOWER_TEXT(name)]!")) + to_chat(user, span_warning("You must have [victim] in an aggressive grab to manipulate [victim.p_their()] [LOWER_TEXT(undiagnosed_name || name)]!")) return TRUE if(user.grab_state >= GRAB_AGGRESSIVE) @@ -401,6 +406,8 @@ /// Compound Fracture (Critical Blunt) /datum/wound/blunt/bone/critical name = "Compound Fracture" + undiagnosed_name = null // you can tell it's a compound fracture at a glance because of a skin breakage + a_or_from = "a" desc = "Patient's bones have suffered multiple fractures, \ couped with a break in the skin, causing significant pain and near uselessness of limb." treat_text = "Immediately bind the affected limb with gauze or a splint. Repair surgically. \ diff --git a/code/datums/wounds/burns.dm b/code/datums/wounds/burns.dm index aa28dfb8eaf..ef7404415a9 100644 --- a/code/datums/wounds/burns.dm +++ b/code/datums/wounds/burns.dm @@ -5,6 +5,7 @@ // TODO: well, a lot really, but specifically I want to add potential fusing of clothing/equipment on the affected area, and limb infections, though those may go in body part code /datum/wound/burn name = "Burn Wound" + undiagnosed_name = "Burns" a_or_from = "from" sound_effect = 'sound/effects/wounds/sizzle1.ogg' diff --git a/code/datums/wounds/pierce.dm b/code/datums/wounds/pierce.dm index 4bf2664fb34..b7fb7017e8d 100644 --- a/code/datums/wounds/pierce.dm +++ b/code/datums/wounds/pierce.dm @@ -3,6 +3,21 @@ Piercing wounds */ /datum/wound/pierce + undiagnosed_name = "Puncture" + +/datum/wound/pierce/get_self_check_description(self_aware) + if(!limb.can_bleed()) + return ..() + + switch(severity) + if(WOUND_SEVERITY_TRIVIAL) + return span_danger("It's leaking blood from a small [LOWER_TEXT(undiagnosed_name || name)].") + if(WOUND_SEVERITY_MODERATE) + return span_warning("It's leaking blood from a [LOWER_TEXT(undiagnosed_name || name)].") + if(WOUND_SEVERITY_SEVERE) + return span_boldwarning("It's leaking blood from a serious [LOWER_TEXT(undiagnosed_name || name)]!") + if(WOUND_SEVERITY_CRITICAL) + return span_boldwarning("It's leaking blood from a major [LOWER_TEXT(undiagnosed_name || name)]!!") /datum/wound/pierce/bleed name = "Piercing Wound" @@ -91,7 +106,7 @@ if(QDELETED(src)) return if(SPT_PROB(2.5, seconds_per_tick)) - to_chat(victim, span_notice("You feel the [LOWER_TEXT(name)] in your [limb.plaintext_zone] firming up from the cold!")) + to_chat(victim, span_notice("You feel the [LOWER_TEXT(undiagnosed_name || name)] in your [limb.plaintext_zone] firming up from the cold!")) if(HAS_TRAIT(victim, TRAIT_BLOODY_MESS)) adjust_blood_flow(0.25 * seconds_per_tick) // old heparin used to just add +2 bleed stacks per tick, this adds 0.5 bleed flow to all open cuts which is probably even stronger as long as you can cut them first diff --git a/code/datums/wounds/slash.dm b/code/datums/wounds/slash.dm index 2ec5700e03c..5a0b99a070a 100644 --- a/code/datums/wounds/slash.dm +++ b/code/datums/wounds/slash.dm @@ -5,8 +5,23 @@ /datum/wound/slash name = "Slashing (Cut) Wound" + undiagnosed_name = "Cut" sound_effect = 'sound/items/weapons/slice.ogg' +/datum/wound/slash/get_self_check_description(self_aware) + if(!limb.can_bleed()) + return ..() + + switch(severity) + if(WOUND_SEVERITY_TRIVIAL) + return span_danger("It's leaking blood from a small [LOWER_TEXT(undiagnosed_name || name)].") + if(WOUND_SEVERITY_MODERATE) + return span_warning("It's leaking blood from a [LOWER_TEXT(undiagnosed_name || name)].") + if(WOUND_SEVERITY_SEVERE) + return span_boldwarning("It's leaking blood from a serious [LOWER_TEXT(undiagnosed_name || name)]!") + if(WOUND_SEVERITY_CRITICAL) + return span_boldwarning("It's leaking blood from a major [LOWER_TEXT(undiagnosed_name || name)]!!") + /datum/wound_pregen_data/flesh_slash abstract = TRUE diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 5ef0f578120..cbe227905f3 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -103,7 +103,7 @@ var/list/cameras - ///Typepath to limit the areas (subtypes included) that atoms in this area can smooth with. Used for shuttles. + /// Typepath to limit the areas (subtypes included) that atoms in this area can smooth with. Used for shuttles. var/area/area_limited_icon_smoothing /// The energy usage of the area in the last machines SS tick. @@ -124,6 +124,9 @@ /// List of all air scrubbers in the area var/list/obj/machinery/atmospherics/components/unary/vent_scrubber/air_scrubbers = list() + /// Are shuttles allowed to dock in this area + var/allow_shuttle_docking = FALSE + /** * A list of teleport locations * diff --git a/code/game/area/areas/mining.dm b/code/game/area/areas/mining.dm index 957956cb12d..50e078959fd 100644 --- a/code/game/area/areas/mining.dm +++ b/code/game/area/areas/mining.dm @@ -135,6 +135,7 @@ area_flags = VALID_TERRITORY | UNIQUE_AREA | FLORA_ALLOWED sound_environment = SOUND_AREA_LAVALAND ambient_buzz = 'sound/ambience/lavaland/magma.ogg' + allow_shuttle_docking = TRUE /area/lavaland/surface name = "Lavaland" @@ -192,6 +193,7 @@ ambience_index = AMBIENCE_ICEMOON sound_environment = SOUND_AREA_ICEMOON ambient_buzz = 'sound/ambience/lavaland/magma.ogg' + allow_shuttle_docking = TRUE /area/icemoon/surface name = "Icemoon" diff --git a/code/game/area/areas/misc.dm b/code/game/area/areas/misc.dm index 63290754db5..de1cbff381b 100644 --- a/code/game/area/areas/misc.dm +++ b/code/game/area/areas/misc.dm @@ -16,6 +16,7 @@ flags_1 = CAN_BE_DIRTY_1 sound_environment = SOUND_AREA_SPACE ambient_buzz = null //Space is deafeningly quiet + allow_shuttle_docking = TRUE /area/space/nearstation icon_state = "space_near" diff --git a/code/game/area/areas/station/misc.dm b/code/game/area/areas/station/misc.dm index fbbe0e8a512..be99950c736 100644 --- a/code/game/area/areas/station/misc.dm +++ b/code/game/area/areas/station/misc.dm @@ -32,3 +32,4 @@ ambience_index = AMBIENCE_MINING area_flags = UNIQUE_AREA outdoors = TRUE + allow_shuttle_docking = TRUE diff --git a/code/game/atom/_atom.dm b/code/game/atom/_atom.dm index d54b96c6cb7..953aa70139e 100644 --- a/code/game/atom/_atom.dm +++ b/code/game/atom/_atom.dm @@ -111,15 +111,7 @@ ///Icon-smoothing behavior. var/smoothing_flags = NONE ///What directions this is currently smoothing with. IMPORTANT: This uses the smoothing direction flags as defined in icon_smoothing.dm, instead of the BYOND flags. - var/smoothing_junction = null //This starts as null for us to know when it's first set, but after that it will hold a 8-bit mask ranging from 0 to 255. - ///Smoothing variable - var/top_left_corner - ///Smoothing variable - var/top_right_corner - ///Smoothing variable - var/bottom_left_corner - ///Smoothing variable - var/bottom_right_corner + var/smoothing_junction = null ///What smoothing groups does this atom belongs to, to match canSmoothWith. If null, nobody can smooth with it. Must be sorted. var/list/smoothing_groups = null ///List of smoothing groups this atom can smooth with. If this is null and atom is smooth, it smooths only with itself. Must be sorted. diff --git a/code/game/atom/atom_color.dm b/code/game/atom/atom_color.dm index 4b20a004228..3c01429efc4 100644 --- a/code/game/atom/atom_color.dm +++ b/code/game/atom/atom_color.dm @@ -16,7 +16,7 @@ */ var/list/atom_colours /// Currently used color filter - cached because its applied to all of our overlays because BYOND is horrific - var/cached_color_filter + var/list/cached_color_filter ///Adds an instance of colour_type to the atom's atom_colours list /atom/proc/add_atom_colour(coloration, colour_priority) @@ -35,7 +35,6 @@ atom_colours[colour_priority] = list(coloration, color_type) update_atom_colour() - ///Removes an instance of colour_type from the atom's atom_colours list /atom/proc/remove_atom_colour(colour_priority, coloration) if(!atom_colours) @@ -94,13 +93,14 @@ ///Resets the atom's color to null, and then sets it to the highest priority colour available /atom/proc/update_atom_colour() var/old_filter = cached_color_filter + var/old_color = color color = null cached_color_filter = null remove_filter(ATOM_PRIORITY_COLOR_FILTER) REMOVE_KEEP_TOGETHER(src, ATOM_COLOR_TRAIT) if (!atom_colours) - if (old_filter) + if (!(SEND_SIGNAL(src, COMSIG_ATOM_COLOR_UPDATED, old_color || old_filter) & COMPONENT_CANCEL_COLOR_APPEARANCE_UPDATE) && old_filter) update_appearance() return @@ -115,7 +115,7 @@ break ADD_KEEP_TOGETHER(src, ATOM_COLOR_TRAIT) - if (cached_color_filter != old_filter) + if (!(SEND_SIGNAL(src, COMSIG_ATOM_COLOR_UPDATED, old_color != color || old_filter != cached_color_filter) & COMPONENT_CANCEL_COLOR_APPEARANCE_UPDATE) && cached_color_filter != old_filter) update_appearance() /// Same as update_atom_color, but simplifies overlay coloring diff --git a/code/game/atom/atom_examine.dm b/code/game/atom/atom_examine.dm index 2151e3927b9..8fda89b5550 100644 --- a/code/game/atom/atom_examine.dm +++ b/code/game/atom/atom_examine.dm @@ -132,7 +132,11 @@ return "\a [src]" /mob/living/get_examine_name(mob/user) - return get_visible_name() + var/visible_name = get_visible_name() + var/list/name_override = list(visible_name) + if(SEND_SIGNAL(user, COMSIG_LIVING_PERCEIVE_EXAMINE_NAME, src, visible_name, name_override) & COMPONENT_EXAMINE_NAME_OVERRIDEN) + return name_override[1] + return visible_name /// Icon displayed in examine /atom/proc/get_examine_icon(mob/user) diff --git a/code/game/atom/atom_materials.dm b/code/game/atom/atom_materials.dm index 305c8b217d9..e8e291e708c 100644 --- a/code/game/atom/atom_materials.dm +++ b/code/game/atom/atom_materials.dm @@ -292,13 +292,13 @@ * Arguments: * - flags: A set of flags determining how exactly the materials are broken down. */ -/atom/proc/get_material_composition() +/atom/proc/get_material_composition(flags) . = list() var/list/cached_materials = custom_materials for(var/mat in cached_materials) var/datum/material/material = GET_MATERIAL_REF(mat) - var/list/material_comp = material.return_composition(cached_materials[mat]) + var/list/material_comp = material.return_composition(cached_materials[mat], flags) for(var/comp_mat in material_comp) .[comp_mat] += material_comp[comp_mat] diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 0b0bb6cc154..6c490e422c6 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -87,9 +87,6 @@ ///Internal holder for emissive blocker object, do not use directly use blocks_emissive var/atom/movable/render_step/emissive_blocker/em_block - ///Used for the calculate_adjacencies proc for icon smoothing. - var/can_be_unanchored = FALSE - ///Lazylist to keep track on the sources of illumination. var/list/affected_dynamic_lights ///Highest-intensity light affecting us, which determines our visibility. diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 34e47b5d654..3469e3ba29f 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -558,10 +558,10 @@ Diagnostic HUDs! /atom/proc/adjust_hud_position(image/holder, animate_time = null) if (animate_time) - animate(holder, pixel_x = -(get_cached_width() - ICON_SIZE_X) / 2, pixel_y = get_cached_height() - ICON_SIZE_Y, time = animate_time) + animate(holder, pixel_w = -(get_cached_width() - ICON_SIZE_X) / 2, pixel_z = get_cached_height() - ICON_SIZE_Y, time = animate_time) return - holder.pixel_x = -(get_cached_width() - ICON_SIZE_X) / 2 - holder.pixel_y = get_cached_height() - ICON_SIZE_Y + holder.pixel_w = -(get_cached_width() - ICON_SIZE_X) / 2 + holder.pixel_z = get_cached_height() - ICON_SIZE_Y /atom/proc/set_hud_image_state(hud_type, hud_state, x_offset = 0, y_offset = 0) if (!hud_list) // Still initializing @@ -574,5 +574,5 @@ Diagnostic HUDs! holder.icon_state = hud_state adjust_hud_position(holder) if (x_offset || y_offset) - holder.pixel_x += x_offset - holder.pixel_y += y_offset + holder.pixel_w += x_offset + holder.pixel_z += y_offset diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index b4ce13ecf89..2f5d5a49073 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -38,7 +38,7 @@ /datum/component/material_container, \ SSmaterials.materials_by_category[MAT_CATEGORY_ITEM_MATERIAL], \ 0, \ - MATCONTAINER_EXAMINE, \ + MATCONTAINER_EXAMINE|MATCONTAINER_ACCEPT_ALLOYS, \ container_signals = list(COMSIG_MATCONTAINER_ITEM_CONSUMED = TYPE_PROC_REF(/obj/machinery/autolathe, AfterMaterialInsert)) \ ) . = ..() @@ -80,7 +80,7 @@ return NONE if(held_item.tool_behaviour == TOOL_SCREWDRIVER) - context[SCREENTIP_CONTEXT_RMB] = "[panel_open ? "Close" : "Open"] Panel" + context[SCREENTIP_CONTEXT_LMB] = "[panel_open ? "Close" : "Open"] Panel" return CONTEXTUAL_SCREENTIP_SET if(panel_open && held_item.tool_behaviour == TOOL_CROWBAR) @@ -92,7 +92,7 @@ if(default_deconstruction_crowbar(tool)) return ITEM_INTERACT_SUCCESS -/obj/machinery/autolathe/screwdriver_act_secondary(mob/living/user, obj/item/tool) +/obj/machinery/autolathe/screwdriver_act(mob/living/user, obj/item/tool) . = ITEM_INTERACT_BLOCKING if(default_deconstruction_screwdriver(user, "autolathe_t", "autolathe", tool)) return ITEM_INTERACT_SUCCESS @@ -419,47 +419,55 @@ drop_direction = 0 return CLICK_ACTION_SUCCESS -/obj/machinery/autolathe/attackby(obj/item/attacking_item, mob/living/user, params) - if(user.combat_mode) //so we can hit the machine +/obj/machinery/autolathe/base_item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(user.combat_mode) return ..() if(busy) balloon_alert(user, "it's busy!") - return TRUE + return ITEM_INTERACT_BLOCKING - if(panel_open && is_wire_tool(attacking_item)) + if(panel_open && is_wire_tool(tool)) wires.interact(user) - return TRUE + return ITEM_INTERACT_SUCCESS if(machine_stat) - return TRUE + return ..() - if(istype(attacking_item, /obj/item/disk/design_disk)) - user.visible_message(span_notice("[user] begins to load \the [attacking_item] in \the [src]..."), - balloon_alert(user, "uploading design..."), - span_hear("You hear the chatter of a floppy drive.")) - busy = TRUE - if(do_after(user, 14.4, target = src)) - var/obj/item/disk/design_disk/disky = attacking_item - var/list/not_imported - for(var/datum/design/blueprint as anything in disky.blueprints) - if(!blueprint) - continue - if(blueprint.build_type & AUTOLATHE) - imported_designs[blueprint.id] = TRUE - else - LAZYADD(not_imported, blueprint.name) - if(not_imported) - to_chat(user, span_warning("The following design[length(not_imported) > 1 ? "s" : ""] couldn't be imported: [english_list(not_imported)]")) - busy = FALSE - update_static_data_for_all_viewers() - return TRUE + if(!istype(tool, /obj/item/disk/design_disk)) + return ..() if(panel_open) balloon_alert(user, "close the panel first!") - return FALSE + return ITEM_INTERACT_BLOCKING - return ..() + user.visible_message(span_notice("[user] begins to load \the [tool] in \the [src]..."), + balloon_alert(user, "uploading design..."), + span_hear("You hear the chatter of a floppy drive.")) + busy = TRUE + + if(!do_after(user, 1.5 SECONDS, target = src)) + busy = FALSE + update_static_data_for_all_viewers() + balloon_alert(user, "interrupted!") + return ITEM_INTERACT_BLOCKING + + var/obj/item/disk/design_disk/disky = tool + var/list/not_imported + for(var/datum/design/blueprint as anything in disky.blueprints) + if(!blueprint) + continue + if(blueprint.build_type & AUTOLATHE) + imported_designs[blueprint.id] = TRUE + else + LAZYADD(not_imported, blueprint.name) + + if(not_imported) + to_chat(user, span_warning("The following design[length(not_imported) > 1 ? "s" : ""] couldn't be imported: [english_list(not_imported)]")) + + busy = FALSE + update_static_data_for_all_viewers() + return ITEM_INTERACT_SUCCESS /obj/machinery/autolathe/RefreshParts() . = ..() diff --git a/code/game/machinery/big_manipulator.dm b/code/game/machinery/big_manipulator.dm index f4d04656b32..da56a74e1f6 100644 --- a/code/game/machinery/big_manipulator.dm +++ b/code/game/machinery/big_manipulator.dm @@ -1,39 +1,55 @@ -#define DROP_ITEM_MODE "drop" -#define USE_ITEM_MODE "use" -#define THROW_ITEM_MODE "throw" +#define INTERACT_DROP "drop" +#define INTERACT_USE "use" +#define INTERACT_THROW "throw" #define TAKE_ITEMS 1 #define TAKE_CLOSETS 2 #define TAKE_HUMANS 3 -/// Manipulator Core. Main part of the mechanism that carries out the entire process. +#define DELAY_STEP 0.1 +#define MAX_DELAY 30 + +#define MIN_DELAY_TIER_1 2 +#define MIN_DELAY_TIER_2 1.4 +#define MIN_DELAY_TIER_3 0.8 +#define MIN_DELAY_TIER_4 0.2 + +#define STATUS_BUSY TRUE +#define STATUS_IDLE FALSE + +#define WORKER_SINGLE_USE "single" +#define WORKER_EMPTY_USE "empty" +#define WORKER_NORMAL_USE "normal" + +/// The Big Manipulator's core. Main part of the mechanism that carries out the entire process. /obj/machinery/big_manipulator name = "Big Manipulator" - desc = "Take and drop objects. Innovation..." + desc = "Operates different objects. Truly, a groundbreaking innovation..." icon = 'icons/obj/machines/big_manipulator_parts/big_manipulator_core.dmi' icon_state = "core" density = TRUE circuit = /obj/item/circuitboard/machine/big_manipulator greyscale_colors = "#d8ce13" greyscale_config = /datum/greyscale_config/big_manipulator - /// How many time manipulator need to take and drop item. - var/working_speed = 2 SECONDS + /// Min time manipulator can have in delay. Changing on upgrade. + var/minimal_delay = MIN_DELAY_TIER_1 + /// The time it takes for the manipulator to complete the action cycle. + var/interaction_delay = MIN_DELAY_TIER_1 + /// Using high tier manipulators speeds up big manipulator and requires more energy. var/power_use_lvl = 0.2 - /// When manipulator already working with item inside he don't take any new items. - var/on_work = FALSE - /// Activate mechanism. + /// The status of the manipulator - `IDLE` or `BUSY`. + var/status = STATUS_IDLE + /// Is the manipulator turned on? var/on = FALSE - /// Dir to get turf where we take items. + /// The direction the manipulator arm will take items from. var/take_here = NORTH - /// Dir to get turf where we drop items. + /// The direction the manipulator arm will drop items to. var/drop_here = SOUTH - /// Turf where we take items. + /// The turf where the manipulator arm will take items from. var/turf/take_turf - /// Turf where we drop items. + /// The turf where the manipulator arm will drop items to. var/turf/drop_turf - /// How will manipulator manipulate the object? drop it out by default. - var/manipulate_mode = DROP_ITEM_MODE /// Priority settings depending on the manipulator drop mode that are available to this manipulator. Filled during Initialize. var/list/priority_settings_for_drop = list() /// Priority settings depending on the manipulator use mode that are available to this manipulator. Filled during Initialize. @@ -41,27 +57,31 @@ /// What priority settings are available to use at the moment. /// We also use this list to sort priorities from ascending to descending. var/list/allowed_priority_settings = list() - /// Obj inside manipulator. + /// The object inside the manipulator. var/datum/weakref/containment_obj - /// Obj used as filter + /// The object used as a filter. var/datum/weakref/filter_obj - /// Poor monkey that needs to use mode works. + /// The poor monkey that needs to use mode works. var/datum/weakref/monkey_worker - /// Other manipulator component. - var/obj/effect/big_manipulator_hand/manipulator_hand - /// Here some ui setting we can on/off: - /// If activated: after item was used manipulator will also drop it. - var/drop_item_after_use = TRUE - /// If activated: will select only 1 priority and will not continue to look at the priorities below. - var/only_highest_priority = FALSE - /// Var for throw item mode: changes the range from which the manipulator throws an object. + /// weakref to id that locked this manipualtor. + var/datum/weakref/locked_by_this_id + /// Is manipulator locked by identity id. + var/id_locked = FALSE + /// The manipulator's arm. + var/obj/effect/big_manipulator_arm/manipulator_arm + + /// How should the manipulator interact with the object? + var/interaction_mode = INTERACT_DROP + /// How should the worker interact with the object? + var/worker_interaction = WORKER_NORMAL_USE + /// The distance the thrown object should travel when thrown. var/manipulator_throw_range = 1 - /// Selected type that manipulator will take for take and drop loop. + /// Overrides the priority selection, only accessing the top priority list element. + var/override_priority = FALSE + /// The `type` the manipulator will interact with only. var/atom/selected_type - /// Just a lazy number to change selected_type type in array. - var/selected_type_by_number = 1 - /// Variable for the wire that disables the power button if the wire is cut. - var/on_button_cutted = FALSE + /// Is the power access wire cut? Disables the power button if `TRUE`. + var/power_access_wire_cut = FALSE /// List where we can set selected type. Taking items by Initialize. var/list/allowed_types_to_pick_up = list( /obj/item, @@ -71,11 +91,11 @@ /obj/machinery/big_manipulator/Initialize(mapload) . = ..() take_and_drop_turfs_check() - create_manipulator_hand() - RegisterSignal(manipulator_hand, COMSIG_QDELETING, PROC_REF(on_hand_qdel)) + create_manipulator_arm() + RegisterSignal(manipulator_arm, COMSIG_QDELETING, PROC_REF(on_hand_qdel)) manipulator_lvl() set_up_priority_settings() - selected_type = allowed_types_to_pick_up[selected_type_by_number] + selected_type = allowed_types_to_pick_up[1] if(on) press_on(pressed_by = null) set_wires(new /datum/wires/big_manipulator(src)) @@ -120,7 +140,7 @@ /obj/machinery/big_manipulator/Destroy(force) . = ..() - qdel(manipulator_hand) + qdel(manipulator_arm) if(!isnull(containment_obj)) var/obj/containment_resolve = containment_obj?.resolve() containment_resolve?.forceMove(get_turf(containment_resolve)) @@ -130,6 +150,7 @@ var/mob/monkey_resolve = monkey_worker?.resolve() if(!isnull(monkey_resolve)) monkey_resolve.forceMove(get_turf(monkey_resolve)) + locked_by_this_id = null /obj/machinery/big_manipulator/Exited(atom/movable/gone, direction) if(isnull(monkey_worker)) @@ -137,10 +158,10 @@ var/mob/living/carbon/human/species/monkey/poor_monkey = monkey_worker.resolve() if(gone != poor_monkey) return - if(!is_type_in_list(poor_monkey, manipulator_hand.vis_contents)) + if(!is_type_in_list(poor_monkey, manipulator_arm.vis_contents)) return - manipulator_hand.vis_contents -= poor_monkey - if(manipulate_mode == USE_ITEM_MODE) + manipulator_arm.vis_contents -= poor_monkey + if(interaction_mode == INTERACT_USE) change_mode() poor_monkey.remove_offsets(type) monkey_worker = null @@ -149,10 +170,10 @@ . = ..() take_and_drop_turfs_check() if(isnull(get_turf(src))) - qdel(manipulator_hand) + qdel(manipulator_arm) return - if(!manipulator_hand) - create_manipulator_hand() + if(!manipulator_arm) + create_manipulator_arm() /obj/machinery/big_manipulator/emag_act(mob/user, obj/item/card/emag/emag_card) . = ..() @@ -170,7 +191,7 @@ /obj/machinery/big_manipulator/wrench_act_secondary(mob/living/user, obj/item/tool) . = ..() - if(on_work || on) + if(status == STATUS_BUSY || on) to_chat(user, span_warning("[src] is activated!")) return ITEM_INTERACT_BLOCKING rotate_big_hand() @@ -178,7 +199,7 @@ return ITEM_INTERACT_SUCCESS /obj/machinery/big_manipulator/can_be_unfasten_wrench(mob/user, silent) - if(on_work || on) + if(status == STATUS_BUSY || on) to_chat(user, span_warning("[src] is activated!")) return FAILED_UNFASTEN return ..() @@ -215,7 +236,7 @@ /obj/machinery/big_manipulator/mouse_drop_dragged(atom/drop_point, mob/user, src_location, over_location, params) if(isnull(monkey_worker)) return - if(on_work) + if(status == STATUS_BUSY) balloon_alert(user, "turn it off first!") return var/mob/living/carbon/human/species/monkey/poor_monkey = monkey_worker.resolve() @@ -234,7 +255,7 @@ return if(!isnull(monkey_worker)) return - if(on_work) + if(status == STATUS_BUSY) balloon_alert(user, "turn it off first!") return var/mob/living/carbon/human/species/monkey/poor_monkey = monkey @@ -249,19 +270,39 @@ monkey_worker = WEAKREF(poor_monkey) poor_monkey.drop_all_held_items() poor_monkey.forceMove(src) - manipulator_hand.vis_contents += poor_monkey - poor_monkey.dir = manipulator_hand.dir + manipulator_arm.vis_contents += poor_monkey + poor_monkey.dir = manipulator_arm.dir poor_monkey.add_offsets( type, - x_add = 32 + manipulator_hand.calculate_item_offset(TRUE, pixels_to_offset = 16), - y_add = 32 + manipulator_hand.calculate_item_offset(FALSE, pixels_to_offset = 16) + x_add = 32 + manipulator_arm.calculate_item_offset(TRUE, pixels_to_offset = 16), + y_add = 32 + manipulator_arm.calculate_item_offset(FALSE, pixels_to_offset = 16) ) +/obj/machinery/big_manipulator/attackby(obj/item/is_card, mob/user, params) + . = ..() + if(!isidcard(is_card)) + return + var/obj/item/card/id/clicked_by_this_id = is_card + if(!isnull(locked_by_this_id)) + var/obj/item/card/id/resolve_id = locked_by_this_id.resolve() + if(clicked_by_this_id != resolve_id) + balloon_alert(user, "locked by another id") + return + locked_by_this_id = null + change_id_locked_status(user) + return + locked_by_this_id = WEAKREF(clicked_by_this_id) + change_id_locked_status(user) + +/obj/machinery/big_manipulator/proc/change_id_locked_status(mob/user) + id_locked = !id_locked + balloon_alert(user, "successfully [!id_locked ? "un" : ""]locked") + /// Creat manipulator hand effect on manipulator core. -/obj/machinery/big_manipulator/proc/create_manipulator_hand() - manipulator_hand = new/obj/effect/big_manipulator_hand(src) - manipulator_hand.dir = take_here - vis_contents += manipulator_hand +/obj/machinery/big_manipulator/proc/create_manipulator_arm() + manipulator_arm = new/obj/effect/big_manipulator_arm(src) + manipulator_arm.dir = take_here + vis_contents += manipulator_arm /// Check servo tier and change manipulator speed, power_use and colour. /obj/machinery/big_manipulator/proc/manipulator_lvl() @@ -270,25 +311,25 @@ return switch(locate_servo.tier) if(-INFINITY to 1) - working_speed = 2 SECONDS + minimal_delay = interaction_delay = MIN_DELAY_TIER_1 power_use_lvl = 0.2 set_greyscale(COLOR_YELLOW) - manipulator_hand?.set_greyscale(COLOR_YELLOW) + manipulator_arm?.set_greyscale(COLOR_YELLOW) if(2) - working_speed = 1.4 SECONDS + minimal_delay = interaction_delay = MIN_DELAY_TIER_2 power_use_lvl = 0.4 set_greyscale(COLOR_ORANGE) - manipulator_hand?.set_greyscale(COLOR_ORANGE) + manipulator_arm?.set_greyscale(COLOR_ORANGE) if(3) - working_speed = 0.8 SECONDS + minimal_delay = interaction_delay = MIN_DELAY_TIER_3 power_use_lvl = 0.6 set_greyscale(COLOR_RED) - manipulator_hand?.set_greyscale(COLOR_RED) + manipulator_arm?.set_greyscale(COLOR_RED) if(4 to INFINITY) - working_speed = 0.2 SECONDS + minimal_delay = interaction_delay = MIN_DELAY_TIER_4 power_use_lvl = 0.8 set_greyscale(COLOR_PURPLE) - manipulator_hand?.set_greyscale(COLOR_PURPLE) + manipulator_arm?.set_greyscale(COLOR_PURPLE) active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * power_use_lvl @@ -316,10 +357,10 @@ if(WEST) take_here = NORTH drop_here = SOUTH - manipulator_hand.dir = take_here + manipulator_arm.dir = take_here var/mob/monkey = monkey_worker?.resolve() if(!isnull(monkey)) - monkey.dir = manipulator_hand.dir + monkey.dir = manipulator_arm.dir take_and_drop_turfs_check() /// Deliting hand will destroy our manipulator core. @@ -329,8 +370,11 @@ deconstruct(TRUE) /// Pre take and drop proc from [take and drop procs loop]: -/// Check if we can start take and drop loop -/obj/machinery/big_manipulator/proc/is_work_check() +/// Can we begin the `take-and-drop` loop? +/obj/machinery/big_manipulator/proc/is_ready_to_work() + if(worker_interaction == WORKER_EMPTY_USE) + try_take_thing() + return TRUE if(isclosedturf(drop_turf)) on = !on say("Output blocked") @@ -340,7 +384,6 @@ continue try_take_thing(take_turf, take_item) break - return TRUE /// First take and drop proc from [take and drop procs loop]: @@ -348,44 +391,51 @@ /obj/machinery/big_manipulator/proc/try_take_thing(datum/source, atom/movable/target) SIGNAL_HANDLER + var/empty_hand_check = worker_interaction == WORKER_EMPTY_USE && interaction_mode == INTERACT_USE + if(!on) return if(!anchored) return - if(QDELETED(source) || QDELETED(target)) - return - if(!isturf(target.loc)) - return - if(on_work) + if(status == STATUS_BUSY) return + if(!empty_hand_check) + if(QDELETED(source) || QDELETED(target)) + return + if(!isturf(target.loc)) + return + if(!check_filter(target)) + return if(!use_energy(active_power_usage, force = FALSE)) on = FALSE say("Not enough energy!") return - if(!check_filter(target)) - return - start_work(target) + start_work(target, empty_hand_check) /// Second take and drop proc from [take and drop procs loop]: /// Taking our item and start manipulator hand rotate animation. -/obj/machinery/big_manipulator/proc/start_work(atom/movable/target) - target.forceMove(src) - containment_obj = WEAKREF(target) - manipulator_hand.update_claw(containment_obj) - on_work = TRUE +/obj/machinery/big_manipulator/proc/start_work(atom/movable/target, hand_is_empty = FALSE) + if(!hand_is_empty) + target.forceMove(src) + containment_obj = WEAKREF(target) + manipulator_arm.update_claw(containment_obj) + status = STATUS_BUSY do_rotate_animation(1) - check_next_move(target) + check_next_move(target, hand_is_empty) /// 2.5 take and drop proc from [take and drop procs loop]: -/// Choose what we will do with our item by checking the manipulate_mode. -/obj/machinery/big_manipulator/proc/check_next_move(atom/movable/target) - switch(manipulate_mode) - if(DROP_ITEM_MODE) - addtimer(CALLBACK(src, PROC_REF(drop_thing), target), working_speed) - if(USE_ITEM_MODE) - addtimer(CALLBACK(src, PROC_REF(use_thing), target), working_speed) - if(THROW_ITEM_MODE) - addtimer(CALLBACK(src, PROC_REF(throw_thing), target), working_speed) +/// Choose what we will do with our item by checking the interaction_mode. +/obj/machinery/big_manipulator/proc/check_next_move(atom/movable/target, hand_is_empty = FALSE) + if(hand_is_empty) + addtimer(CALLBACK(src, PROC_REF(use_thing_with_empty_hand)), interaction_delay SECONDS) + return + switch(interaction_mode) + if(INTERACT_DROP) + addtimer(CALLBACK(src, PROC_REF(drop_thing), target), interaction_delay SECONDS) + if(INTERACT_USE) + addtimer(CALLBACK(src, PROC_REF(use_thing), target), interaction_delay SECONDS) + if(INTERACT_THROW) + addtimer(CALLBACK(src, PROC_REF(throw_thing), target), interaction_delay SECONDS) /// 3.1 take and drop proc from [take and drop procs loop]: /// Drop our item. @@ -393,7 +443,7 @@ /obj/machinery/big_manipulator/proc/drop_thing(atom/movable/target) var/where_we_drop = search_type_by_priority_in_drop_turf(allowed_priority_settings) if(isnull(where_we_drop)) - addtimer(CALLBACK(src, PROC_REF(drop_thing), target), working_speed) + addtimer(CALLBACK(src, PROC_REF(drop_thing), target), interaction_delay SECONDS) return if((where_we_drop == drop_turf) || !isitem(target)) target.forceMove(drop_turf) @@ -413,7 +463,7 @@ /// You can also set the setting in ui so that it does not return to its privious position and continues to use object in its hand. /// Checks the priority so that you can configure which object it will select: mob/obj/turf. /// Also can use filter to interact only with obj in filter. -/obj/machinery/big_manipulator/proc/use_thing(atom/movable/target) +/obj/machinery/big_manipulator/proc/use_thing(atom/movable/target, hand_is_empty = FALSE) var/obj/obj_resolve = containment_obj?.resolve() if(isnull(obj_resolve)) finish_manipulation() @@ -434,16 +484,44 @@ var/obj/item/im_item = target var/atom/type_to_use = search_type_by_priority_in_drop_turf(allowed_priority_settings) if(isnull(type_to_use)) - check_end_of_use(im_item, target, item_was_used = FALSE) + check_end_of_use(im_item, item_was_used = FALSE) return monkey_resolve.put_in_active_hand(im_item) if(im_item.GetComponent(/datum/component/two_handed)) /// Using two-handed items in two hands. im_item.attack_self(monkey_resolve) im_item.melee_attack_chain(monkey_resolve, type_to_use) do_attack_animation(drop_turf) - manipulator_hand.do_attack_animation(drop_turf) + manipulator_arm.do_attack_animation(drop_turf) check_end_of_use(im_item, item_was_used = TRUE) +/obj/machinery/big_manipulator/proc/use_thing_with_empty_hand() + var/mob/living/carbon/human/species/monkey/monkey_resolve = monkey_worker?.resolve() + if(isnull(monkey_resolve)) + finish_manipulation() + return + var/atom/type_to_use = search_type_by_priority_in_drop_turf(allowed_priority_settings) + if(isnull(type_to_use)) + check_end_of_use_for_use_with_empty_hand() + return + /// We don't do unarmed attack on item because we will take it so we just attack self it like if we wanna to on/off table lamp. + if(isitem(type_to_use)) + var/obj/item/interact_with_item = type_to_use + var/resolve_loc = interact_with_item.loc + monkey_resolve.put_in_active_hand(interact_with_item) + interact_with_item.attack_self(monkey_resolve) + interact_with_item.forceMove(resolve_loc) + else + monkey_resolve.UnarmedAttack(type_to_use) + do_attack_animation(drop_turf) + manipulator_arm.do_attack_animation(drop_turf) + check_end_of_use_for_use_with_empty_hand() + +/obj/machinery/big_manipulator/proc/check_end_of_use_for_use_with_empty_hand(obj/item/my_item, item_was_used) + if(!on || (worker_interaction != WORKER_EMPTY_USE && interaction_mode == INTERACT_USE)) + finish_manipulation() + return + addtimer(CALLBACK(src, PROC_REF(use_thing_with_empty_hand), my_item), interaction_delay SECONDS) + /// Check what we gonna do next with our item. Drop it or use again. /obj/machinery/big_manipulator/proc/check_end_of_use(obj/item/my_item, item_was_used) if(!on) @@ -451,12 +529,12 @@ my_item.dir = get_dir(get_turf(my_item), get_turf(src)) finish_manipulation() return - if(drop_item_after_use && item_was_used) + if(worker_interaction == WORKER_SINGLE_USE && item_was_used) my_item.forceMove(drop_turf) my_item.dir = get_dir(get_turf(my_item), get_turf(src)) finish_manipulation() return - addtimer(CALLBACK(src, PROC_REF(use_thing), my_item), working_speed) + addtimer(CALLBACK(src, PROC_REF(use_thing), my_item), interaction_delay SECONDS) /// 3.3 take and drop proc from [take and drop procs loop]: /// Throw item away!!! @@ -470,31 +548,31 @@ im_item.forceMove(drop_turf) im_item.throw_at(get_edge_target_turf(get_turf(src), drop_here), manipulator_throw_range - 1, 2) src.do_attack_animation(drop_turf) - manipulator_hand.do_attack_animation(drop_turf) + manipulator_arm.do_attack_animation(drop_turf) finish_manipulation() /// End of thirds take and drop proc from [take and drop procs loop]: /// Starts manipulator hand backward animation. /obj/machinery/big_manipulator/proc/finish_manipulation() containment_obj = null - manipulator_hand.update_claw(null) + manipulator_arm.update_claw(null) do_rotate_animation(0) - addtimer(CALLBACK(src, PROC_REF(end_work)), working_speed) + addtimer(CALLBACK(src, PROC_REF(end_work)), interaction_delay SECONDS) /// Fourth and last take and drop proc from [take and drop procs loop]: /// Finishes work and begins to look for a new item for [take and drop procs loop]. /obj/machinery/big_manipulator/proc/end_work() - on_work = FALSE - is_work_check() + status = STATUS_IDLE + is_ready_to_work() /// Rotates manipulator hand 90 degrees. /obj/machinery/big_manipulator/proc/do_rotate_animation(backward) - animate(manipulator_hand, transform = matrix(90, MATRIX_ROTATE), working_speed*0.5) - addtimer(CALLBACK(src, PROC_REF(finish_rotate_animation), backward), working_speed*0.5) + animate(manipulator_arm, transform = matrix(90, MATRIX_ROTATE), interaction_delay SECONDS * 0.5) + addtimer(CALLBACK(src, PROC_REF(finish_rotate_animation), backward), interaction_delay SECONDS * 0.5) /// Rotates manipulator hand from 90 degrees to 180 or 0 if backward. /obj/machinery/big_manipulator/proc/finish_rotate_animation(backward) - animate(manipulator_hand, transform = matrix(180 * backward, MATRIX_ROTATE), working_speed*0.5) + animate(manipulator_arm, transform = matrix(180 * backward, MATRIX_ROTATE), interaction_delay SECONDS * 0.5) /obj/machinery/big_manipulator/proc/check_filter(atom/movable/target) if (target.anchored || HAS_TRAIT(target, TRAIT_NODROP)) @@ -514,26 +592,22 @@ /// Proc called when we changing item interaction mode. /obj/machinery/big_manipulator/proc/change_mode() - switch(manipulate_mode) - if(DROP_ITEM_MODE) - if(!isnull(monkey_worker)) - manipulate_mode = USE_ITEM_MODE - else - manipulate_mode = THROW_ITEM_MODE - if(USE_ITEM_MODE) - manipulate_mode = THROW_ITEM_MODE - if(THROW_ITEM_MODE) - manipulate_mode = DROP_ITEM_MODE + var/list/available_modes = list(INTERACT_DROP, INTERACT_USE, INTERACT_THROW) + + if(isnull(monkey_worker)) + available_modes = list(INTERACT_DROP, INTERACT_THROW) + + interaction_mode = cycle_value(interaction_mode, available_modes) update_priority_list() - is_work_check() + is_ready_to_work() /// Update priority list in ui. Creating new list and sort it by priority number. /obj/machinery/big_manipulator/proc/update_priority_list() allowed_priority_settings = list() var/list/priority_mode_list - if(manipulate_mode == DROP_ITEM_MODE) + if(interaction_mode == INTERACT_DROP) priority_mode_list = priority_settings_for_drop.Copy() - if(manipulate_mode == USE_ITEM_MODE) + if(interaction_mode == INTERACT_USE) priority_mode_list = priority_settings_for_use.Copy() if(isnull(priority_mode_list)) return @@ -543,12 +617,12 @@ continue allowed_priority_settings += what_priority -/// Proc thet return item by type in priority list. Selects item and increasing priority number if don't found req type. +/// Proc that return item by type in priority list. Selects item and increasing priority number if don't found req type. /obj/machinery/big_manipulator/proc/search_type_by_priority_in_drop_turf(list/priority_list) var/lazy_counter = 1 for(var/datum/manipulator_priority/take_type in priority_list) - /// If we set only_highest_priority on TRUE we don't go to priority below. - if(lazy_counter > 1 && only_highest_priority) + /// If we set override_priority on TRUE we don't go to priority below. + if(lazy_counter > 1 && override_priority) return null /// If we need turf we don't check turf.contents and just return drop_turf. if(take_type.what_type == /turf) @@ -563,7 +637,7 @@ /obj/machinery/big_manipulator/proc/press_on(pressed_by) if(pressed_by) on = !on - if(!is_work_check()) + if(!is_ready_to_work()) return if(on) RegisterSignal(take_turf, COMSIG_ATOM_ENTERED, PROC_REF(try_take_thing)) @@ -574,34 +648,28 @@ /// Proc that check if button not cutted when we press on button. /obj/machinery/big_manipulator/proc/try_press_on(mob/user) - if(on_button_cutted) + if(power_access_wire_cut) balloon_alert(user, "button is cut off!") return press_on(pressed_by = TRUE) /// Drop item that manipulator is manipulating. -/obj/machinery/big_manipulator/proc/drop_containment_item() +/obj/machinery/big_manipulator/proc/drop_held_object() if(isnull(containment_obj)) return var/obj/obj_resolve = containment_obj?.resolve() obj_resolve?.forceMove(get_turf(obj_resolve)) finish_manipulation() -/// Changes the type of objects that the manipulator will pick up -/obj/machinery/big_manipulator/proc/change_what_take_type() - selected_type_by_number++ - if(selected_type_by_number > allowed_types_to_pick_up.len) - selected_type_by_number = 1 - selected_type = allowed_types_to_pick_up[selected_type_by_number] - is_work_check() - -/// Changes range with which the manipulator throws objects, from 1 to 7. -/obj/machinery/big_manipulator/proc/change_throw_range() - manipulator_throw_range++ - if(manipulator_throw_range > 7) - manipulator_throw_range = 1 +/// Changes manipulator working speed time. +/obj/machinery/big_manipulator/proc/change_delay(new_delay) + interaction_delay = round(clamp(new_delay, minimal_delay, MAX_DELAY), DELAY_STEP) /obj/machinery/big_manipulator/ui_interact(mob/user, datum/tgui/ui) + if(id_locked) + to_chat(user, span_warning("[src] is locked behind id authentication!")) + ui?.close() + return if(!anchored) to_chat(user, span_warning("[src] isn't attached to the ground!")) ui?.close() @@ -616,9 +684,9 @@ data["active"] = on data["item_as_filter"] = filter_obj?.resolve() data["selected_type"] = selected_type.name - data["manipulate_mode"] = manipulate_mode - data["drop_after_use"] = drop_item_after_use - data["highest_priority"] = only_highest_priority + data["interaction_mode"] = interaction_mode + data["worker_interaction"] = worker_interaction + data["highest_priority"] = override_priority data["throw_range"] = manipulator_throw_range var/list/priority_list = list() data["settings_list"] = list() @@ -628,6 +696,14 @@ priority_data["priority_width"] = allowed_setting.number priority_list += list(priority_data) data["settings_list"] = priority_list + data["min_delay"] = minimal_delay + data["interaction_delay"] = interaction_delay + return data + +/obj/machinery/big_manipulator/ui_static_data(mob/user) + var/list/data = list() + data["delay_step"] = DELAY_STEP + data["max_delay"] = MAX_DELAY return data /obj/machinery/big_manipulator/ui_act(action, params, datum/tgui/ui) @@ -639,10 +715,10 @@ try_press_on(ui.user) return TRUE if("drop") - drop_containment_item() + drop_held_object() return TRUE if("change_take_item_type") - change_what_take_type() + cycle_pickup_type() return TRUE if("change_mode") change_mode() @@ -655,7 +731,7 @@ if(give_obj_back) give_obj_back.forceMove(get_turf(src)) filter_obj = null - is_work_check() + is_ready_to_work() to_chat(living_user, span_warning("Filter removed")) return TRUE var/obj/item/get_active_held_item = living_user.get_active_held_item() @@ -664,13 +740,13 @@ return FALSE filter_obj = WEAKREF(get_active_held_item) get_active_held_item.forceMove(src) - is_work_check() + is_ready_to_work() return TRUE if("highest_priority_change") - only_highest_priority = !only_highest_priority + override_priority = !override_priority return TRUE - if("drop_use_change") - drop_item_after_use = !drop_item_after_use + if("worker_interaction_change") + cycle_worker_interaction() return TRUE if("change_priority") var/new_priority_number = params["priority"] @@ -682,8 +758,11 @@ break update_priority_list() return TRUE - if("change_throw_range") - change_throw_range() + if("cycle_throw_range") + cycle_throw_range() + return TRUE + if("changeDelay") + change_delay(text2num(params["new_delay"])) return TRUE /// Using on change_priority: looks for a setting with the same number that we set earlier and reduce it. @@ -695,15 +774,15 @@ break /// Manipulator hand. Effect we animate to show that the manipulator is working and moving something. -/obj/effect/big_manipulator_hand - name = "Manipulator claw" - desc = "Take and drop objects. Innovation..." +/obj/effect/big_manipulator_arm + name = "mechanical claw" + desc = "Takes and drops objects." icon = 'icons/obj/machines/big_manipulator_parts/big_manipulator_hand.dmi' icon_state = "hand" layer = LOW_ITEM_LAYER appearance_flags = KEEP_TOGETHER | LONG_GLIDE | TILE_BOUND | PIXEL_SCALE anchored = TRUE - greyscale_config = /datum/greyscale_config/manipulator_hand + greyscale_config = /datum/greyscale_config/manipulator_arm pixel_x = -32 pixel_y = -32 /// We get item from big manipulator and takes its icon to create overlay. @@ -711,28 +790,28 @@ /// Var to icon that used as overlay on manipulator claw to show what item it grabs. var/mutable_appearance/icon_overlay -/obj/effect/big_manipulator_hand/update_overlays() +/obj/effect/big_manipulator_arm/update_overlays() . = ..() . += update_item_overlay() -/obj/effect/big_manipulator_hand/proc/update_item_overlay() +/obj/effect/big_manipulator_arm/proc/update_item_overlay() if(isnull(item_in_my_claw)) return icon_overlay = null var/atom/movable/item_data = item_in_my_claw.resolve() icon_overlay = mutable_appearance(item_data.icon, item_data.icon_state, item_data.layer, src, item_data.plane, item_data.alpha, item_data.appearance_flags) icon_overlay.color = item_data.color icon_overlay.appearance = item_data.appearance - icon_overlay.pixel_x = 32 + calculate_item_offset(is_x = TRUE) - icon_overlay.pixel_y = 32 + calculate_item_offset(is_x = FALSE) + icon_overlay.pixel_w = 32 + calculate_item_offset(is_x = TRUE) + icon_overlay.pixel_z = 32 + calculate_item_offset(is_x = FALSE) return icon_overlay /// Updates item that is in the claw. -/obj/effect/big_manipulator_hand/proc/update_claw(clawed_item) +/obj/effect/big_manipulator_arm/proc/update_claw(clawed_item) item_in_my_claw = clawed_item update_appearance() /// Calculate x and y coordinates so that the item icon appears in the claw and not somewhere in the corner. -/obj/effect/big_manipulator_hand/proc/calculate_item_offset(is_x = TRUE, pixels_to_offset = 32) +/obj/effect/big_manipulator_arm/proc/calculate_item_offset(is_x = TRUE, pixels_to_offset = 32) var/offset switch(dir) if(NORTH) @@ -753,46 +832,82 @@ var/what_type /** * Place in the priority queue. The lower the number, the more important the priority. - * Doesn’t really matter what number you enter, user can set priority for themselves, + * Doesn't really matter what number you enter, user can set priority for themselves, * BUT!!! * Don't write the same numbers in the same parent otherwise something may go wrong. */ var/number /datum/manipulator_priority/for_drop/on_floor - name = "Drop on Floor" + name = "DROP ON FLOOR" what_type = /turf number = 1 /datum/manipulator_priority/for_drop/in_storage - name = "Drop in Storage" + name = "DROP IN STORAGE" what_type = /obj/item/storage number = 2 /datum/manipulator_priority/for_use/on_living - name = "Use on Living" + name = "USE ON LIVING" what_type = /mob/living number = 1 /datum/manipulator_priority/for_use/on_structure - name = "Use on Structure" + name = "USE ON STRUCTURE" what_type = /obj/structure number = 2 /datum/manipulator_priority/for_use/on_machinery - name = "Use on Machinery" + name = "USE ON MACHINERY" what_type = /obj/machinery number = 3 /datum/manipulator_priority/for_use/on_items - name = "Use on Items" + name = "USE ON ITEM" what_type = /obj/item number = 4 -#undef DROP_ITEM_MODE -#undef USE_ITEM_MODE -#undef THROW_ITEM_MODE +/// Cycles the given value in the given list. Retuns the next value in the list, or the first one if the list isn't long enough. +/obj/machinery/big_manipulator/proc/cycle_value(current_value, list/possible_values) + var/current_index = possible_values.Find(current_value) + if(current_index == null) + return possible_values[1] + + var/next_index = (current_index % possible_values.len) + 1 + return possible_values[next_index] + +/obj/machinery/big_manipulator/proc/cycle_worker_interaction() + var/list/worker_modes = list(WORKER_NORMAL_USE, WORKER_SINGLE_USE, WORKER_EMPTY_USE) + worker_interaction = cycle_value(worker_interaction, worker_modes) + +/obj/machinery/big_manipulator/proc/cycle_throw_range() + var/list/possible_ranges = list(1, 2, 3, 4, 5, 6, 7) + manipulator_throw_range = cycle_value(manipulator_throw_range, possible_ranges) + +/obj/machinery/big_manipulator/proc/cycle_pickup_type() + selected_type = cycle_value(selected_type, allowed_types_to_pick_up) + is_ready_to_work() + +#undef INTERACT_DROP +#undef INTERACT_USE +#undef INTERACT_THROW #undef TAKE_ITEMS #undef TAKE_CLOSETS #undef TAKE_HUMANS + +#undef DELAY_STEP +#undef MAX_DELAY + +#undef WORKER_NORMAL_USE +#undef WORKER_SINGLE_USE +#undef WORKER_EMPTY_USE + +#undef STATUS_IDLE +#undef STATUS_BUSY + +#undef MIN_DELAY_TIER_1 +#undef MIN_DELAY_TIER_2 +#undef MIN_DELAY_TIER_3 +#undef MIN_DELAY_TIER_4 diff --git a/code/game/machinery/computer/arcade/amputation.dm b/code/game/machinery/computer/arcade/amputation.dm index d20a5de2b28..b61c460398e 100644 --- a/code/game/machinery/computer/arcade/amputation.dm +++ b/code/game/machinery/computer/arcade/amputation.dm @@ -9,7 +9,7 @@ /obj/machinery/computer/arcade/amputation/attack_tk(mob/user) return //that's a pretty damn big guillotine -/obj/machinery/computer/arcade/amputation/attack_hand(mob/user, list/modifiers) +/obj/machinery/computer/arcade/amputation/attack_hand(mob/living/user, list/modifiers) . = ..() if(!iscarbon(user)) return diff --git a/code/game/machinery/computer/arcade/battle.dm b/code/game/machinery/computer/arcade/battle.dm index 664b9b4f5a5..142d85370c9 100644 --- a/code/game/machinery/computer/arcade/battle.dm +++ b/code/game/machinery/computer/arcade/battle.dm @@ -120,13 +120,13 @@ name = make_boss_name_with_verb() -/obj/machinery/computer/arcade/battle/emag_act(mob/user, obj/item/card/emag/emag_card) +/obj/machinery/computer/arcade/battle/emag_act(mob/living/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) return FALSE obj_flags |= EMAGGED balloon_alert(user, "hard mode enabled") to_chat(user, span_warning("A mesmerizing Rhumba beat starts playing from the arcade machine's speakers!")) - setup_new_opponent() + setup_new_opponent(user) feedback_message = "If you die in the game, you die for real!" SStgui.update_uis(src) return TRUE @@ -175,7 +175,7 @@ return "The [boss_adjective] [boss_name]" ///Sets up a new opponent depending on what stage they are at. -/obj/machinery/computer/arcade/battle/proc/setup_new_opponent(enemy_gets_first_move = FALSE) +/obj/machinery/computer/arcade/battle/proc/setup_new_opponent(mob/living/user, enemy_gets_first_move = FALSE) enemy_hp = round(rand(90, 125) * all_worlds[player_current_world], 1) enemy_mp = round(rand(20, 30) * all_worlds[player_current_world], 1) enemy_gold_reward = rand((DEFAULT_ITEM_PRICE / 2), DEFAULT_ITEM_PRICE) @@ -201,7 +201,7 @@ ui_panel = UI_PANEL_BATTLE if(enemy_gets_first_move) - perform_enemy_turn() + perform_enemy_turn(user) /** * on_battle_win @@ -210,7 +210,7 @@ * It also handles clearing the enemy out for the next one, and unlocking new worlds. * We stop at BATTLE_WORLD_NINE because it is the last stage, and has infinite bosses. */ -/obj/machinery/computer/arcade/battle/proc/on_battle_win(mob/user) +/obj/machinery/computer/arcade/battle/proc/on_battle_win(mob/living/user) enemy_name = null feedback_message = null player_turn = TRUE @@ -229,8 +229,8 @@ bomb_cooldown = initial(bomb_cooldown) new /obj/effect/spawner/newbomb/plasma(loc, /obj/item/assembly/timer) new /obj/item/clothing/head/collectable/petehat(loc) - message_admins("[ADMIN_LOOKUPFLW(usr)] has outbombed Cuban Pete and been awarded a bomb.") - usr.log_message("outbombed Cuban Pete and has been awarded a bomb.", LOG_GAME) + message_admins("[ADMIN_LOOKUPFLW(user)] has outbombed Cuban Pete and been awarded a bomb.") + user.log_message("outbombed Cuban Pete and has been awarded a bomb.", LOG_GAME) else visible_message(span_notice("[src] dispenses 2 tickets!")) new /obj/item/stack/arcadeticket((get_turf(src)), 2) @@ -245,15 +245,15 @@ ui_panel = UI_PANEL_BETWEEN_FIGHTS ///Called when a mob loses at the battle arcade. -/obj/machinery/computer/arcade/battle/proc/lose_game(mob/user) - if(obj_flags & EMAGGED) - var/mob/living/living_user = user - if(istype(living_user)) - living_user.investigate_log("has been gibbed by an emagged Orion Trail game.", INVESTIGATE_DEATHS) - living_user.gib(DROP_ALL_REMAINS) - user.lost_game() +/obj/machinery/computer/arcade/battle/proc/lose_game(mob/living/user) SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (obj_flags & EMAGGED ? "emagged":"normal"))) SStgui.update_uis(src) + if (!user) + return + user.lost_game() + if(obj_flags & EMAGGED) + user.investigate_log("has been gibbed by an emagged Orion Trail game.", INVESTIGATE_DEATHS) + user.gib(DROP_ALL_REMAINS) ///Called when the enemy attacks you. /obj/machinery/computer/arcade/battle/proc/user_take_damage(mob/user, base_damage_taken) @@ -266,10 +266,11 @@ say("You have been crushed! GAME OVER.") playsound(loc, 'sound/machines/arcade/lose.ogg', 40, TRUE) lose_game(user) - else - feedback_message = "User took [damage_taken] damage!" - playsound(loc, 'sound/machines/arcade/hit.ogg', 40, TRUE, extrarange = -3) - SStgui.update_uis(src) + return + + feedback_message = "User took [damage_taken] damage!" + playsound(loc, 'sound/machines/arcade/hit.ogg', 40, TRUE, extrarange = -3) + SStgui.update_uis(src) ///Called when you attack the enemy. /obj/machinery/computer/arcade/battle/proc/process_player_attack(mob/user, attack_type) @@ -339,7 +340,7 @@ * if they lack the MP, then it's rolling to steal MP from the player. * After, we will roll to see if the player counterattacks the enemy (if set), otherwise we will attack normally. */ -/obj/machinery/computer/arcade/battle/proc/perform_enemy_turn(mob/user, defending_flags = NONE) +/obj/machinery/computer/arcade/battle/proc/perform_enemy_turn(mob/living/user, defending_flags = NONE) player_turn = TRUE var/chance_to_magic = round(max((-(enemy_hp - enemy_max_hp) / 2), 75), 1) if((enemy_hp != enemy_max_hp) && prob(chance_to_magic)) @@ -438,6 +439,7 @@ if(!istype(gamer)) return + gamer.played_game() switch(ui_panel) if(UI_PANEL_GAMEOVER) switch(action) @@ -478,7 +480,7 @@ say("That world is not unlocked yet!") return TRUE player_current_world = all_worlds[world_travelling] - setup_new_opponent() + setup_new_opponent(gamer) return TRUE if("enter_inn") ui_panel = UI_PANEL_SHOP @@ -486,7 +488,7 @@ if(UI_PANEL_BETWEEN_FIGHTS) switch(action) if("continue_without_rest") - setup_new_opponent() + setup_new_opponent(gamer) return TRUE if("continue_with_rest") if(prob(60)) @@ -500,9 +502,9 @@ player_gold /= 2 else //You got ambushed, the enemy gets the first hit. - setup_new_opponent(enemy_gets_first_move = TRUE) + setup_new_opponent(gamer, enemy_gets_first_move = TRUE) return TRUE - setup_new_opponent() + setup_new_opponent(gamer) return TRUE if("abandon_quest") if(player_current_world == latest_unlocked_world) diff --git a/code/game/machinery/computer/arcade/orion.dm b/code/game/machinery/computer/arcade/orion.dm index 728eb682735..72bf0cb1e51 100644 --- a/code/game/machinery/computer/arcade/orion.dm +++ b/code/game/machinery/computer/arcade/orion.dm @@ -78,9 +78,8 @@ if(!(event.type in event_whitelist)) events.Remove(event) -/obj/machinery/computer/arcade/orion_trail/proc/newgame() +/obj/machinery/computer/arcade/orion_trail/proc/newgame(mob/living/player) // Set names of settlers in crew - var/mob/living/player = usr var/player_crew_name = first_name(player.name) settlers = list() for(var/i in 1 to ORION_STARTING_CREW_COUNT - 1) //one reserved to be YOU @@ -183,7 +182,7 @@ if(.) return - var/mob/living/gamer = usr + var/mob/living/gamer = ui.user if(!istype(gamer)) return @@ -213,7 +212,7 @@ if("start_game") if(gameStatus != ORION_STATUS_START) return - newgame() + newgame(gamer) if("instructions") if(gameStatus != ORION_STATUS_START) return @@ -333,9 +332,8 @@ if(obj_flags & EMAGGED) event.emag_effect(src, gamer) -/obj/machinery/computer/arcade/orion_trail/proc/set_game_over(user, given_reason) - usr.lost_game() - +/obj/machinery/computer/arcade/orion_trail/proc/set_game_over(mob/living/user, given_reason) + user.lost_game() gameStatus = ORION_STATUS_GAMEOVER event = null reason = given_reason || death_reason(user) @@ -463,15 +461,14 @@ if(lings_suspected) //lings ruin any good mood settlermoods[settlers[i]] = min(settlermoods[settlers[i]], 3) -/obj/machinery/computer/arcade/orion_trail/proc/win(mob/user) - usr.won_game() - +/obj/machinery/computer/arcade/orion_trail/proc/win(mob/living/user) + user.won_game() gameStatus = ORION_STATUS_START say("Congratulations, you made it to Orion!") if(obj_flags & EMAGGED) new /obj/item/orion_ship(loc) - message_admins("[ADMIN_LOOKUPFLW(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") - usr.log_message("made it to Orion on an emagged machine and got an explosive toy ship.", LOG_GAME) + message_admins("[ADMIN_LOOKUPFLW(user)] made it to Orion on an emagged machine and got an explosive toy ship.") + user.log_message("made it to Orion on an emagged machine and got an explosive toy ship.", LOG_GAME) else new /obj/item/stack/arcadeticket((get_turf(src)), 2) to_chat(user, span_notice("[src] dispenses 2 tickets!")) @@ -479,17 +476,21 @@ name = initial(name) desc = initial(desc) -/obj/machinery/computer/arcade/orion_trail/emag_act(mob/user, obj/item/card/emag/emag_card) +/obj/machinery/computer/arcade/orion_trail/emag_act(mob/living/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) return FALSE - if (user) - user.log_message("emagged [src], activating Realism Mode.", LOG_GAME) - balloon_alert(user, "realism mode enabled") - to_chat(user, span_notice("You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.")) + name = "The Orion Trail: Realism Edition" desc = "Learn how our ancestors got to Orion, and try not to die in the process!" - newgame() obj_flags |= EMAGGED + + if (!user) + return TRUE + + user.log_message("emagged [src], activating Realism Mode.", LOG_GAME) + balloon_alert(user, "realism mode enabled") + to_chat(user, span_notice("You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.")) + newgame(user) return TRUE ///A minibomb achieved from winning at emagged Orion. @@ -515,7 +516,7 @@ if(active) return - log_bomber(usr, "primed an explosive", src, "for detonation") + log_bomber(user, "primed an explosive", src, "for detonation") to_chat(user, span_warning("You flip the switch on the underside of [src].")) active = TRUE addtimer(CALLBACK(src, PROC_REF(commit_explosion)), 1 SECONDS) diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 3848717cc37..8562d2ad74e 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -169,6 +169,17 @@ var/list/mutations = list() var/max_mutations = 6 var/read_only = FALSE //Well,it's still a floppy disk + obj_flags = parent_type::obj_flags | INFINITE_RESKIN + unique_reskin = list( + "Red" = "datadisk0", + "Dark Blue" = "datadisk1", + "Yellow" = "datadisk2", + "Black" = "datadisk3", + "Green" = "datadisk4", + "Purple" = "datadisk5", + "Grey" = "datadisk6", + "Light Blue" = "datadisk7", + ) /obj/item/disk/data/Initialize(mapload) . = ..() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index f5d0e97401f..c3289583826 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -599,17 +599,17 @@ var/mutable_appearance/floorlight = mutable_appearance('icons/obj/doors/airlocks/station/overlays.dmi', "unres_[heading]", FLOAT_LAYER, src, ABOVE_LIGHTING_PLANE) switch (heading) if (NORTH) - floorlight.pixel_x = 0 - floorlight.pixel_y = 32 + floorlight.pixel_w = 0 + floorlight.pixel_z = 32 if (SOUTH) - floorlight.pixel_x = 0 - floorlight.pixel_y = -32 + floorlight.pixel_w = 0 + floorlight.pixel_z = -32 if (EAST) - floorlight.pixel_x = 32 - floorlight.pixel_y = 0 + floorlight.pixel_w = 32 + floorlight.pixel_z = 0 if (WEST) - floorlight.pixel_x = -32 - floorlight.pixel_y = 0 + floorlight.pixel_w = -32 + floorlight.pixel_z = 0 . += floorlight */ @@ -1252,7 +1252,7 @@ return open(BYPASS_DOOR_CHECKS) - take_damage(25, BRUTE, 0, 0) // Enough to sometimes spark + take_damage(AIRLOCK_PRY_DAMAGE, BRUTE, 0, 0) // Enough to sometimes spark if(density && !open(BYPASS_DOOR_CHECKS)) to_chat(user, span_warning("Despite your attempts, [src] refuses to open.")) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 4213de44fdb..db83debe6f1 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -660,12 +660,12 @@ if(alarm_type && powered() && !ignore_alarms) var/mutable_appearance/hazards hazards = mutable_appearance(icon, "[(obj_flags & EMAGGED) ? "firelock_alarm_type_emag" : alarm_type]") - hazards.pixel_x = light_xoffset - hazards.pixel_y = light_yoffset + hazards.pixel_w = light_xoffset + hazards.pixel_z = light_yoffset . += hazards hazards = emissive_appearance(icon, "[(obj_flags & EMAGGED) ? "firelock_alarm_type_emag" : alarm_type]", src, alpha = src.alpha) - hazards.pixel_x = light_xoffset - hazards.pixel_y = light_yoffset + hazards.pixel_w = light_xoffset + hazards.pixel_z = light_yoffset . += hazards /** @@ -792,7 +792,7 @@ /obj/machinery/door/firedoor/heavy name = "heavy firelock" - icon = 'icons/obj/doors/doorfire.dmi' // SKYRAT EDIT - ICON OVERRIDDEN IN AESTHETICS MODULE + icon = 'icons/obj/doors/doorfire.dmi' glass = FALSE explosion_block = 2 assemblytype = /obj/structure/firelock_frame/heavy @@ -807,7 +807,7 @@ /obj/structure/firelock_frame name = "firelock frame" desc = "A partially completed firelock." - icon = 'icons/obj/doors/doorfire.dmi' // SKYRAT EDIT - ICON OVERRIDDEN IN AESTHETICS MODULE + icon = 'icons/obj/doors/doorfire.dmi' icon_state = "frame1" base_icon_state = "frame" anchored = FALSE diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 5d130491b64..3954bf6f521 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -120,20 +120,20 @@ if(NORTH,SOUTH) if(unres_sides & NORTH) var/image/side_overlay = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_n") - side_overlay.pixel_y = dir == NORTH ? 31 : 6 + side_overlay.pixel_z = dir == NORTH ? 31 : 6 . += side_overlay if(unres_sides & SOUTH) var/image/side_overlay = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_s") - side_overlay.pixel_y = dir == NORTH ? -6 : -31 + side_overlay.pixel_z = dir == NORTH ? -6 : -31 . += side_overlay if(EAST,WEST) if(unres_sides & EAST) var/image/side_overlay = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_e") - side_overlay.pixel_x = dir == EAST ? 31 : 6 + side_overlay.pixel_w = dir == EAST ? 31 : 6 . += side_overlay if(unres_sides & WEST) var/image/side_overlay = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_w") - side_overlay.pixel_x = dir == EAST ? -6 : -31 + side_overlay.pixel_w = dir == EAST ? -6 : -31 . += side_overlay /obj/machinery/door/window/proc/open_and_close() diff --git a/code/game/machinery/drone_dispenser.dm b/code/game/machinery/drone_dispenser.dm index 414746dcb19..82fdf1fad49 100644 --- a/code/game/machinery/drone_dispenser.dm +++ b/code/game/machinery/drone_dispenser.dm @@ -254,36 +254,35 @@ icon_state = icon_on return ..() -/obj/machinery/drone_dispenser/attackby(obj/item/I, mob/living/user) - if(I.tool_behaviour == TOOL_CROWBAR) - materials.retrieve_all() - I.play_tool_sound(src) - to_chat(user, span_notice("You retrieve the materials from [src].")) +/obj/machinery/drone_dispenser/crowbar_act(mob/living/user, obj/item/tool) + materials.retrieve_all() + tool.play_tool_sound(src) + to_chat(user, span_notice("You retrieve the materials from [src].")) + return ITEM_INTERACT_SUCCESS - else if(I.tool_behaviour == TOOL_WELDER) - if(!(machine_stat & BROKEN)) - to_chat(user, span_warning("[src] doesn't need repairs.")) - return +/obj/machinery/drone_dispenser/welder_act(mob/living/user, obj/item/tool) + if(!(machine_stat & BROKEN)) + to_chat(user, span_warning("[src] doesn't need repairs.")) + return ITEM_INTERACT_BLOCKING - if(!I.tool_start_check(user, amount=1)) - return + if(!tool.tool_start_check(user, amount=1)) + return ITEM_INTERACT_BLOCKING - user.visible_message( - span_notice("[user] begins patching up [src] with [I]."), - span_notice("You begin restoring the damage to [src]...")) + user.visible_message( + span_notice("[user] begins patching up [src] with [tool]."), + span_notice("You begin restoring the damage to [src]...")) - if(!I.use_tool(src, user, 40, volume=50)) - return + if(!tool.use_tool(src, user, 40, volume=50)) + return ITEM_INTERACT_BLOCKING - user.visible_message( - span_notice("[user] fixes [src]!"), - span_notice("You restore [src] to operation.")) + user.visible_message( + span_notice("[user] fixes [src]!"), + span_notice("You restore [src] to operation.")) - set_machine_stat(machine_stat & ~BROKEN) - atom_integrity = max_integrity - update_appearance() - else - return ..() + set_machine_stat(machine_stat & ~BROKEN) + atom_integrity = max_integrity + update_appearance() + return ITEM_INTERACT_SUCCESS /obj/machinery/drone_dispenser/atom_break(damage_flag) . = ..() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 675c5044473..2a4cfeab6d6 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -108,6 +108,7 @@ Possible to do for anyone motivated enough: ) ) AddElement(/datum/element/contextual_screentip_mob_typechecks, hovering_mob_typechecks) + set_wires(new /datum/wires/holopad(src)) if(on_network) holopads += src @@ -225,11 +226,17 @@ Possible to do for anyone motivated enough: /obj/machinery/holopad/examine(mob/user) . = ..() - if(isAI(user)) - . += span_notice("The status display reads: Current projection range: [holo_range] units. Use :h to speak through the projection. Right-click to project or cancel a projection. Alt-click to hangup all active and incomming calls. Ctrl-click to end projection without jumping to your last location.") - else if(in_range(user, src) || isobserver(user)) + if(isAI(user) || in_range(user, src) || isobserver(user)) . += span_notice("The status display reads: Current projection range: [holo_range] units.") + if(!isAI(user)) + return + + . += span_info("Use :[/datum/saymode/holopad::key] to speak through the projection.") + . += span_info("Right-click to project or cancel a projection.") + . += span_info("Alt-click to hangup all active and incomming calls.") + . += span_info("Ctrl-click to end projection without jumping to your last location.") + /obj/machinery/holopad/wrench_act(mob/living/user, obj/item/tool) . = ..() default_unfasten_wrench(user, tool) @@ -623,10 +630,9 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ return TRUE /obj/machinery/holopad/proc/clear_holo(datum/owner) - qdel(masters[owner]) // Get rid of owner's hologram + qdel(masters[owner]) unset_holo(owner) return TRUE - /** * Called by holocall to inform outgoing_call that the receiver picked up. */ @@ -753,6 +759,14 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ return hologram /obj/machinery/holopad/proc/replay_start() + if(!disk) + say("Please insert the disc to play the recording.") + return + + if(!disk.record) + say("There is no record on the disc. Please check the disk.") + return + if(!replay_mode) replay_mode = TRUE replay_holo = setup_replay_holo(disk.record) @@ -760,6 +774,8 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ replay_entry(1) /obj/machinery/holopad/proc/replay_stop() + if(!disk || !disk.record) + return FALSE if(replay_mode) replay_mode = FALSE offset = FALSE diff --git a/code/game/machinery/newscaster/newspaper.dm b/code/game/machinery/newscaster/newspaper.dm index 648b64d58e8..5beb17b958f 100644 --- a/code/game/machinery/newscaster/newspaper.dm +++ b/code/game/machinery/newscaster/newspaper.dm @@ -33,6 +33,8 @@ var/saved_wanted_body ///Stored icon of the wanted criminal, if one existed at the time of creation. var/icon/saved_wanted_icon + ///Do we have eyeholes punctured? + var/punctured = FALSE /obj/item/newspaper/Initialize(mapload) . = ..() @@ -74,27 +76,56 @@ user.visible_message(span_suicide("[user] downs the contents of [last_drink.name] in one gulp! Shoulda stuck to sudoku!")) return TOXLOSS -/obj/item/newspaper/attackby(obj/item/attacking_item, mob/user, params) - if(burn_paper_product_attackby_check(attacking_item, user)) +/obj/item/newspaper/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if (burn_paper_product_attackby_check(tool, user)) SStgui.close_uis(src) - return + return ITEM_INTERACT_SKIP_TO_ATTACK - if(!user.can_write(attacking_item)) - return ..() - if(scribble_page == current_page) + if (tool.tool_behaviour == TOOL_SCREWDRIVER || tool.tool_behaviour == TOOL_WIRECUTTER || tool.sharpness) + if (punctured) + balloon_alert(user, "already has holes!") + return ITEM_INTERACT_BLOCKING + + var/used_verb = "cutting out" + if (tool.sharpness != SHARP_EDGED || tool.tool_behaviour == TOOL_SCREWDRIVER) + used_verb = "puncturing" + + balloon_alert(user, "[used_verb] peekholes...") + if (!do_after(user, 3 SECONDS, src)) + balloon_alert(user, "interrupted!") + return ITEM_INTERACT_BLOCKING + + playsound(src, 'sound/items/duct_tape/duct_tape_rip.ogg', 50, TRUE) + punctured = TRUE + // User has additional arms or something, I dunno + if (isliving(loc)) + var/mob/living/owner = loc + owner.remove_fov_trait(REF(src), FOV_REVERSE_270_DEGRESS) + owner.update_appearance(UPDATE_OVERLAYS) + return ITEM_INTERACT_SUCCESS + + if (!user.can_write(tool)) + return NONE + + if (scribble_page == current_page) user.balloon_alert(user, "already scribbled!") - return + return ITEM_INTERACT_BLOCKING + var/new_scribble_text = tgui_input_text(user, "What do you want to scribble?", "Write something", max_length = MAX_MESSAGE_LEN) - if(isnull(new_scribble_text)) - return + if (isnull(new_scribble_text)) + return ITEM_INTERACT_BLOCKING + add_fingerprint(user) user.balloon_alert(user, "scribbling...") playsound(src, SFX_WRITING_PEN, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, SOUND_FALLOFF_EXPONENT + 3, ignore_walls = FALSE) - if(!do_after(user, 2 SECONDS, src)) - return + if (!do_after(user, 2 SECONDS, src)) + balloon_alert(user, "interrupted!") + return ITEM_INTERACT_BLOCKING + user.balloon_alert(user, "scribbled!") scribble_page = current_page scribble_text = new_scribble_text + return ITEM_INTERACT_SUCCESS ///Checks the creation time of the newspaper and compares it to list to see if the list is meant to be censored at the time of printing. /obj/item/newspaper/proc/censored_check(list/times_censored) @@ -112,23 +143,36 @@ return FALSE /// Called when you start reading the paper with both hands -/obj/item/newspaper/proc/on_wielded(obj/item/source, mob/user) +/obj/item/newspaper/proc/on_wielded(obj/item/source, mob/living/user) + ADD_TRAIT(user, TRAIT_FACE_COVERED, REF(src)) RegisterSignal(user, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(holder_updated_overlays)) RegisterSignal(user, COMSIG_HUMAN_GET_VISIBLE_NAME, PROC_REF(holder_checked_name)) user.update_appearance(UPDATE_OVERLAYS) user.name = user.get_visible_name() + if (!punctured) + user.add_fov_trait(REF(src), FOV_REVERSE_270_DEGRESS) /// Called when you stop doing that -/obj/item/newspaper/proc/on_unwielded(obj/item/source, mob/user) +/obj/item/newspaper/proc/on_unwielded(obj/item/source, mob/living/user) + REMOVE_TRAIT(user, TRAIT_FACE_COVERED, REF(src)) UnregisterSignal(user, list(COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_HUMAN_GET_VISIBLE_NAME)) user.update_appearance(UPDATE_OVERLAYS) user.name = user.get_visible_name() + if (!punctured) + user.remove_fov_trait(REF(src), FOV_REVERSE_270_DEGRESS) /// Called when we're being read and overlays are updated, we should show a big newspaper over the reader /obj/item/newspaper/proc/holder_updated_overlays(atom/reader, list/overlays) SIGNAL_HANDLER - overlays += mutable_appearance(icon, "newspaper_held_over", ABOVE_MOB_LAYER) - overlays += mutable_appearance(icon, "newspaper_held_under", BELOW_MOB_LAYER) + overlays += mutable_appearance(icon, "newspaper_held_over[punctured ? "_holed" : ""]", ABOVE_MOB_LAYER) + overlays += mutable_appearance(icon, "newspaper_held_under[punctured ? "_holed" : ""]", BELOW_MOB_LAYER) + +/obj/item/newspaper/examine(mob/user) + . = ..() + if (punctured) + . += span_notice("It has a pair of small peek holes punctured near the top.") + else + . += span_notice("You can cut out some peek holes using something [span_bolditalic("sharp")] or [span_bolditalic("pointy")]...") /// Called when someone tries to figure out what our identity is, but they can't see it because of the newspaper /obj/item/newspaper/proc/holder_checked_name(mob/living/carbon/human/source, list/identity) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 1e1d4f5fe63..e27af79c89c 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -96,7 +96,7 @@ Buildable meters /obj/item/pipe/quaternary/pipe/crafted/Initialize(mapload, _pipe_type, _dir, obj/machinery/atmospherics/make_from, device_color, device_init_dir = SOUTH) . = ..() pipe_type = /obj/machinery/atmospherics/pipe/smart - pipe_color = COLOR_VERY_LIGHT_GRAY + pipe_color = ATMOS_COLOR_OMNI p_init_dir = ALL_CARDINALS setDir(SOUTH) update() diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 134fa7731d0..551ea5d519b 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -66,7 +66,6 @@ The safety-sensors status light is [obj_flags & EMAGGED ? "off" : "on"]."} /obj/machinery/recycler/wrench_act(mob/living/user, obj/item/tool) - . = ..() default_unfasten_wrench(user, tool) return ITEM_INTERACT_SUCCESS @@ -76,16 +75,15 @@ return FAILED_UNFASTEN return SUCCESSFUL_UNFASTEN -/obj/machinery/recycler/attackby(obj/item/I, mob/user, params) - if(default_deconstruction_screwdriver(user, "grinder-oOpen", "grinder-o0", I)) - return +/obj/machinery/recycler/crowbar_act(mob/living/user, obj/item/tool) + if(default_pry_open(tool, close_after_pry = TRUE)) + return ITEM_INTERACT_SUCCESS + return ITEM_INTERACT_BLOCKING - if(default_pry_open(I, close_after_pry = TRUE)) - return - - if(default_deconstruction_crowbar(I)) - return - return ..() +/obj/machinery/recycler/screwdriver_act(mob/living/user, obj/item/tool) + if(default_deconstruction_screwdriver(user, "grinder-oOpen", "grinder-o0", tool)) + return ITEM_INTERACT_SUCCESS + return ITEM_INTERACT_BLOCKING /obj/machinery/recycler/emag_act(mob/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) diff --git a/code/game/machinery/roulette_machine.dm b/code/game/machinery/roulette_machine.dm index f0bc48916ae..46ac0b80722 100644 --- a/code/game/machinery/roulette_machine.dm +++ b/code/game/machinery/roulette_machine.dm @@ -394,13 +394,13 @@ if(numberleft != 0) //Don't make the number if we are 0. var/mutable_appearance/number1 = mutable_appearance(icon, "[numberleft]") - number1.pixel_x = -shift_amount + number1.pixel_w = -shift_amount add_overlay(number1) else shift_amount = 0 //We can stay centered. var/mutable_appearance/number2 = mutable_appearance(icon, "[numberright]") - number2.pixel_x = shift_amount + number2.pixel_w = shift_amount add_overlay(number2) /obj/machinery/roulette/proc/handle_color_light(color) diff --git a/code/game/machinery/sheetifier.dm b/code/game/machinery/sheetifier.dm index bff759a6c72..815b35213b9 100644 --- a/code/game/machinery/sheetifier.dm +++ b/code/game/machinery/sheetifier.dm @@ -63,10 +63,13 @@ default_unfasten_wrench(user, tool) return ITEM_INTERACT_SUCCESS -/obj/machinery/sheetifier/attackby(obj/item/I, mob/user, params) - if(default_deconstruction_screwdriver(user, initial(icon_state), initial(icon_state), I)) +/obj/machinery/sheetifier/screwdriver_act(mob/living/user, obj/item/tool) + if(default_deconstruction_screwdriver(user, initial(icon_state), initial(icon_state), tool)) update_appearance() - return - if(default_deconstruction_crowbar(I)) - return - return ..() + return ITEM_INTERACT_SUCCESS + return ITEM_INTERACT_FAILURE + +/obj/machinery/sheetifier/crowbar_act(mob/living/user, obj/item/tool) + if(default_deconstruction_crowbar(tool)) + return ITEM_INTERACT_SUCCESS + return ITEM_INTERACT_BLOCKING diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 76c086edfff..10128355740 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -89,6 +89,11 @@ cell = null return ..() +/obj/machinery/space_heater/Exited(atom/movable/gone, direction) + . = ..() + if(gone == cell) + cell = null + /obj/machinery/space_heater/examine(mob/user) . = ..() . += "\The [src] is [on ? "on" : "off"], and the hatch is [panel_open ? "open" : "closed"]." @@ -288,7 +293,6 @@ if("eject") if(panel_open && cell) usr.put_in_hands(cell) - cell = null . = TRUE /obj/machinery/space_heater/proc/toggle_power(user) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 5e8769f5aa0..8a74dbed8e7 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -40,6 +40,8 @@ var/detonation_timer /// When do we beep next? var/next_beep + /// If TRUE, more boom wires are added based on the timer set. + var/add_boom_wires = TRUE /// Reference to the bomb core inside the bomb, which is the part that actually explodes. var/obj/item/bombcore/payload = /obj/item/bombcore/syndicate /// The countdown that'll show up to ghosts regarding the bomb's timer. @@ -65,13 +67,7 @@ /obj/machinery/syndicatebomb/process() if(!active) - end_processing() - detonation_timer = null - next_beep = null - countdown.stop() - if(payload in src) - payload.defuse() - return + return PROCESS_KILL if(!isnull(next_beep) && (next_beep <= world.time)) var/volume @@ -226,19 +222,46 @@ countdown.start() next_beep = world.time + 10 detonation_timer = world.time + (timer_set * 10) - playsound(loc, 'sound/machines/click.ogg', 30, TRUE) + // 2 booms, 0 duds at lowest timer + // 12 booms, 6 duds at ~9 minutes + var/datum/wires/syndicatebomb/bomb_wires = wires + if(add_boom_wires) + var/boom_wires = clamp(round(timer_set / 45, 1), 2, 12) + var/dud_wires = 0 + if(boom_wires >= 3) + dud_wires = floor(boom_wires / 2) + boom_wires -= dud_wires + bomb_wires.setup_wires(num_booms = boom_wires, num_duds = dud_wires) + else + bomb_wires.setup_wires(num_booms = 2, num_duds = 0) + playsound(src, 'sound/machines/click.ogg', 30, TRUE) + update_appearance() + +/obj/machinery/syndicatebomb/proc/defuse() + active = FALSE + delayedlittle = FALSE + delayedbig = FALSE + examinable_countdown = TRUE + end_processing() + detonation_timer = null + next_beep = null + countdown.stop() + if(payload in src) + payload.defuse() + var/datum/wires/syndicatebomb/bomb_wires = wires + bomb_wires.setup_wires(num_booms = 2) update_appearance() /obj/machinery/syndicatebomb/proc/settings(mob/user) if(!user.can_perform_action(src, ALLOW_SILICON_REACH) || !user.can_interact_with(src)) return - var/new_timer = tgui_input_number(user, "Set the timer", "Countdown", timer_set, maximum_timer, minimum_timer) + var/new_timer = tgui_input_number(user, "Set the timer[add_boom_wires ? " (the longer the timer, the harder to defuse!)" : ""]", "Countdown", timer_set, maximum_timer, minimum_timer) if(!new_timer || QDELETED(user) || QDELETED(src) || !user.can_perform_action(src, FORBID_TELEKINESIS_REACH)) return timer_set = new_timer - loc.visible_message(span_notice("[icon2html(src, viewers(src))] timer set for [timer_set] seconds.")) + visible_message(span_notice("[icon2html(src, viewers(src))] timer set for [timer_set] seconds.")) var/choice = tgui_alert(user, "Would you like to start the countdown now?", "Bomb Timer", list("Yes","No")) - if(choice != "Yes") + if(choice != "Yes" || QDELETED(user) || QDELETED(src) || !user.can_perform_action(src, FORBID_TELEKINESIS_REACH)) return if(active) to_chat(user, span_warning("The bomb is already active!")) @@ -595,6 +618,23 @@ chosen_theme = null return ..() +/obj/item/bombcore/dimensional/CheckParts(list/parts_list) + . = ..() + range_heavy = 13 + for(var/obj/item/grenade/chem_grenade/nade in src) + if(istype(nade, /obj/item/grenade/chem_grenade/large) || istype(nade, /obj/item/grenade/chem_grenade/adv_release)) + range_heavy += 1 + for(var/obj/item/thing as anything in nade.beakers) //remove beakers, then delete the grenade. + thing.forceMove(drop_location()) + qdel(nade) + var/obj/item/gibtonite/ore = locate() in src + switch(ore.quality) + if(GIBTONITE_QUALITY_LOW) + range_heavy -= 2 + if(GIBTONITE_QUALITY_HIGH) + range_heavy += 4 + qdel(ore) + /obj/item/bombcore/dimensional/examine(mob/user) . = ..() . += span_notice("Use in hand to change the linked dimension. Current dimension: [chosen_theme?.name || "None, output will be random"].") @@ -638,9 +678,9 @@ if(!theme_to_use.can_convert(affected)) continue num_affected++ - var/skip_sound = TRUE + var/skip_sound = FALSE if(num_affected % 5) //makes it play the sound more sparingly - skip_sound = FALSE + skip_sound = TRUE var/time_mult = round(get_dist_euclidean(get_turf(src), affected)) + 1 addtimer(CALLBACK(theme_to_use, TYPE_PROC_REF(/datum/dimension_theme, apply_theme), affected, skip_sound, TRUE), 0.1 SECONDS * time_mult) qdel(src) diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 65d22c8d856..ecb696f7aea 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -64,7 +64,7 @@ /obj/effect/decal/cleanable/dirt name = "dirt" desc = "Someone should clean that up." - icon = 'icons/effects/dirt.dmi' + icon = 'icons/effects/dirt_misc.dmi' icon_state = "dirt-flat-0" base_icon_state = "dirt" smoothing_flags = NONE @@ -72,6 +72,8 @@ canSmoothWith = SMOOTH_GROUP_CLEANABLE_DIRT + SMOOTH_GROUP_WALLS mouse_opacity = MOUSE_OPACITY_TRANSPARENT beauty = -75 + /// Set to FALSE if your dirt has no smoothing sprites + var/is_tileable = TRUE /obj/effect/decal/cleanable/dirt/Initialize(mapload) . = ..() @@ -80,7 +82,9 @@ if(!isnull(broken_flooring)) return var/turf/T = get_turf(src) - if(T.tiled_dirt) + if(T.tiled_dirt && is_tileable) + icon = 'icons/effects/dirt.dmi' + icon_state = "dirt-0" smoothing_flags = SMOOTH_BITMASK QUEUE_SMOOTH(src) if(smoothing_flags & USES_SMOOTHING) @@ -96,6 +100,7 @@ desc = "A thin layer of dust coating the floor." icon_state = "dust" base_icon_state = "dust" + is_tileable = FALSE /obj/effect/decal/cleanable/dirt/dust/Initialize(mapload) . = ..() @@ -529,10 +534,12 @@ /obj/effect/decal/cleanable/fuel_pool/bullet_act(obj/projectile/hit_proj) . = ..() ignite() + log_combat(hit_proj.firer, src, "used [hit_proj] to ignite") /obj/effect/decal/cleanable/fuel_pool/attackby(obj/item/item, mob/user, params) if(item.ignition_effect(src, user)) ignite() + log_combat(user, src, "used [item] to ignite") return ..() /obj/effect/decal/cleanable/fuel_pool/on_entered(datum/source, atom/movable/entered_atom) diff --git a/code/game/objects/effects/particle_holder.dm b/code/game/objects/effects/particle_holder.dm index 4b3d3585ce1..46048c136d1 100644 --- a/code/game/objects/effects/particle_holder.dm +++ b/code/game/objects/effects/particle_holder.dm @@ -3,7 +3,7 @@ /obj/effect/abstract/particle_holder name = "particle holder" desc = "How are you reading this? Please make a bug report :)" - appearance_flags = KEEP_APART|KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE //movable appearance_flags plus KEEP_APART and KEEP_TOGETHER + appearance_flags = KEEP_APART|KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE|RESET_COLOR //movable appearance_flags plus KEEP_APART and KEEP_TOGETHER vis_flags = VIS_INHERIT_PLANE layer = ABOVE_ALL_MOB_LAYER mouse_opacity = MOUSE_OPACITY_TRANSPARENT diff --git a/code/game/objects/effects/phased_mob.dm b/code/game/objects/effects/phased_mob.dm index 357e9683072..69fe4cb2250 100644 --- a/code/game/objects/effects/phased_mob.dm +++ b/code/game/objects/effects/phased_mob.dm @@ -1,16 +1,22 @@ /obj/effect/dummy/phased_mob - name = "water" + name = "ethereal form" anchored = TRUE flags_1 = PREVENT_CONTENTS_EXPLOSION_1 resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | SHUTTLE_CRUSH_PROOF invisibility = INVISIBILITY_OBSERVER movement_type = FLOATING - /// The movable which's jaunting in this dummy + /// The movable which is jaunting in this dummy var/atom/movable/jaunter /// The delay between moves while jaunted var/movedelay = 0 /// The speed of movement while jaunted var/movespeed = 0 + /// Image we show to our jaunter so they can see where they are + var/image/position_indicator + /// Icon we draw our position indicator from + var/phased_mob_icon = 'icons/obj/weapons/guns/projectiles.dmi' + /// Icon state we use for our position indicator + var/phased_mob_icon_state = "ice_1" /obj/effect/dummy/phased_mob/Initialize(mapload, atom/movable/jaunter) . = ..() @@ -21,13 +27,25 @@ /obj/effect/dummy/phased_mob/proc/set_jaunter(atom/movable/new_jaunter) jaunter = new_jaunter jaunter.forceMove(src) - if(ismob(jaunter)) - var/mob/mob_jaunter = jaunter - RegisterSignal(mob_jaunter, COMSIG_MOB_STATCHANGE, PROC_REF(on_stat_change)) - mob_jaunter.reset_perspective(src) + if(!ismob(jaunter)) + return + var/mob/mob_jaunter = jaunter + position_indicator = image(phased_mob_icon, src, phased_mob_icon_state, ABOVE_LIGHTING_PLANE) + position_indicator.appearance_flags |= RESET_ALPHA + SET_PLANE_EXPLICIT(position_indicator, ABOVE_LIGHTING_PLANE, src) + RegisterSignal(mob_jaunter, COMSIG_MOB_LOGIN, PROC_REF(show_client_image)) + RegisterSignal(mob_jaunter, COMSIG_MOB_STATCHANGE, PROC_REF(on_stat_change)) + mob_jaunter.reset_perspective(src) + show_client_image(mob_jaunter) + +/// Displays our position indicator to a client +/obj/effect/dummy/phased_mob/proc/show_client_image(mob/show_to) + SIGNAL_HANDLER + show_to.client?.images |= position_indicator /obj/effect/dummy/phased_mob/Destroy() jaunter = null // If a mob was left in the jaunter on qdel, they'll be dumped into nullspace + position_indicator = null return ..() /// Removes [jaunter] from our phased mob @@ -57,6 +75,7 @@ . = ..() if(gone == jaunter) UnregisterSignal(jaunter, COMSIG_MOB_STATCHANGE) + UnregisterSignal(jaunter, COMSIG_MOB_LOGIN) SEND_SIGNAL(src, COMSIG_MOB_EJECTED_FROM_JAUNT, jaunter) jaunter = null diff --git a/code/game/objects/effects/shared_particle_holder.dm b/code/game/objects/effects/shared_particle_holder.dm index 2fe0c976479..c4b3a21af3c 100644 --- a/code/game/objects/effects/shared_particle_holder.dm +++ b/code/game/objects/effects/shared_particle_holder.dm @@ -7,7 +7,7 @@ GLOBAL_LIST_EMPTY(shared_particles) /obj/effect/abstract/shared_particle_holder name = "shared particle holder" desc = "How are you reading this? Please make a bug report :)" - appearance_flags = KEEP_APART|KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE + appearance_flags = KEEP_APART|KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE|RESET_COLOR vis_flags = VIS_INHERIT_PLANE layer = ABOVE_ALL_MOB_LAYER mouse_opacity = MOUSE_OPACITY_TRANSPARENT diff --git a/code/game/objects/effects/spawners/random/contraband.dm b/code/game/objects/effects/spawners/random/contraband.dm index 5b0c78659d5..d49591d368f 100644 --- a/code/game/objects/effects/spawners/random/contraband.dm +++ b/code/game/objects/effects/spawners/random/contraband.dm @@ -22,7 +22,7 @@ /obj/item/storage/fancy/cigarettes/cigpack_shadyjims = 10, /obj/item/storage/box/donkpockets = 10, /obj/effect/spawner/random/contraband/plus = 10, - /obj/item/reagent_containers/pill/maintenance = 5, + /obj/item/reagent_containers/applicator/pill/maintenance = 5, /obj/item/survivalcapsule/fishing = 5, ) diff --git a/code/game/objects/effects/spawners/random/entertainment.dm b/code/game/objects/effects/spawners/random/entertainment.dm index fa71e104d87..c0380a7e767 100644 --- a/code/game/objects/effects/spawners/random/entertainment.dm +++ b/code/game/objects/effects/spawners/random/entertainment.dm @@ -200,7 +200,7 @@ spawn_loot_count = 1 loot = list( // random photos would go here. IF I HAD ONE. :'( /obj/item/lipstick/random, - /obj/item/reagent_containers/pill/maintenance, + /obj/item/reagent_containers/applicator/pill/maintenance, /obj/effect/spawner/random/food_or_drink/seed, /obj/effect/spawner/random/medical/minor_healing, /obj/effect/spawner/random/medical/injector, diff --git a/code/game/objects/effects/spawners/random/trash.dm b/code/game/objects/effects/spawners/random/trash.dm index a6d9bfcc45a..96c4e09c108 100644 --- a/code/game/objects/effects/spawners/random/trash.dm +++ b/code/game/objects/effects/spawners/random/trash.dm @@ -36,7 +36,7 @@ /obj/effect/spawner/random/entertainment/money = 10, /obj/effect/spawner/random/trash/crushed_can = 10, /obj/item/shard/plasma = 5, - /obj/item/reagent_containers/pill/maintenance = 5, + /obj/item/reagent_containers/applicator/pill/maintenance = 5, /obj/item/mail/junkmail = 5, /obj/effect/spawner/random/food_or_drink/snack = 5, /obj/effect/spawner/random/trash/soap = 3, diff --git a/code/game/objects/effects/spiderwebs.dm b/code/game/objects/effects/spiderwebs.dm index 49765c05986..ed3253be9bd 100644 --- a/code/game/objects/effects/spiderwebs.dm +++ b/code/game/objects/effects/spiderwebs.dm @@ -32,8 +32,8 @@ take_damage(5, BURN, 0, 0) /obj/structure/spider/stickyweb + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE - layer = MID_TURF_LAYER icon = 'icons/obj/smooth_structures/stickyweb.dmi' base_icon_state = "stickyweb" icon_state = "stickyweb-0" @@ -140,8 +140,8 @@ /obj/structure/spider/stickyweb/very_sticky/update_overlays() . = ..() var/mutable_appearance/web_overlay = mutable_appearance(icon = 'icons/effects/web.dmi', icon_state = "sticky_overlay", layer = layer + 1) - web_overlay.pixel_x -= pixel_x - web_overlay.pixel_y -= pixel_y + web_overlay.pixel_w -= pixel_x + web_overlay.pixel_z -= pixel_y . += web_overlay @@ -248,8 +248,8 @@ /obj/structure/spider/spikes name = "web spikes" desc = "Silk hardened into small yet deadly spikes." + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE - layer = MID_TURF_LAYER icon = 'icons/obj/smooth_structures/stickyweb_spikes.dmi' base_icon_state = "stickyweb_spikes" icon_state = "stickyweb_spikes-0" @@ -275,6 +275,6 @@ /obj/structure/spider/effigy/Initialize(mapload) . = ..() - AddElement(/datum/element/temporary_atom, 1 MINUTES) + fade_into_nothing(1 MINUTES) #undef SPIDER_WEB_TINT diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 4c263678e68..12330501458 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -618,8 +618,10 @@ creature_x = creature.x creature_y = creature.y - modsuit_image = image(icon = icon, loc = looker.loc, icon_state = real_icon_state, layer = ABOVE_ALL_MOB_LAYER, pixel_x = ((creature.x - looker.x) * 32), pixel_y = ((creature.y - looker.y) * 32)) + modsuit_image = image(icon = icon, loc = looker.loc, icon_state = real_icon_state, layer = ABOVE_ALL_MOB_LAYER) modsuit_image.plane = ABOVE_LIGHTING_PLANE + modsuit_image.pixel_w = (creature.x - looker.x) * 32 + modsuit_image.pixel_z = (creature.y - looker.y) * 32 SET_PLANE_EXPLICIT(modsuit_image, ABOVE_LIGHTING_PLANE, creature) mod_man = WEAKREF(looker) pinged_person = WEAKREF(creature) @@ -654,8 +656,8 @@ if(follow_creature) creature_y = creature.y creature_x = creature.x - modsuit_image.pixel_x = ((creature_x - looker.x) * 32) - modsuit_image.pixel_y = ((creature_y - looker.y) * 32) + modsuit_image.pixel_w = ((creature_x - looker.x) * 32) + modsuit_image.pixel_z = ((creature_y - looker.y) * 32) /obj/effect/temp_visual/block //color is white by default, set to whatever is needed name = "blocking glow" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 5ea38eacfea..39591cdb9cd 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1459,6 +1459,12 @@ to_chat(victim, span_warning("[source_item? "Something strange was in \the [source_item]..." : "I just bit something strange..."] ")) return discover_after + var/obj/item/organ/stomach/stomach = victim.get_organ_by_type(/obj/item/organ/stomach) + if (stomach?.consume_thing(src)) + victim.losebreath += 2 + to_chat(victim, span_warning("You swallow hard. [source_item? "Something small was in \the [source_item]..." : ""]")) + return FALSE + // victim's chest (for cavity implanting the item) var/obj/item/bodypart/chest/victim_cavity = victim.get_bodypart(BODY_ZONE_CHEST) if(victim_cavity.cavity_item) @@ -1469,7 +1475,6 @@ victim.transferItemToLoc(src, victim, TRUE) victim.losebreath += 2 - victim_cavity.cavity_item = src to_chat(victim, span_warning("You swallow hard. [source_item? "Something small was in \the [source_item]..." : ""]")) return FALSE @@ -1693,6 +1698,8 @@ var/image/attack_image = isnull(used_item.attack_icon) ? image(icon = used_item) : image(icon = used_item.attack_icon, icon_state = used_item.attack_icon_state) attack_image.plane = attacked_atom.plane + 1 + attack_image.pixel_w = used_item.base_pixel_x + used_item.base_pixel_w + attack_image.pixel_z = used_item.base_pixel_y + used_item.base_pixel_z // Scale the icon. attack_image.transform *= 0.5 // The icon should not rotate. diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index ca2d69df168..b28f4b0e91b 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -400,20 +400,48 @@ list("R&D Purple", "#D381C9"), ) decal_list = list( + //Primary Category + list("4 Corners", "tile_fourcorners"), list("Corner", "tile_corner"), list("Half", "tile_half_contrasted"), list("Opposing Corners", "tile_opposing_corners"), list("3 Corners", "tile_anticorner_contrasted"), - list("4 Corners", "tile_fourcorners"), - list("Trimline Corner", "trimline_corner_fill"), - list("Trimline Fill", "trimline_fill"), - list("Trimline Fill L", "trimline_fill__8"), // This is a hack that lives in the spritesheet builder and paint_floor - list("Trimline End", "trimline_end_fill"), - list("Trimline Box", "trimline_box_fill"), + //Trimlines Category + list("Trimline Filled Box", "trimline_box_fill"), + list("Trimline Filled Corner", "trimline_corner_fill"), + list("Trimline Filled", "trimline_fill"), + list("Trimline Filled L ", "trimline_fill__8"), // This is a hack that lives in the spritesheet builder and paint_floor + list("Trimline Filled End", "trimline_end_fill"), + list("Trimline Box", "trimline_box"), + list("Trimline Corner", "trimline_corner"), + list("Trimline", "trimline"), + list("Trimline L ", "trimline__8"), + list("Trimline End", "trimline_end"), + //A few misc decals to break up the UI a touch + list("Diagonal Centre", "diagonal_centre"), + list("Diagonal Edge", "diagonal_edge"), + list("Full Tile", "tile_full"), + list("Full Half", "tile_half"), + list("Full Anticorner", "tile_anticorner"), + //Decorative Trimlines Category + list("Trimline Connector L", "trimline_shrink_cw"), + list("Trimline Connector R", "trimline_shrink_ccw"), + list("Trimline Arrow L Filled", "trimline_arrow_cw_fill"), + list("Trimline Arrow R Filled", "trimline_arrow_ccw_fill"), + list("Trimline Warn Filled", "trimline_warn_fill"), + list("Trimline Warn Filled L", "trimline_warn_fill__8"), + list("Trimline Warn", "trimline_warn"), + list("Trimline Warn L", "trimline_warn__8"), + list("Trimline Arrow L", "trimline_arrow_cw"), + list("Trimline Arrow R", "trimline_arrow_ccw"), ) nondirectional_decals = list( "tile_fourcorners", "trimline_box_fill", + "trimline_box", + "diagonal_centre", + "diagonal_edge", + "tile_full", ) /// Regex to split alpha out. diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index a1f0001f651..512daefd1e1 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -72,6 +72,7 @@ data["area_notice"] = "You are now in \the [current_area.name]" var/area/area_inside_of = get_area(user) data["area_name"] = html_encode(area_inside_of.name) + data["area_allows_shuttle_docking"] = area_inside_of.allow_shuttle_docking data["legend"] = legend_viewing data["viewing"] = !!viewing data["wire_data"] = list() @@ -128,6 +129,11 @@ in_use = TRUE edit_area(user) in_use = FALSE + if("toggle_allow_shuttle_docking") + if(get_area_type(user) != AREA_STATION) + return + var/area/area = get_area(src) + area.allow_shuttle_docking = !area.allow_shuttle_docking if("exit_legend") legend_viewing = LEGEND_OFF if("view_legend") diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm index 40ea0ba37b5..d95a9e2f963 100644 --- a/code/game/objects/items/body_egg.dm +++ b/code/game/objects/items/body_egg.dm @@ -11,6 +11,10 @@ ..() to_chat(finder, span_warning("You found an unknown alien organism in [owner]'s [zone]!")) +/obj/item/organ/body_egg/feel_for_damage(self_aware) + // keep these stealthy for now, revisit later + return "" + /obj/item/organ/body_egg/Initialize(mapload) . = ..() if(iscarbon(loc)) diff --git a/code/game/objects/items/busts_and_figurines.dm b/code/game/objects/items/busts_and_figurines.dm index 53af3228ffd..592302cab67 100644 --- a/code/game/objects/items/busts_and_figurines.dm +++ b/code/game/objects/items/busts_and_figurines.dm @@ -128,8 +128,8 @@ /obj/item/maneki_neko/Initialize(mapload) . = ..() //Not compatible with greyscale configs because it's animated. - color = pick_weight(list(COLOR_WHITE = 3, COLOR_GOLD = 2, COLOR_DARK = 1)) - var/mutable_appearance/neko_overlay = mutable_appearance(icon, "maneki-neko-overlay", appearance_flags = RESET_COLOR) + add_atom_colour(pick_weight(list(COLOR_WHITE = 3, COLOR_GOLD = 2, COLOR_DARK = 1)), FIXED_COLOUR_PRIORITY) + var/mutable_appearance/neko_overlay = mutable_appearance(icon, "maneki-neko-overlay", appearance_flags = RESET_COLOR|KEEP_APART) add_overlay(neko_overlay) AddElement(/datum/element/art, GOOD_ART) AddElement(/datum/element/beauty, 800) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 435645d807a..492a2211900 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -1281,17 +1281,29 @@ trim = /datum/id_trim/maint_reaper registered_name = "Thirteen" +/obj/item/card/id/advanced/platinum + name = "platinum identification card" + desc = "A platinum card which shows the highest level of dedication." + icon_state = "card_platinum" + inhand_icon_state = "platinum_id" + assigned_icon_state = "assigned_silver" + wildcard_slots = WILDCARD_LIMIT_PLATINUM + +/obj/item/card/id/advanced/platinum/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_TASTEFULLY_THICK_ID_CARD, INNATE_TRAIT) + /obj/item/card/id/advanced/gold name = "gold identification card" desc = "A golden card which shows power and might." icon_state = "card_gold" inhand_icon_state = "gold_id" - assigned_icon_state = "assigned_gold" + assigned_icon_state = "assigned_silver" wildcard_slots = WILDCARD_LIMIT_GOLD /obj/item/card/id/advanced/gold/Initialize(mapload) . = ..() - ADD_TRAIT(src, TRAIT_TASTEFULLY_THICK_ID_CARD, ROUNDSTART_TRAIT) + ADD_TRAIT(src, TRAIT_TASTEFULLY_THICK_ID_CARD, INNATE_TRAIT) /obj/item/card/id/advanced/gold/captains_spare name = "captain's spare ID" diff --git a/code/game/objects/items/cigarettes.dm b/code/game/objects/items/cigarettes.dm index 208f84838f2..f2f64f7e28c 100644 --- a/code/game/objects/items/cigarettes.dm +++ b/code/game/objects/items/cigarettes.dm @@ -460,10 +460,41 @@ CIGARETTE PACKETS ARE IN FANCY.DM QDEL_NULL(mob_smoke) /obj/item/cigarette/proc/long_exhale(mob/living/carbon/smoker) - smoker.visible_message( - span_notice("[smoker] exhales a large cloud of smoke from [src]."), - span_notice("You exhale a large cloud of smoke from [src]."), - ) + // Find a mob to blow smoke at + var/mob/living/guy_infront + for(var/mob/living/guy in get_step(smoker, smoker.dir)) + // one of you has to get on the other's level + if(guy.body_position != smoker.body_position) + continue + // ensures we're face to face + if(!(REVERSE_DIR(guy.dir) & smoker.dir)) + continue + guy_infront = guy + // in case we get a living first, we wanna prioritize humans + if(ishuman(guy_infront)) + break + + if(isnull(guy_infront)) + smoker.visible_message( + span_notice("[smoker] exhales a large cloud of smoke from [src]."), + span_notice("You exhale a large cloud of smoke from [src]."), + ) + + else if(ishuman(guy_infront) && guy_infront.get_bodypart(BODY_ZONE_HEAD) && !guy_infront.is_pepper_proof()) + guy_infront.visible_message( + span_notice("[smoker] exhales a large cloud of smoke from [src] directly at [guy_infront]'s face!"), + span_notice("You exhale a large cloud of smoke from [src] directly at [guy_infront]'s face."), + ignored_mobs = guy_infront, + ) + to_chat(guy_infront, span_warning("You get a face full of smoke from [smoker]'s [name]!")) + smoke_in_face(guy_infront) + + else + guy_infront.visible_message( + span_notice("[smoker] exhales a large cloud of smoke from [src] at [guy_infront]."), + span_notice("You exhale a large cloud of smoke from [src] at [guy_infront]."), + ) + if(!isturf(smoker.loc)) return @@ -471,6 +502,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM update_particle_position(big_smoke, smoker.dir) QDEL_IN(big_smoke, big_smoke.particles.lifespan) +/// Called when a mob gets smoke blown in their face. +/obj/item/cigarette/proc/smoke_in_face(mob/living/getting_smoked) + getting_smoked.add_mood_event("smoke_bm", /datum/mood_event/smoke_in_face) + if(prob(20) && !HAS_TRAIT(getting_smoked, TRAIT_SMOKER) && !HAS_TRAIT(getting_smoked, TRAIT_ANOSMIA)) + getting_smoked.emote("cough") + /// Handles processing the reagents in the cigarette. /obj/item/cigarette/proc/handle_reagents(seconds_per_tick) if(!reagents.total_volume) @@ -624,6 +661,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM lung_harm = 1.5 list_reagents = list(/datum/reagent/drug/nicotine = 10, /datum/reagent/medicine/omnizine = 15) +/obj/item/cigarette/syndicate/smoke_in_face(mob/living/getting_smoked) + . = ..() + getting_smoked.adjust_eye_blur(6 SECONDS) + getting_smoked.adjust_temp_blindness(2 SECONDS) + /obj/item/cigarette/shadyjims desc = "A Shady Jim's Super Slims cigarette." lung_harm = 1.5 diff --git a/code/game/objects/items/control_wand.dm b/code/game/objects/items/control_wand.dm index 9734661e88f..a1a0c3abe39 100644 --- a/code/game/objects/items/control_wand.dm +++ b/code/game/objects/items/control_wand.dm @@ -16,15 +16,42 @@ var/department = "civilian" var/mode = WAND_OPEN var/region_access = REGION_GENERAL - var/list/access_list + var/list/access_list = list() + // the trim of the owner of this remote, if applied + var/datum/id_trim/job/owner_trim = null + // areas that this remote is the exclusive owner of + var/list/area/our_domain = null + // areas specifically considered as restricted from a remote + // accessing them unless specifically allowed (vault, security, etc) + var/static/list/area/restricted_areas = list( + /area/station/command/bridge, /*so Captain's remote isn't totally useless*/ + /area/station/security, /*so antag RD/HoP/QM/CMO can't easily screw up the brig doors*/ + /area/station/ai_monitored/command/nuke_storage, /*aka Vault since it's QM's special thing*/ + /area/station/ai_monitored/turret_protected/ai, // these are areas exclusive to RD + /area/station/ai_monitored/turret_protected/ai_upload_foyer, // but sometimes mappers might misconfig + /area/station/ai_monitored/turret_protected/ai_upload, // their doors with our several dozen access helpers + ) /obj/item/door_remote/Initialize(mapload) . = ..() - access_list = SSid_access.get_region_access_list(list(region_access)) update_icon_state() + // initialize late to make sure job accesses are fully configured + return INITIALIZE_HINT_LATELOAD + +/obj/item/door_remote/LateInitialize() + access_list = SSid_access.get_region_access_list(list(region_access)) + if(!isnull(owner_trim)) + var/datum/id_trim/job/trim_singlet = SSid_access.trim_singletons_by_path[owner_trim] + access_list |= trim_singlet.access + +/obj/item/door_remote/proc/is_my_domain(area/restricted_area) + for(var/area/dominion as anything in our_domain) + if(istype(restricted_area, dominion)) + return TRUE + return FALSE /obj/item/door_remote/attack_self(mob/user) - var/static/list/desc = list(WAND_OPEN = "Open Door", WAND_BOLT = "Toggle Bolts", WAND_EMERGENCY = "Toggle Emergency Access") + var/static/list/ops = list(WAND_OPEN = "Open Door", WAND_BOLT = "Toggle Bolts", WAND_EMERGENCY = "Toggle Emergency Access") switch(mode) if(WAND_OPEN) mode = WAND_BOLT @@ -33,13 +60,84 @@ if(WAND_EMERGENCY) mode = WAND_OPEN update_icon_state() - balloon_alert(user, "mode: [desc[mode]]") + balloon_alert(user, "mode: [ops[mode]]") /obj/item/door_remote/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!istype(interacting_with, /obj/machinery/door) && !isturf(interacting_with)) return NONE return ranged_interact_with_atom(interacting_with, user, modifiers) +/obj/item/door_remote/omni + name = "omni door remote" + desc = "This control wand can access any door on the station." + department = "omni" + region_access = REGION_ALL_STATION + our_domain = list( /area/station ) + +/obj/item/door_remote/captain + name = "command door remote" + desc = "A remote for controlling a set of airlocks. Despite its gaudy insignia denoting the Captain as its owner, some fine print\ + indicates that its access is exclusively relegated to the Bridge and high-security command areas -- an additional byline\ + specifically excludes Security from the high-security areas. Ironic." + department = "command" + region_access = REGION_COMMAND + our_domain = list( + /area/station, // still restricted by limited accesses in REGION_COMMAND + ) + +/obj/item/door_remote/chief_engineer + name = "engineering door remote" + desc = "A remote for controlling a set of airlocks. This one smells like burnt flesh and ozone." + department = "engi" + region_access = REGION_ENGINEERING + owner_trim = /datum/id_trim/job/chief_engineer + // doesn't need a domain because their specific high-security areas aren't on anyone else's trim but cap + +/obj/item/door_remote/research_director + name = "research director's door remote" + desc = "A remote for controlling a set of airlocks. This one is slightly misshapen, as if squeezed by a person possessing ludicrous strength." + department = "sci" + region_access = REGION_RESEARCH + owner_trim = /datum/id_trim/job/research_director + our_domain = list( + /area/station/ai_monitored/turret_protected/ai, + /area/station/ai_monitored/turret_protected/ai_upload_foyer, + /area/station/ai_monitored/turret_protected/ai_upload, + ) + +/obj/item/door_remote/head_of_security + name = "security door remote" + desc = "A remote for controlling a set of airlocks. This one smells like sweat, blood, resentment, and coffee.\ + Someone appears to have tampered with the identifier." + department = "security" + region_access = REGION_SECURITY + owner_trim = /datum/id_trim/job/head_of_security + our_domain = list( /area/station/security ) + +/obj/item/door_remote/quartermaster + name = "quartermaster's door remote" + desc = "Remotely controls airlocks. This remote has additional Vault access. Despite that, holding it makes you feel insecure for some reason." + department = "cargo" + region_access = REGION_SUPPLY + owner_trim = /datum/id_trim/job/quartermaster + our_domain = list( /area/station/ai_monitored/command/nuke_storage ) + +/obj/item/door_remote/chief_medical_officer + name = "chief medical officer's door remote" + desc = "A remote for controlling a set of airlocks. It has the overpowering odor of blood and, despite its medical insignia,\ + has absolutely no accompanying odor of disinfectant." + department = "med" + region_access = REGION_MEDBAY + owner_trim = /datum/id_trim/job/chief_medical_officer + +/obj/item/door_remote/head_of_personnel + name = "head of personnel's door remote" + desc = "A remote for controlling a set of airlocks. This one smells like printer ink, and fills its holder with the urge\ + to mysteriously vanish." + department = "civilian" + region_access = REGION_GENERAL + owner_trim = /datum/id_trim/job/head_of_personnel + /obj/item/door_remote/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) var/obj/machinery/door/door @@ -61,6 +159,11 @@ interacting_with.balloon_alert(user, "can't access!") return ITEM_INTERACT_BLOCKING + var/area/door_area = get_area(door) + if(is_type_in_list(door_area, restricted_areas) && !is_my_domain(get_area(door))) + interacting_with.balloon_alert(user, "can't access!") + return ITEM_INTERACT_BLOCKING + var/obj/machinery/door/airlock/airlock = door if (!door.hasPower() || (istype(airlock) && !airlock.canAIControl())) @@ -107,48 +210,6 @@ icon_state = "[base_icon_state]_[department]_[icon_state_mode]" return ..() -/obj/item/door_remote/omni - name = "omni door remote" - desc = "This control wand can access any door on the station." - department = "omni" - region_access = REGION_ALL_STATION - -/obj/item/door_remote/captain - name = "command door remote" - department = "command" - region_access = REGION_COMMAND - -/obj/item/door_remote/chief_engineer - name = "engineering door remote" - department = "engi" - region_access = REGION_ENGINEERING - -/obj/item/door_remote/research_director - name = "research door remote" - department = "sci" - region_access = REGION_RESEARCH - -/obj/item/door_remote/head_of_security - name = "security door remote" - department = "security" - region_access = REGION_SECURITY - -/obj/item/door_remote/quartermaster - name = "supply door remote" - desc = "Remotely controls airlocks. This remote has additional Vault access." - department = "cargo" - region_access = REGION_SUPPLY - -/obj/item/door_remote/chief_medical_officer - name = "medical door remote" - department = "med" - region_access = REGION_MEDBAY - -/obj/item/door_remote/civilian - name = "civilian door remote" - department = "civilian" - region_access = REGION_GENERAL - #undef WAND_OPEN #undef WAND_BOLT #undef WAND_EMERGENCY diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index cce0f98a756..6f66045f393 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -1,7 +1,3 @@ -#define UPPER_LIP "Upper" -#define MIDDLE_LIP "Middle" -#define LOWER_LIP "Lower" - /obj/item/lipstick gender = PLURAL name = "red lipstick" @@ -344,7 +340,3 @@ /obj/item/razor/surgery/get_surgery_tool_overlay(tray_extended) return "razor" - -#undef UPPER_LIP -#undef MIDDLE_LIP -#undef LOWER_LIP diff --git a/code/game/objects/items/crab17.dm b/code/game/objects/items/crab17.dm index 09ebaf655b7..41d01aa1763 100644 --- a/code/game/objects/items/crab17.dm +++ b/code/game/objects/items/crab17.dm @@ -128,10 +128,10 @@ return playsound(src,'sound/machines/beep/twobeep.ogg',50,FALSE) var/mutable_appearance/hologram = mutable_appearance(icon, "hologram") - hologram.pixel_y = 16 + hologram.pixel_z = 16 add_overlay(hologram) var/mutable_appearance/holosign = mutable_appearance(icon, "holosign") - holosign.pixel_y = 16 + holosign.pixel_z = 16 add_overlay(holosign) add_overlay("legs_extending") cut_overlay("legs_retracted") diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 6aa40358304..87465326e1f 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -35,6 +35,8 @@ var/sound_off = 'sound/items/weapons/magout.ogg' /// Should the flashlight start turned on? var/start_on = FALSE + /// When true, painting the flashlight won't change its light color + var/ignore_base_color = FALSE /obj/item/flashlight/Initialize(mapload) . = ..() @@ -292,6 +294,16 @@ COOLDOWN_START(src, disabled_time, disrupt_duration) return TRUE +/obj/item/flashlight/update_atom_colour() + . = ..() + if (ignore_base_color) + return + var/list/applied_matrix = cached_color_filter + if (!applied_matrix) + applied_matrix = color_transition_filter(color, SATURATION_OVERRIDE) + var/new_light_color = apply_matrix_to_color(initial(light_color), applied_matrix["color"], applied_matrix["space"] || COLORSPACE_RGB) + set_light_color(new_light_color) + /obj/item/flashlight/pen name = "penlight" desc = "A pen-sized light, used by medical staff. It can also be used to create a hologram to alert people of incoming medical assistance." @@ -692,7 +704,6 @@ name = "jade lantern" desc = "An ornate, green lantern." color = LIGHT_COLOR_GREEN - light_color = LIGHT_COLOR_GREEN /obj/item/flashlight/lantern/jade/on start_on = TRUE @@ -785,6 +796,7 @@ grind_results = list(/datum/reagent/phenol = 15, /datum/reagent/hydrogen = 10, /datum/reagent/oxygen = 5) //Meth-in-a-stick sound_on = 'sound/effects/wounds/crack2.ogg' // the cracking sound isn't just for wounds silly toggle_context = FALSE + ignore_base_color = TRUE /// How much max fuel we have var/max_fuel = 0 /// How much oxygen gets added upon cracking the stick. Doesn't actually produce a reaction with the fluid but it does allow for bootleg chemical "grenades" @@ -982,16 +994,21 @@ /obj/item/flashlight/flashdark name = "flashdark" - desc = "A strange device manufactured with mysterious elements that somehow emits darkness. Or maybe it just sucks in light? Nobody knows for sure." + desc = "A powerful antiphoton projector, capable of projecting a bubble of darkness around the user." icon_state = "flashdark" inhand_icon_state = "flashdark" light_system = COMPLEX_LIGHT //The overlay light component is not yet ready to produce darkness. light_range = 0 + light_color = COLOR_WHITE ///Variable to preserve old lighting behavior in flashlights, to handle darkness. - var/dark_light_range = 2.5 + var/dark_light_range = 3.5 ///Variable to preserve old lighting behavior in flashlights, to handle darkness. var/dark_light_power = -3 +/obj/item/flashlight/flashdark/Initialize(mapload) + . = ..() + AddComponent(/datum/component/overlay_lighting, dark_light_range, dark_light_power, force = TRUE) + /obj/item/flashlight/flashdark/update_brightness() . = ..() set_light(dark_light_range, dark_light_power) diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 50f8366f61c..5d798c81212 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -295,12 +295,12 @@ var/mutable_appearance/laser = mutable_appearance('icons/obj/weapons/guns/projectiles.dmi', pointer_icon_state) if(modifiers) if(LAZYACCESS(modifiers, ICON_X)) - laser.pixel_x = (text2num(LAZYACCESS(modifiers, ICON_X)) - 16) + laser.pixel_w = (text2num(LAZYACCESS(modifiers, ICON_X)) - 16) if(LAZYACCESS(modifiers, ICON_Y)) - laser.pixel_y = (text2num(LAZYACCESS(modifiers, ICON_Y)) - 16) + laser.pixel_z = (text2num(LAZYACCESS(modifiers, ICON_Y)) - 16) else - laser.pixel_x = target.pixel_x + rand(-5,5) - laser.pixel_y = target.pixel_y + rand(-5,5) + laser.pixel_w = target.pixel_w + rand(-5,5) + laser.pixel_z = target.pixel_z + rand(-5,5) if(outmsg) user.visible_message(span_danger("[user] points [src] at [target]!"), outmsg) //SKYRAT EDIT CHANGE - ORIGINAL: to_chat(user, outmsg) diff --git a/code/game/objects/items/devices/mulligan_kit.dm b/code/game/objects/items/devices/mulligan_kit.dm new file mode 100644 index 00000000000..2f1cb2b8972 --- /dev/null +++ b/code/game/objects/items/devices/mulligan_kit.dm @@ -0,0 +1,122 @@ +/obj/item/fake_identity_kit + name = "fake identity kit" + desc = "All of the paperwork you need to get a fresh start and a perfect alibi, plus a little digital assistance to insert you into crew records." + icon = 'icons/obj/service/bureaucracy.dmi' + icon_state = "docs_mulligan" + w_class = WEIGHT_CLASS_TINY + interaction_flags_click = NEED_LITERACY|NEED_LIGHT|NEED_DEXTERITY|NEED_HANDS|ALLOW_RESTING + /// What do we set up our "new arrival" as? + var/assigned_job = JOB_ASSISTANT + +/obj/item/fake_identity_kit/examine_more(mob/user) + . = ..() + . += span_info("Using this kit after exposure to Mulligan serum will create a fake identity for your new appearance.") + . += span_info("This will add you to various station manifests, create an Assistant-level ID card, and announce your arrival over the radio.") + +/obj/item/fake_identity_kit/attack_self(mob/living/carbon/human/user, modifiers) + . = ..() + if (!ishuman(user)) + balloon_alert(user, "can't pass as employee!") + return + if (find_record(user.real_name)) + balloon_alert(user, "records already exist!") + return + + user.temporarilyRemoveItemFromInventory(src) + user.playsound_local(user, 'sound/items/cards/cardshuffle.ogg', 50, TRUE) + + var/obj/item/card/id/advanced/original_id = user.get_idcard(hand_first = FALSE) + if (original_id) + user.temporarilyRemoveItemFromInventory(original_id) + + var/datum/job/job = SSjob.get_job(assigned_job) + user.mind.set_assigned_role(job) + + var/datum/outfit/job_outfit = job.outfit + var/id_trim = job_outfit::id_trim + var/obj/item/card/id/advanced/fake_id = new() + + if (id_trim) + SSid_access.apply_trim_to_card(fake_id, id_trim) + shuffle_inplace(fake_id.access) + + fake_id.registered_name = user.real_name + if(user.age) + fake_id.registered_age = user.age + fake_id.update_label() + fake_id.update_icon() + + var/placed_in = user.equip_in_one_of_slots(fake_id, list( + LOCATION_ID = ITEM_SLOT_ID, + LOCATION_LPOCKET = ITEM_SLOT_LPOCKET, + LOCATION_RPOCKET = ITEM_SLOT_RPOCKET, + LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, + LOCATION_HANDS = ITEM_SLOT_HANDS, + ), qdel_on_fail = FALSE, indirect_action = TRUE) + if (isnull(placed_in)) + fake_id.forceMove(user.drop_location()) + to_chat(user, span_warning("You drop your new ID card on the ground.")) + else + to_chat(user, span_notice("You quickly put your new ID card [placed_in].")) + + user.sec_hud_set_ID() + + var/mob/living/carbon/human/dummy/consistent/dummy = new() // For manifest rendering, unfortunately + dummy.physique = user.physique + user.dna.transfer_identity(dummy, transfer_SE = TRUE) + user.copy_clothing_prefs(dummy) + dummy.updateappearance(icon_update = TRUE, mutcolor_update = TRUE, mutations_overlay_update = TRUE) + dummy.dress_up_as_job(job, visual_only = TRUE, player_client = user.client) + + GLOB.manifest.inject(user, appearance_proxy = dummy) + QDEL_NULL(dummy) + + if (original_id) + var/returned_to = user.equip_in_one_of_slots(original_id, list( + LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, + LOCATION_LPOCKET = ITEM_SLOT_LPOCKET, + LOCATION_RPOCKET = ITEM_SLOT_RPOCKET, + LOCATION_HANDS = ITEM_SLOT_HANDS, + ), qdel_on_fail = FALSE, indirect_action = TRUE) + if (isnull(returned_to)) + fake_id.forceMove(user.drop_location()) + to_chat(user, span_warning("You drop your old ID card on the ground.")) + else + to_chat(user, span_notice("You stash your old ID card [returned_to].")) + + var/obj/item/arrival_announcer/announcer = new(user.drop_location()) + user.put_in_hands(announcer) + to_chat(user, span_notice("You quickly eat the leftover paperwork, leaving only the signaller used to announce your arrival on the station.")) + qdel(src) + +/obj/item/arrival_announcer + name = "arrivals announcement signaller" + desc = "A radio signaller which uses a backdoor in the NT announcement system to trigger a fake announcement that you have just arrived there, then self-destructs." + icon_state = "signaller" + inhand_icon_state = "signaler" + icon = 'icons/obj/devices/new_assemblies.dmi' + lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' + interaction_flags_click = NEED_DEXTERITY|NEED_HANDS|ALLOW_RESTING + +/obj/item/arrival_announcer/attack_self(mob/living/user, modifiers) + . = ..() + if (!isliving(user)) + return + + var/name = user.real_name + var/datum/record/manifest_data = find_record(name) + if (isnull(manifest_data)) + balloon_alert(user, "no records found!") + return + var/job = manifest_data.rank + if (tgui_alert(user, "Announce arrival of [name] as [job]?", "Are you ready?", list("Yes", "No"), timeout = 30 SECONDS) != "Yes") + return + if (QDELETED(src) || !user.can_perform_action(src, interaction_flags_click)) + return + + announce_arrival(user, job, announce_to_ghosts = FALSE) + do_sparks(1, FALSE, user) + new /obj/effect/decal/cleanable/ash(user.drop_location()) + user.temporarilyRemoveItemFromInventory(src) + qdel(src) diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm index ea27894d829..d75682d72a4 100644 --- a/code/game/objects/items/devices/pressureplates.dm +++ b/code/game/objects/items/devices/pressureplates.dm @@ -7,8 +7,8 @@ lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' icon_state = "pressureplate" + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE - layer = HIGH_TURF_LAYER var/trigger_mob = TRUE var/trigger_item = FALSE var/specific_item = null diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 2eab06806dd..41ff2d379ff 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -3,6 +3,8 @@ desc = "An encryption key for a radio headset." icon = 'icons/obj/devices/circuitry_n_data.dmi' icon_state = "cypherkey_basic" + icon_preview = 'icons/obj/fluff/previews.dmi' + icon_state_preview = "cypherkey" w_class = WEIGHT_CLASS_TINY /// What channels does this encryption key grant to the parent headset. var/list/channels = list() diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 433df9869d2..d624288703e 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -36,7 +36,6 @@ mytape = new starting_tape_type(src) soundloop = new(src) update_appearance() - become_hearing_sensitive() /obj/item/taperecorder/Destroy() QDEL_NULL(soundloop) @@ -156,12 +155,11 @@ /obj/item/taperecorder/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, list/message_mods = list(), message_range) . = ..() - if(message_mods[MODE_RELAY]) + if(message_mods[MODE_RELAY] || !mytape || istype(speaker, /obj/item/taperecorder)) return - if(mytape && recording) - mytape.timestamp += mytape.used_capacity - mytape.storedinfo += "\[[time2text(mytape.used_capacity,"mm:ss")]\] [speaker.GetVoice()]: [raw_message]" + mytape.timestamp += mytape.used_capacity + mytape.storedinfo += "\[[time2text(mytape.used_capacity,"mm:ss")]\] [speaker.GetVoice()]: [raw_message]" /obj/item/taperecorder/verb/record() @@ -185,6 +183,7 @@ if(mytape.used_capacity < mytape.max_capacity) recording = TRUE + become_hearing_sensitive() balloon_alert(usr, "started recording") update_sound() update_appearance() @@ -218,6 +217,7 @@ playsound(src, 'sound/items/taperecorder/taperecorder_stop.ogg', 50, FALSE) balloon_alert(usr, "stopped recording") recording = FALSE + lose_hearing_sensitivity() else if(playing) playsound(src, 'sound/items/taperecorder/taperecorder_stop.ogg', 50, FALSE) balloon_alert(usr, "stopped playing") @@ -267,7 +267,7 @@ playsleepseconds = 1 sleep(1 SECONDS) else - playsleepseconds = mytape.timestamp[i + 1] - mytape.timestamp[i] + playsleepseconds = max(mytape.timestamp[i + 1] - mytape.timestamp[i], 1 SECONDS) if(playsleepseconds > 14 SECONDS) sleep(1 SECONDS) say("Skipping [playsleepseconds/10] seconds of silence.", message_mods = list(MODE_SEQUENTIAL = TRUE)) diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 91a8a066661..2fb6de0c03e 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -327,7 +327,14 @@ effective or pretty fucking useless. icon = 'icons/obj/devices/syndie_gadget.dmi' icon_state = "jammer" var/active = FALSE + + /// The range of devices to disable while active var/range = 12 + + /// The range of the disruptor wave, disabling radios + var/disruptor_range = 7 + + /// The delay between using the disruptor wave var/jam_cooldown_duration = 15 SECONDS COOLDOWN_DECLARE(jam_cooldown) @@ -348,7 +355,7 @@ effective or pretty fucking useless. user.balloon_alert(user, "disruptor wave released!") to_chat(user, span_notice("You release a disruptor wave, disabling all nearby radio devices.")) - for (var/atom/potential_owner in view(7, user)) + for (var/atom/potential_owner in view(disruptor_range, user)) disable_radios_on(potential_owner, ignore_syndie = TRUE) COOLDOWN_START(src, jam_cooldown, jam_cooldown_duration) @@ -372,7 +379,7 @@ effective or pretty fucking useless. if(. & ITEM_INTERACT_ANY_BLOCKER) return - if (!(interacting_with in view(7, user))) + if (!(interacting_with in view(disruptor_range, user))) user.balloon_alert(user, "out of reach!") return @@ -392,6 +399,16 @@ effective or pretty fucking useless. GLOB.active_jammers -= src return ..() +/obj/item/jammer/makeshift + name = "makeshift radio jammer" + desc = "A jury-rigged device that disrupts nearby radio communication. Its crude construction provides a significantly smaller area of effect compared to its Syndicate counterpart." + range = 5 + disruptor_range = 3 + +/obj/item/jammer/makeshift/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_CONTRABAND, INNATE_TRAIT) + /obj/item/storage/toolbox/emergency/turret desc = "You feel a strange urge to hit this with a wrench." diff --git a/code/game/objects/items/etherealdiscoball.dm b/code/game/objects/items/etherealdiscoball.dm index 4eca1dc2fc0..d26b8cd7ec5 100644 --- a/code/game/objects/items/etherealdiscoball.dm +++ b/code/game/objects/items/etherealdiscoball.dm @@ -72,6 +72,4 @@ /obj/structure/etherealball/update_overlays() . = ..() - var/mutable_appearance/base_overlay = mutable_appearance(icon, "ethdisco_base") - base_overlay.appearance_flags = RESET_COLOR - . += base_overlay + . += mutable_appearance(icon, "ethdisco_base", appearance_flags = RESET_COLOR|KEEP_APART) diff --git a/code/game/objects/items/flatpacks.dm b/code/game/objects/items/flatpacks.dm index 054d51e6c15..52dd66c62de 100644 --- a/code/game/objects/items/flatpacks.dm +++ b/code/game/objects/items/flatpacks.dm @@ -125,7 +125,7 @@ var/offset = 0 for(var/item in contents) var/mutable_appearance/flatpack_overlay = mutable_appearance(icon, "flatcart_flat", layer = layer + (offset * 0.01)) - flatpack_overlay.pixel_y = offset + flatpack_overlay.pixel_z = offset offset += 4 . += flatpack_overlay diff --git a/code/game/objects/items/food/_food.dm b/code/game/objects/items/food/_food.dm index 85f6ae71732..091c8a9949a 100644 --- a/code/game/objects/items/food/_food.dm +++ b/code/game/objects/items/food/_food.dm @@ -122,3 +122,19 @@ AddComponent(/datum/component/germ_sensitive, mapload) if(!preserved_food) AddComponent(/datum/component/decomposition, mapload, decomp_req_handle, decomp_flags = foodtypes, decomp_result = decomp_type, ant_attracting = ant_attracting, custom_time = decomposition_time, stink_particles = decomposition_particles) + +/obj/item/food/CheckParts(list/parts, datum/crafting_recipe/food/current_recipe) + . = ..() + if(!istype(current_recipe)) + return + + var/made_with_food = FALSE + var/final_foodtypes = current_recipe.added_foodtypes + for(var/obj/item/food/ingredient in parts) + made_with_food = TRUE + final_foodtypes |= ingredient.foodtypes + if(!made_with_food) + return + final_foodtypes &= ~current_recipe.removed_foodtypes + ///Update the foodtypes + AddComponentFrom(SOURCE_EDIBLE_INNATE, /datum/component/edible, foodtypes = final_foodtypes) diff --git a/code/game/objects/items/food/bread.dm b/code/game/objects/items/food/bread.dm index 56ebddc23d8..24435f799cd 100644 --- a/code/game/objects/items/food/bread.dm +++ b/code/game/objects/items/food/bread.dm @@ -104,7 +104,7 @@ /datum/reagent/consumable/nutriment/protein = 12, ) tastes = list("bread" = 10, "meat" = 10) - foodtypes = GRAIN | MEAT + foodtypes = GRAIN | MEAT | DAIRY venue_value = FOOD_PRICE_CHEAP slice_type = /obj/item/food/breadslice/meat crafting_complexity = FOOD_COMPLEXITY_3 @@ -119,7 +119,7 @@ /datum/reagent/consumable/nutriment/protein = 2.4, ) tastes = list("bread" = 1, "meat" = 1) - foodtypes = GRAIN | MEAT + foodtypes = GRAIN | MEAT | DAIRY crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/bread/sausage @@ -159,7 +159,7 @@ /datum/reagent/consumable/nutriment/protein = 15, ) tastes = list("bread" = 10, "acid" = 10) - foodtypes = GRAIN | MEAT + foodtypes = GRAIN | MEAT | DAIRY slice_type = /obj/item/food/breadslice/xenomeat crafting_complexity = FOOD_COMPLEXITY_3 @@ -173,7 +173,7 @@ /datum/reagent/consumable/nutriment/protein = 3, ) tastes = list("bread" = 10, "acid" = 10) - foodtypes = GRAIN | MEAT + foodtypes = GRAIN | MEAT | DAIRY crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/bread/spidermeat @@ -187,7 +187,7 @@ /datum/reagent/consumable/nutriment/protein = 12, ) tastes = list("bread" = 10, "cobwebs" = 5) - foodtypes = GRAIN | MEAT | TOXIC + foodtypes = GRAIN|MEAT|DAIRY|TOXIC slice_type = /obj/item/food/breadslice/spidermeat crafting_complexity = FOOD_COMPLEXITY_3 @@ -202,7 +202,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("bread" = 10, "cobwebs" = 5) - foodtypes = GRAIN | MEAT | TOXIC + foodtypes = GRAIN|MEAT|DAIRY|TOXIC crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/bread/banana @@ -214,7 +214,7 @@ /datum/reagent/consumable/banana = 20, ) tastes = list("bread" = 10) // bananjuice will also flavour - foodtypes = GRAIN | FRUIT + foodtypes = GRAIN | FRUIT | MEAT slice_type = /obj/item/food/breadslice/banana crafting_complexity = FOOD_COMPLEXITY_3 @@ -227,7 +227,7 @@ /datum/reagent/consumable/banana = 4, ) tastes = list("bread" = 10) - foodtypes = GRAIN | FRUIT + foodtypes = GRAIN | FRUIT | MEAT crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/bread/tofu @@ -240,7 +240,7 @@ /datum/reagent/consumable/nutriment/protein = 10, ) tastes = list("bread" = 10, "tofu" = 10) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN | VEGETABLES | DAIRY venue_value = FOOD_PRICE_TRASH slice_type = /obj/item/food/breadslice/tofu crafting_complexity = FOOD_COMPLEXITY_3 @@ -255,7 +255,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("bread" = 10, "tofu" = 10) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN | VEGETABLES | DAIRY crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/bread/creamcheese @@ -294,7 +294,7 @@ /datum/reagent/consumable/nutriment/vitamin = 10, ) tastes = list("bread" = 10, "silence" = 10) - foodtypes = GRAIN | FRUIT + foodtypes = GRAIN | FRUIT | VEGETABLES slice_type = /obj/item/food/breadslice/mimana crafting_complexity = FOOD_COMPLEXITY_3 @@ -309,7 +309,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("bread" = 10, "silence" = 10) - foodtypes = GRAIN | FRUIT + foodtypes = GRAIN | FRUIT | VEGETABLES crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/bread/empty @@ -449,7 +449,7 @@ ) bite_consumption = 3 tastes = list("bread" = 1, "garlic" = 1, "butter" = 1) - foodtypes = GRAIN + foodtypes = VEGETABLES|GRAIN|DAIRY venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_2 @@ -463,7 +463,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("butter" = 1, "biscuit" = 1) - foodtypes = GRAIN | BREAKFAST + foodtypes = GRAIN | BREAKFAST | DAIRY w_class = WEIGHT_CLASS_SMALL venue_value = FOOD_PRICE_CHEAP crafting_complexity = FOOD_COMPLEXITY_2 @@ -498,7 +498,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("raw egg" = 2, "soaked bread" = 1) - foodtypes = GRAIN | RAW | BREAKFAST + foodtypes = GRAIN | RAW | BREAKFAST | MEAT w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -515,7 +515,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("french toast" = 1, "syrup" = 1, "golden deliciousness" = 1) - foodtypes = GRAIN | BREAKFAST + foodtypes = GRAIN | BREAKFAST | MEAT w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 diff --git a/code/game/objects/items/food/burgers.dm b/code/game/objects/items/food/burgers.dm index 54e400d1d50..c5d5cd35367 100644 --- a/code/game/objects/items/food/burgers.dm +++ b/code/game/objects/items/food/burgers.dm @@ -48,7 +48,7 @@ /datum/reagent/consumable/nutriment/vitamin = 5, ) tastes = list("bun" = 2, "long pig" = 4) - foodtypes = MEAT | GRAIN | GORE + foodtypes = MEAT | GRAIN venue_value = FOOD_PRICE_CHEAP crafting_complexity = FOOD_COMPLEXITY_2 @@ -70,7 +70,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("bun" = 4, "corgi meat" = 2) - foodtypes = GRAIN | MEAT | GORE + foodtypes = GRAIN | MEAT venue_value = FOOD_PRICE_EXOTIC crafting_complexity = FOOD_COMPLEXITY_2 @@ -98,7 +98,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("bun" = 4, "fish" = 4) - foodtypes = GRAIN | SEAFOOD + foodtypes = GRAIN | SEAFOOD | DAIRY venue_value = FOOD_PRICE_EXOTIC crafting_complexity = FOOD_COMPLEXITY_3 @@ -176,7 +176,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("bun" = 2, "a bad joke" = 4) - foodtypes = GRAIN | FRUIT + foodtypes = GRAIN venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_2 @@ -395,7 +395,7 @@ /datum/reagent/consumable/nutriment/vitamin = 10, ) tastes = list("bun" = 4, "magic" = 2) - foodtypes = GRAIN | MEAT + foodtypes = GRAIN venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_2 @@ -452,7 +452,7 @@ bite_consumption = 7 max_volume = 100 tastes = list("bun" = 4, "type two diabetes" = 10) - foodtypes = GRAIN | MEAT | DAIRY + foodtypes = GRAIN | MEAT | DAIRY | VEGETABLES venue_value = FOOD_PRICE_EXOTIC crafting_complexity = FOOD_COMPLEXITY_5 @@ -474,7 +474,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("extreme heat" = 4, "bun" = 2) - foodtypes = GRAIN | MEAT + foodtypes = GRAIN | MEAT | VEGETABLES venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_3 @@ -488,7 +488,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("dead rat" = 4, "bun" = 2) - foodtypes = GRAIN | MEAT | GORE + foodtypes = GRAIN | MEAT | GORE | RAW venue_value = FOOD_PRICE_CHEAP crafting_complexity = FOOD_COMPLEXITY_2 @@ -589,7 +589,7 @@ /datum/reagent/consumable/bbqsauce = 1, ) tastes = list("bun" = 2, "pork patty" = 4) - foodtypes = GRAIN | MEAT + foodtypes = GRAIN | MEAT | SUGAR | VEGETABLES venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_3 @@ -604,12 +604,14 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("muffin" = 2, "bacon" = 3) - foodtypes = GRAIN | MEAT | BREAKFAST + foodtypes = GRAIN | MEAT | BREAKFAST | FRIED venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/burger/chicken - name = "chicken sandwich" //Apparently the proud people of Americlapstan object to this thing being called a burger. Apparently McDonald's just calls it a burger in Europe as to not scare and confuse us. + name = "chicken sandwich" + //Apparently the proud people of Americlapstan object to this thing being called a burger. + //Apparently McDonald's just calls it a burger in Europe as to not scare and confuse us. desc = "A delicious chicken sandwich, it is said the proceeds from this treat helps criminalize disarming people on the space frontier." icon_state = "chickenburger" food_reagents = list( @@ -620,7 +622,7 @@ /datum/reagent/consumable/nutriment/fat/oil = 2, ) tastes = list("bun" = 2, "chicken" = 4, "God's covenant" = 1) - foodtypes = GRAIN | MEAT | FRIED + foodtypes = GRAIN | MEAT venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_3 @@ -655,7 +657,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("bun" = 2, "beef patty" = 4, "cheese" = 2, "beef soaked in chili" = 3, "a smoking flare" = 2) - foodtypes = GRAIN | MEAT | DAIRY + foodtypes = GRAIN | MEAT | DAIRY | VEGETABLES crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/burger/crazy/Initialize(mapload) @@ -686,6 +688,6 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("juicy meat" = 4, "BBQ sauce" = 3, "onions" = 2, "bun" = 2) - foodtypes = GRAIN | MEAT | VEGETABLES + foodtypes = MEAT|VEGETABLES|GRAIN venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_3 diff --git a/code/game/objects/items/food/cake.dm b/code/game/objects/items/food/cake.dm index b161410bc3f..17453300117 100644 --- a/code/game/objects/items/food/cake.dm +++ b/code/game/objects/items/food/cake.dm @@ -130,7 +130,7 @@ /datum/reagent/consumable/nutriment/protein = 5, ) tastes = list("cake" = 4, "cream cheese" = 3) - foodtypes = GRAIN | DAIRY + foodtypes = GRAIN | DAIRY | SUGAR venue_value = FOOD_PRICE_CHEAP slice_type = /obj/item/food/cakeslice/cheese crafting_complexity = FOOD_COMPLEXITY_3 @@ -371,7 +371,7 @@ desc = "A hollow cake with real pumpkin." icon_state = "pumpkinspicecake" tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1) - foodtypes = GRAIN | DAIRY | VEGETABLES | SUGAR + foodtypes = GRAIN|DAIRY|SUGAR|VEGETABLES venue_value = FOOD_PRICE_CHEAP slice_type = /obj/item/food/cakeslice/pumpkinspice crafting_complexity = FOOD_COMPLEXITY_3 @@ -381,7 +381,7 @@ desc = "A spicy slice of pumpkin goodness." icon_state = "pumpkinspicecakeslice" tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1) - foodtypes = GRAIN | DAIRY | VEGETABLES | SUGAR + foodtypes = GRAIN|DAIRY|SUGAR|VEGETABLES crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/cake/berry_vanilla_cake // blackberry strawberries vanilla cake @@ -482,7 +482,7 @@ /datum/reagent/fuel/oil = 15, ) tastes = list("acid" = 3, "metal" = 4, "glass" = 5) - foodtypes = GRAIN | GROSS + foodtypes = GRAIN|DAIRY|SUGAR|GROSS slice_type = /obj/item/food/cakeslice/hardware_cake_slice crafting_complexity = FOOD_COMPLEXITY_3 @@ -497,7 +497,7 @@ /datum/reagent/fuel/oil = 3, ) tastes = list("acid" = 3, "metal" = 4, "glass" = 5) - foodtypes = GRAIN | GROSS + foodtypes = GRAIN|DAIRY|SUGAR|GROSS crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/cake/vanilla_cake @@ -511,7 +511,7 @@ /datum/reagent/consumable/vanilla = 15, ) tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10) - foodtypes = GRAIN | SUGAR | DAIRY + foodtypes = GRAIN|FRUIT|DAIRY|SUGAR slice_type = /obj/item/food/cakeslice/vanilla_slice crafting_complexity = FOOD_COMPLEXITY_3 @@ -526,7 +526,7 @@ /datum/reagent/consumable/vanilla = 3, ) tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10) - foodtypes = GRAIN | SUGAR | DAIRY + foodtypes = GRAIN|FRUIT|DAIRY|SUGAR crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/cake/clown_cake @@ -539,7 +539,7 @@ /datum/reagent/consumable/banana = 15, ) tastes = list("cake" = 1, "sugar" = 1, "joy" = 10) - foodtypes = GRAIN | SUGAR | DAIRY + foodtypes = GRAIN|FRUIT|DAIRY|SUGAR slice_type = /obj/item/food/cakeslice/clown_slice crafting_complexity = FOOD_COMPLEXITY_5 crafted_food_buff = /datum/status_effect/food/trait/waddle @@ -554,7 +554,7 @@ /datum/reagent/consumable/banana = 3, ) tastes = list("cake" = 1, "sugar" = 1, "joy" = 10) - foodtypes = GRAIN | SUGAR | DAIRY + foodtypes = GRAIN|FRUIT|DAIRY|SUGAR crafting_complexity = FOOD_COMPLEXITY_5 crafted_food_buff = /datum/status_effect/food/trait/waddle @@ -570,7 +570,7 @@ /datum/reagent/consumable/berryjuice = 5, ) tastes = list("cake" = 4, "violets" = 2, "jam" = 2) - foodtypes = GRAIN | DAIRY | FRUIT | SUGAR + foodtypes = GRAIN|DAIRY|FRUIT|SUGAR|VEGETABLES slice_type = /obj/item/food/cakeslice/trumpet crafting_complexity = FOOD_COMPLEXITY_4 @@ -586,7 +586,7 @@ /datum/reagent/consumable/berryjuice = 1, ) tastes = list("cake" = 4, "violets" = 2, "jam" = 2) - foodtypes = GRAIN | DAIRY | FRUIT | SUGAR + foodtypes = GRAIN|DAIRY|FRUIT|SUGAR|VEGETABLES crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/cake/brioche diff --git a/code/game/objects/items/food/cheese.dm b/code/game/objects/items/food/cheese.dm index 38372fee3c0..07443fff98b 100644 --- a/code/game/objects/items/food/cheese.dm +++ b/code/game/objects/items/food/cheese.dm @@ -94,7 +94,6 @@ /datum/reagent/consumable/cream = 1, ) tastes = list("cream" = 1, "cheese" = 1) - foodtypes = DAIRY w_class = WEIGHT_CLASS_SMALL rat_heal = 35 crafting_complexity = FOOD_COMPLEXITY_2 @@ -109,7 +108,6 @@ name = "cheese curds" desc = "Not to be mistaken for curd cheese. Tasty deep fried." icon_state = "cheese_curds" - foodtypes = DAIRY w_class = WEIGHT_CLASS_SMALL rat_heal = 35 crafting_complexity = FOOD_COMPLEXITY_2 @@ -123,7 +121,6 @@ desc = "Firm aged cheese, similar in texture to firm tofu. Due to its lack of moisture it's particularly useful for cooking with, as it doesn't melt easily." icon_state = "firm_cheese" tastes = list("aged cheese" = 1) - foodtypes = DAIRY | VEGETABLES w_class = WEIGHT_CLASS_SMALL rat_heal = 35 crafting_complexity = FOOD_COMPLEXITY_3 @@ -136,7 +133,6 @@ desc = "A slice of firm cheese. Perfect for grilling or making into delicious pesto." icon_state = "firm_cheese_slice" tastes = list("aged cheese" = 1) - foodtypes = DAIRY | VEGETABLES w_class = WEIGHT_CLASS_SMALL rat_heal = 10 crafting_complexity = FOOD_COMPLEXITY_3 @@ -149,7 +145,6 @@ desc = "Delicious, creamy, and cheesy, all in one simple package." icon_state = "mozzarella" tastes = list("mozzarella" = 1) - foodtypes = DAIRY w_class = WEIGHT_CLASS_SMALL rat_heal = 10 crafting_complexity = FOOD_COMPLEXITY_2 diff --git a/code/game/objects/items/food/donkpocket.dm b/code/game/objects/items/food/donkpocket.dm index 4cbf83ce631..f5e382942f7 100644 --- a/code/game/objects/items/food/donkpocket.dm +++ b/code/game/objects/items/food/donkpocket.dm @@ -8,7 +8,7 @@ /datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 2, ) - tastes = list("meat" = 2, "dough" = 2, "laziness" = 1) + tastes = list("umami" = 2, "dough" = 2, "laziness" = 1) foodtypes = GRAIN food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL @@ -39,7 +39,7 @@ /datum/reagent/consumable/nutriment/protein = 2, /datum/reagent/medicine/omnizine = 6, ) - tastes = list("meat" = 2, "dough" = 2, "laziness" = 1) + tastes = list("umami" = 2, "dough" = 2, "laziness" = 1) foodtypes = GRAIN // Warmed donk pockets will burn if you leave them in the oven or microwave. @@ -47,7 +47,16 @@ baking_time_short = 10 SECONDS baking_time_long = 15 SECONDS -/obj/item/food/dankpocket +/obj/item/food/donkpocket/homemade + foodtypes = MEAT|GRAIN + tastes = list("meat" = 2, "dough" = 2, "comfiness" = 1) + warm_type = /obj/item/food/donkpocket/warm/homemade + +/obj/item/food/donkpocket/warm/homemade + foodtypes = MEAT|GRAIN + tastes = list("meat" = 2, "dough" = 2, "comfiness" = 1) + +/obj/item/food/donkpocket/dank name = "\improper Dank-pocket" desc = "The food of choice for the seasoned botanist." icon_state = "dankpocket" @@ -56,8 +65,29 @@ /datum/reagent/drug/space_drugs = 3, /datum/reagent/consumable/nutriment = 4, ) - tastes = list("meat" = 2, "dough" = 2) - foodtypes = GRAIN | VEGETABLES + tastes = list("weed" = 2, "dough" = 2) + foodtypes = GRAIN|VEGETABLES + crafting_complexity = FOOD_COMPLEXITY_2 + warm_type = /obj/item/food/donkpocket/warm/dank + +/obj/item/food/donkpocket/dank/make_bakeable() + AddComponent(/datum/component/bakeable, warm_type, rand(baking_time_short, baking_time_long), TRUE, TRUE, child_added_reagents) + +/obj/item/food/donkpocket/dank/make_microwaveable() + AddElement(/datum/element/microwavable, warm_type, child_added_reagents) + +/obj/item/food/donkpocket/warm/dank + name = "warm Dank-pocket" + desc = "The food of choice for the seasoned botanist." + icon_state = "dankpocket" + food_reagents = list( + /datum/reagent/toxin/lipolicide = 3, + /datum/reagent/drug/space_drugs = 3, + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/medicine/omnizine = 2, + ) + tastes = list("weed" = 2, "dough" = 2) + foodtypes = GRAIN|VEGETABLES crafting_complexity = FOOD_COMPLEXITY_2 /obj/item/food/donkpocket/spicy @@ -69,8 +99,8 @@ /datum/reagent/consumable/nutriment/protein = 2, /datum/reagent/consumable/capsaicin = 2, ) - tastes = list("meat" = 2, "dough" = 2, "spice" = 1) - foodtypes = GRAIN + tastes = list("umami" = 2, "dough" = 2, "spice" = 1) + foodtypes = VEGETABLES|GRAIN warm_type = /obj/item/food/donkpocket/warm/spicy /obj/item/food/donkpocket/spicy/make_bakeable() @@ -89,8 +119,17 @@ /datum/reagent/medicine/omnizine = 2, /datum/reagent/consumable/capsaicin = 5, ) - tastes = list("meat" = 2, "dough" = 2, "weird spices" = 2) - foodtypes = GRAIN + tastes = list("umami" = 2, "dough" = 2, "weird spices" = 2) + foodtypes = VEGETABLES|GRAIN + +/obj/item/food/donkpocket/spicy/homemade + tastes = list("meat" = 2, "dough" = 2, "spice" = 1) + foodtypes = MEAT|VEGETABLES|GRAIN + warm_type = /obj/item/food/donkpocket/warm/spicy/homemade + +/obj/item/food/donkpocket/warm/spicy/homemade + tastes = list("meat" = 2, "dough" = 2, "weird spices" = 1) + foodtypes = MEAT|VEGETABLES|GRAIN /obj/item/food/donkpocket/teriyaki name = "\improper Teriyaki-pocket" @@ -101,7 +140,7 @@ /datum/reagent/consumable/nutriment/protein = 2, /datum/reagent/consumable/soysauce = 2, ) - tastes = list("meat" = 2, "dough" = 2, "soy sauce" = 2) + tastes = list("umami" = 2, "dough" = 2, "soy sauce" = 2) foodtypes = GRAIN warm_type = /obj/item/food/donkpocket/warm/teriyaki @@ -121,9 +160,18 @@ /datum/reagent/medicine/omnizine = 2, /datum/reagent/consumable/soysauce = 2, ) - tastes = list("meat" = 2, "dough" = 2, "soy sauce" = 2) + tastes = list("umami" = 2, "dough" = 2, "soy sauce" = 2) foodtypes = GRAIN +/obj/item/food/donkpocket/teriyaki/homemade + tastes = list("meat" = 2, "dough" = 2, "soy sauce" = 2) + foodtypes = MEAT|GRAIN + warm_type = /obj/item/food/donkpocket/warm/teriyaki/homemade + +/obj/item/food/donkpocket/warm/teriyaki/homemade + tastes = list("meat" = 2, "dough" = 2, "soy sauce" = 2) + foodtypes = MEAT|GRAIN + /obj/item/food/donkpocket/pizza name = "\improper Pizza-pocket" desc = "Delicious, cheesy and surprisingly filling." @@ -133,8 +181,8 @@ /datum/reagent/consumable/nutriment/protein = 2, /datum/reagent/consumable/tomatojuice = 2, ) - tastes = list("meat" = 2, "dough" = 2, "cheese"= 2) - foodtypes = GRAIN + tastes = list("tomato" = 2, "dough" = 2, "cheese"= 2) + foodtypes = VEGETABLES|GRAIN|DAIRY warm_type = /obj/item/food/donkpocket/warm/pizza /obj/item/food/donkpocket/pizza/make_bakeable() @@ -153,8 +201,8 @@ /datum/reagent/medicine/omnizine = 2, /datum/reagent/consumable/tomatojuice = 2, ) - tastes = list("meat" = 2, "dough" = 2, "melty cheese"= 2) - foodtypes = GRAIN + tastes = list("tomato" = 2, "dough" = 2, "melty cheese"= 2) + foodtypes = VEGETABLES|GRAIN|DAIRY /obj/item/food/donkpocket/honk name = "\improper Honk-pocket" @@ -165,7 +213,7 @@ /datum/reagent/consumable/banana = 4, ) tastes = list("banana" = 2, "dough" = 2, "children's antibiotics" = 1) - foodtypes = GRAIN + foodtypes = GRAIN|FRUIT|SUGAR warm_type = /obj/item/food/donkpocket/warm/honk crafting_complexity = FOOD_COMPLEXITY_3 var/static/list/honk_added_reagents = list( @@ -190,7 +238,7 @@ /datum/reagent/consumable/laughter = 6, ) tastes = list("banana" = 2, "dough" = 2, "children's antibiotics" = 1) - foodtypes = GRAIN + foodtypes = GRAIN|FRUIT|SUGAR crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/donkpocket/berry @@ -202,7 +250,7 @@ /datum/reagent/consumable/berryjuice = 3, ) tastes = list("dough" = 2, "jam" = 2) - foodtypes = GRAIN + foodtypes = GRAIN|FRUIT|SUGAR warm_type = /obj/item/food/donkpocket/warm/berry /obj/item/food/donkpocket/berry/make_bakeable() @@ -221,7 +269,7 @@ /datum/reagent/consumable/berryjuice = 3, ) tastes = list("dough" = 2, "warm jam" = 2) - foodtypes = GRAIN + foodtypes = GRAIN|FRUIT|SUGAR /obj/item/food/donkpocket/gondola name = "\improper Gondola-pocket" @@ -233,7 +281,7 @@ /datum/reagent/gondola_mutation_toxin = 5, ) tastes = list("meat" = 2, "dough" = 2, "inner peace" = 1) - foodtypes = GRAIN + foodtypes = GRAIN|MEAT warm_type = /obj/item/food/donkpocket/warm/gondola var/static/list/gondola_added_reagents = list( @@ -258,7 +306,7 @@ /datum/reagent/gondola_mutation_toxin = 10, ) tastes = list("meat" = 2, "dough" = 2, "inner peace" = 1) - foodtypes = GRAIN + foodtypes = GRAIN|MEAT /obj/item/food/donkpocket/deluxe name = "\improper Donk-pocket Deluxe" @@ -271,7 +319,7 @@ /datum/reagent/medicine/omnizine = 2, ) tastes = list("quality meat" = 2, "dough" = 2, "raw fanciness" = 1) - foodtypes = GRAIN | MEAT + foodtypes = GRAIN|MEAT|VEGETABLES crafting_complexity = FOOD_COMPLEXITY_4 warm_type = /obj/item/food/donkpocket/warm/deluxe @@ -296,7 +344,7 @@ /datum/reagent/medicine/omnizine = 10, ) tastes = list("quality meat" = 2, "dough" = 2, "fanciness" = 1) - foodtypes = GRAIN | MEAT | FRIED + foodtypes = GRAIN|MEAT|VEGETABLES|FRIED /obj/item/food/donkpocket/deluxe/nocarb name = "\improper Meat-pocket" @@ -308,7 +356,7 @@ /datum/reagent/medicine/omnizine = 2, ) tastes = list("raw meat" = 2, "more meat" = 2, "no carbs" = 1) - foodtypes = MEAT | RAW + foodtypes = MEAT|RAW crafting_complexity = FOOD_COMPLEXITY_4 warm_type = /obj/item/food/donkpocket/warm/deluxe/nocarb @@ -360,4 +408,4 @@ /datum/reagent/medicine/omnizine = 10, ) tastes = list("rice patty" = 2, "fried dough" = 2, "peppery kick" = 1) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN | VEGETABLES | FRIED diff --git a/code/game/objects/items/food/donuts.dm b/code/game/objects/items/food/donuts.dm index 5a7c6a87145..5542925b2d3 100644 --- a/code/game/objects/items/food/donuts.dm +++ b/code/game/objects/items/food/donuts.dm @@ -8,7 +8,7 @@ bite_consumption = 5 food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 3) tastes = list("donut" = 1) - foodtypes = JUNKFOOD | GRAIN | SUGAR | BREAKFAST + foodtypes = GRAIN|DAIRY|JUNKFOOD|SUGAR|FRIED|BREAKFAST food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -61,6 +61,7 @@ tastes = list("donut" = 3, "chaos" = 1) is_decorated = TRUE crafting_complexity = FOOD_COMPLEXITY_3 + foodtypes = GRAIN|DAIRY|JUNKFOOD|FRIED|BREAKFAST /obj/item/food/donut/chaos/Initialize(mapload) . = ..() @@ -88,7 +89,7 @@ /datum/reagent/consumable/ketchup = 3, ) tastes = list("meat" = 1) - foodtypes = JUNKFOOD | MEAT | GORE | FRIED | BREAKFAST + foodtypes = GRAIN|DAIRY|JUNKFOOD|FRIED|BREAKFAST|MEAT|GORE is_decorated = TRUE crafting_complexity = FOOD_COMPLEXITY_3 @@ -102,6 +103,7 @@ /datum/reagent/consumable/berryjuice = 3, /datum/reagent/consumable/sprinkles = 1, //Extra sprinkles to reward frosting ) + foodtypes = parent_type::foodtypes|FRUIT decorated_icon = "donut_homer" /obj/item/food/donut/trumpet @@ -127,6 +129,7 @@ /datum/reagent/consumable/applejuice = 3, /datum/reagent/consumable/sprinkles = 1, ) + foodtypes = parent_type::foodtypes|FRUIT tastes = list("donut" = 3, "green apples" = 1) is_decorated = TRUE @@ -167,6 +170,7 @@ /datum/reagent/consumable/blumpkinjuice = 3, /datum/reagent/consumable/sprinkles = 1, ) + foodtypes = parent_type::foodtypes|VEGETABLES tastes = list("donut" = 2, "blumpkin" = 1) is_decorated = TRUE crafting_complexity = FOOD_COMPLEXITY_3 @@ -224,7 +228,7 @@ ) extra_reagent = /datum/reagent/consumable/berryjuice tastes = list("jelly" = 1, "donut" = 3) - foodtypes = JUNKFOOD | GRAIN | FRIED | FRUIT | SUGAR | BREAKFAST + foodtypes = parent_type::foodtypes|FRUIT // Jelly donuts don't have holes, but look the same on the outside /obj/item/food/donut/jelly/in_box_sprite() @@ -313,6 +317,7 @@ /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1, ) + foodtypes = parent_type::foodtypes|VEGETABLES tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1) is_decorated = TRUE crafting_complexity = FOOD_COMPLEXITY_3 @@ -364,7 +369,7 @@ name = "jelly donut" desc = "You jelly?" extra_reagent = /datum/reagent/toxin/slimejelly - foodtypes = JUNKFOOD | GRAIN | FRIED | TOXIC | SUGAR | BREAKFAST + foodtypes = GRAIN|DAIRY|JUNKFOOD|SUGAR|FRIED|BREAKFAST|TOXIC /obj/item/food/donut/jelly/slimejelly/plain icon_state = "jelly" @@ -380,6 +385,7 @@ /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1, ) //Extra sprinkles to reward frosting + foodtypes = parent_type::foodtypes|FRUIT /obj/item/food/donut/jelly/slimejelly/trumpet name = "spaceman's jelly donut" @@ -408,6 +414,7 @@ ) tastes = list("jelly" = 1, "donut" = 3, "green apples" = 1) is_decorated = TRUE + foodtypes = parent_type::foodtypes|FRUIT /obj/item/food/donut/jelly/slimejelly/caramel name = "caramel jelly donut" @@ -452,6 +459,7 @@ tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1) is_decorated = TRUE crafting_complexity = FOOD_COMPLEXITY_3 + foodtypes = parent_type::foodtypes|VEGETABLES /obj/item/food/donut/jelly/slimejelly/bungo name = "bungo jelly donut" diff --git a/code/game/objects/items/food/egg.dm b/code/game/objects/items/food/egg.dm index d184c7598fd..abf832b8074 100644 --- a/code/game/objects/items/food/egg.dm +++ b/code/game/objects/items/food/egg.dm @@ -312,7 +312,7 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0) ) w_class = WEIGHT_CLASS_SMALL tastes = list("egg" = 1, "bacon" = 1, "bun" = 1) - foodtypes = MEAT | BREAKFAST | GRAIN + foodtypes = MEAT|BREAKFAST|GRAIN|FRIED venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_3 @@ -327,7 +327,7 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0) /datum/reagent/consumable/nutriment/vitamin = 3, ) tastes = list("egg" = 1) - foodtypes = MEAT | VEGETABLES + foodtypes = MEAT|VEGETABLES|FRIED w_class = WEIGHT_CLASS_TINY crafting_complexity = FOOD_COMPLEXITY_3 diff --git a/code/game/objects/items/food/frozen.dm b/code/game/objects/items/food/frozen.dm index 775c4a545e8..4728ecc1e76 100644 --- a/code/game/objects/items/food/frozen.dm +++ b/code/game/objects/items/food/frozen.dm @@ -25,7 +25,7 @@ /datum/reagent/consumable/ice = 4, ) tastes = list("ice cream" = 2, "berry" = 2) - foodtypes = FRUIT | DAIRY | SUGAR + foodtypes = GRAIN|FRUIT|DAIRY|SUGAR food_flags = FOOD_FINGER_FOOD crafting_complexity = FOOD_COMPLEXITY_3 crafted_food_buff = /datum/status_effect/food/chilling @@ -42,7 +42,7 @@ /datum/reagent/consumable/nutriment/vitamin = 5, ) tastes = list("blue cherries" = 2, "ice cream" = 2) - foodtypes = FRUIT | DAIRY | SUGAR + foodtypes = GRAIN|FRUIT|DAIRY|SUGAR crafting_complexity = FOOD_COMPLEXITY_3 crafted_food_buff = /datum/status_effect/food/chilling @@ -62,7 +62,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("ice cream" = 1, "banana" = 1) - foodtypes = FRUIT | DAIRY | SUGAR + foodtypes = GRAIN|FRUIT|DAIRY|SUGAR crafting_complexity = FOOD_COMPLEXITY_3 crafted_food_buff = /datum/status_effect/food/chilling @@ -82,7 +82,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("ice cream" = 1, "banana" = 1, "a bad joke" = 1) - foodtypes = FRUIT | DAIRY | SUGAR + foodtypes = GRAIN|FRUIT|DAIRY|SUGAR crafting_complexity = FOOD_COMPLEXITY_4 crafted_food_buff = /datum/status_effect/food/chilling @@ -437,7 +437,7 @@ /datum/reagent/consumable/sugar = 2, ) tastes = list("chopped hazelnuts", "waffle") - foodtypes = DAIRY | SUGAR + foodtypes = GRAIN|DAIRY|SUGAR venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_3 crafted_food_buff = /datum/status_effect/food/chilling diff --git a/code/game/objects/items/food/lizard.dm b/code/game/objects/items/food/lizard.dm index a91831b3883..e12162c8f25 100644 --- a/code/game/objects/items/food/lizard.dm +++ b/code/game/objects/items/food/lizard.dm @@ -13,7 +13,7 @@ /datum/reagent/blood = 3, ) tastes = list("meat" = 1, "black pudding" = 1) - foodtypes = MEAT + foodtypes = MEAT|RAW w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_1 @@ -46,7 +46,7 @@ /datum/reagent/consumable/salt = 5, ) tastes = list("meat" = 1, "salt" = 1) - foodtypes = MEAT | GORE + foodtypes = MEAT|RAW|GORE w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_1 @@ -119,7 +119,7 @@ icon_state = "pate" food_reagents = list(/datum/reagent/consumable/nutriment/protein = 5) tastes = list("liver" = 1) - foodtypes = MEAT + foodtypes = MEAT|VEGETABLES w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -156,12 +156,12 @@ SIGNAL_HANDLER var/sprite_width = 5 var/sprite_height = 4 - var/px_min = visual.aquarium_zone_min_px - var/px_max = visual.aquarium_zone_max_px - sprite_width - var/py_min = visual.aquarium_zone_min_py - sprite_height + var/pw_min = visual.aquarium_zone_min_pw + var/pw_max = visual.aquarium_zone_max_pw - sprite_width + var/pz_min = visual.aquarium_zone_min_pz - sprite_height - visual.pixel_x = rand(px_min, px_max) - visual.pixel_y = py_min + rand(-1, 1) + visual.pixel_w = rand(pw_min, pw_max) + visual.pixel_z = pz_min + rand(-1, 1) /obj/item/food/moonfish_eggs/proc/get_aquarium_beauty(datum/source, list/beauty_holder) SIGNAL_HANDLER @@ -193,7 +193,7 @@ /datum/reagent/consumable/garlic = 2, ) tastes = list("snails" = 1, "garlic" = 1, "oil" = 1) - foodtypes = MEAT | VEGETABLES + foodtypes = MEAT|VEGETABLES w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 @@ -209,7 +209,7 @@ /datum/reagent/consumable/nutriment/fat/oil = 1, ) tastes = list("black pudding" = 1, "batter" = 1, "oil" = 1) - foodtypes = MEAT | FRIED + foodtypes = MEAT|NUTS|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -272,7 +272,7 @@ /datum/reagent/consumable/capsaicin = 1, ) tastes = list("fish" = 1, "acid" = 1, "onion" = 1, "heat" = 1) - foodtypes = SEAFOOD | VEGETABLES + foodtypes = VEGETABLES|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -287,7 +287,7 @@ /datum/reagent/consumable/capsaicin = 1, ) tastes = list("meat" = 1, "sweet" = 1, "heat" = 1) - foodtypes = GORE | MEAT | BUGS + foodtypes = MEAT|VEGETABLES|BUGS|GORE w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -331,7 +331,7 @@ /datum/reagent/consumable/nutriment = 2, ) tastes = list("fish" = 2, "potatoes" = 1, "carrots" = 1) - foodtypes = SEAFOOD + foodtypes = VEGETABLES|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 @@ -365,6 +365,9 @@ foodtypes = VEGETABLES | NUTS crafting_complexity = FOOD_COMPLEXITY_2 +/obj/item/food/spaghetti/nizaya/egg + foodtypes = parent_type::foodtypes | MEAT + /obj/item/food/spaghetti/snail_nizaya name = "desert snail nizaya" desc = "A high class pasta dish from Tizira's vineyard region of Valyngia. Traditionally made with only the finest Tiziran wine... but the human swill will do, in a pinch." @@ -403,7 +406,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("peppery sweet" = 1, "veggies" = 1, "gnocchi" = 1) - foodtypes = VEGETABLES | SUGAR | NUTS + foodtypes = VEGETABLES|NUTS|SUGAR crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/spaghetti/mushroom_nizaya @@ -416,7 +419,7 @@ /datum/reagent/consumable/nutriment/vitamin = 10, ) tastes = list("savouriness" = 1, "nuttiness" = 1, "gnocchi" = 1) - foodtypes = VEGETABLES + foodtypes = VEGETABLES|NUTS crafting_complexity = FOOD_COMPLEXITY_4 //Dough Dishes @@ -431,12 +434,20 @@ tastes = list("potato" = 1, "earthy heat" = 1) foodtypes = VEGETABLES | NUTS crafting_complexity = FOOD_COMPLEXITY_1 + var/bread_type = /obj/item/food/bread/root + var/flat_type = /obj/item/food/flatrootdough /obj/item/food/rootdough/make_bakeable() - AddComponent(/datum/component/bakeable, /obj/item/food/bread/root, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE) + AddComponent(/datum/component/bakeable, bread_type, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE) /obj/item/food/rootdough/make_processable() - AddElement(/datum/element/processable, TOOL_ROLLINGPIN, /obj/item/food/flatrootdough, 1, 3 SECONDS, table_required = TRUE, screentip_verb = "Flatten") + AddElement(/datum/element/processable, TOOL_ROLLINGPIN, flat_type, 1, 3 SECONDS, table_required = TRUE, screentip_verb = "Flatten") + +/obj/item/food/rootdough/egg + desc = "A root based dough, made with nuts, tubers and eggs. Used in a wide range of Tiziran cooking." + foodtypes = parent_type::foodtypes | MEAT + bread_type = /obj/item/food/bread/root/egg + flat_type = /obj/item/food/flatrootdough/egg /obj/item/food/flatrootdough name = "flat rootdough" @@ -447,12 +458,19 @@ tastes = list("potato" = 1, "earthy heat" = 1) foodtypes = VEGETABLES | NUTS crafting_complexity = FOOD_COMPLEXITY_1 + var/process_type = /obj/item/food/rootdoughslice + var/grill_type = /obj/item/food/root_flatbread /obj/item/food/flatrootdough/make_processable() - AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/rootdoughslice, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice") + AddElement(/datum/element/processable, TOOL_KNIFE, process_type, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice") /obj/item/food/flatrootdough/make_grillable() - AddComponent(/datum/component/grillable, /obj/item/food/root_flatbread, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE) + AddComponent(/datum/component/grillable, grill_type, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE) + +/obj/item/food/flatrootdough/egg + foodtypes = parent_type::foodtypes | MEAT + process_type = /obj/item/food/rootdoughslice/egg + grill_type = /obj/item/food/root_flatbread/egg /obj/item/food/rootdoughslice name = "rootdough ball" @@ -464,6 +482,11 @@ tastes = list("potato" = 1, "earthy heat" = 1) foodtypes = VEGETABLES | NUTS crafting_complexity = FOOD_COMPLEXITY_1 + var/process_type = /obj/item/food/spaghetti/nizaya + var/bake_type = /obj/item/food/rootroll + +/obj/item/food/rootdoughslice/egg + foodtypes = parent_type::foodtypes | MEAT /obj/item/food/rootdoughslice/make_processable() AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/spaghetti/nizaya, 1, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice") @@ -471,6 +494,10 @@ /obj/item/food/rootdoughslice/make_bakeable() AddComponent(/datum/component/bakeable, /obj/item/food/rootroll, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE) +/obj/item/food/rootdoughslice/egg + process_type = /obj/item/food/spaghetti/nizaya/egg + bake_type = /obj/item/food/rootroll/egg + /obj/item/food/root_flatbread name = "root flatbread" desc = "A plain grilled root flatbread. Can be topped with a variety of foods that lizards like to eat." @@ -481,6 +508,9 @@ foodtypes = VEGETABLES | NUTS crafting_complexity = FOOD_COMPLEXITY_2 +/obj/item/food/root_flatbread/egg + foodtypes = parent_type::foodtypes | MEAT + /obj/item/food/rootroll name = "rootroll" desc = "A dense, chewy roll, made from roots. A nice companion to a bowl of soup." @@ -492,6 +522,9 @@ foodtypes = VEGETABLES | NUTS crafting_complexity = FOOD_COMPLEXITY_2 +/obj/item/food/rootroll/egg + foodtypes = parent_type::foodtypes | MEAT + //Bread Dishes /obj/item/food/bread/root @@ -510,6 +543,10 @@ . = ..() AddComponent(/datum/component/customizable_reagent_holder, /obj/item/food/bread/empty, CUSTOM_INGREDIENT_ICON_FILL, max_ingredients = 8) +/obj/item/food/bread/root/egg + foodtypes = parent_type::foodtypes | MEAT + slice_type = /obj/item/food/breadslice/root/egg + /obj/item/food/breadslice/root name = "rootbread slice" desc = "A slice of dense, chewy rootbread." @@ -524,6 +561,9 @@ . = ..() AddComponent(/datum/component/customizable_reagent_holder, null, CUSTOM_INGREDIENT_ICON_STACK) +/obj/item/food/breadslice/root/egg + foodtypes = parent_type::foodtypes | MEAT + //Pizza Dishes /obj/item/food/pizza/flatbread icon = 'icons/obj/food/lizard.dmi' @@ -581,7 +621,7 @@ /datum/reagent/consumable/nutriment/protein = 10, ) tastes = list("bread" = 1, "meat" = 1) - foodtypes = MEAT | NUTS | GORE + foodtypes = MEAT|VEGETABLES|RAW|NUTS crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/pizza/flatbread/stinging @@ -594,7 +634,7 @@ /datum/reagent/consumable/honey = 2, ) tastes = list("bread" = 1, "sweetness" = 1, "stinging" = 1, "slime" = 1) - foodtypes = BUGS | NUTS | SEAFOOD | GORE + foodtypes = MEAT|VEGETABLES|NUTS|SEAFOOD|BUGS|GORE crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/pizza/flatbread/zmorgast // Name is based off of the Swedish dish Smörgåstårta @@ -620,7 +660,7 @@ /datum/reagent/consumable/bbqsauce = 2, ) tastes = list("bread" = 1, "fish" = 1) - foodtypes = SEAFOOD | NUTS + foodtypes = VEGETABLES|NUTS|SEAFOOD crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/pizza/flatbread/mushroom @@ -856,7 +896,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("peanut butter" = 1, "jelly" = 1, "rootbread" = 2) - foodtypes = FRUIT | NUTS + foodtypes = FRUIT|VEGETABLES|NUTS crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/rootbread_peanut_butter_banana @@ -871,7 +911,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("peanut butter" = 1, "banana" = 1, "rootbread" = 2) - foodtypes = FRUIT | NUTS + foodtypes = FRUIT|VEGETABLES|NUTS crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/burger/plain/korta @@ -884,7 +924,7 @@ /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/consumable/nutriment/vitamin = 1, ) - foodtypes = NUTS | MEAT + foodtypes = MEAT|VEGETABLES|NUTS crafting_complexity = FOOD_COMPLEXITY_3 //Gotta make the dough, +1 /obj/item/food/burger/rat/korta @@ -898,7 +938,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("dead rat" = 4, "bun" = 2) - foodtypes = NUTS | MEAT | GORE + foodtypes = NUTS | MEAT | GORE | VEGETABLES | RAW crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/burger/rootguffin @@ -913,7 +953,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("muffin" = 2, "bacon" = 3) - foodtypes = NUTS | MEAT | BREAKFAST + foodtypes = NUTS | MEAT | BREAKFAST | VEGETABLES | FRIED venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_4 @@ -929,7 +969,7 @@ /datum/reagent/consumable/bbqsauce = 1, ) tastes = list("bun" = 2, "pork patty" = 4) - foodtypes = NUTS | MEAT + foodtypes = NUTS | MEAT | VEGETABLES | SUGAR venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_4 @@ -946,7 +986,7 @@ /datum/reagent/consumable/nutriment/fat/oil = 2, ) tastes = list("bun" = 2, "chicken" = 4, "God's covenant" = 1) - foodtypes = NUTS | MEAT | FRIED + foodtypes = NUTS | MEAT | VEGETABLES venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_4 @@ -961,7 +1001,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("bun" = 4, "fish" = 4) - foodtypes = NUTS | SEAFOOD + foodtypes = VEGETABLES | NUTS | SEAFOOD venue_value = FOOD_PRICE_EXOTIC crafting_complexity = FOOD_COMPLEXITY_3 diff --git a/code/game/objects/items/food/martian.dm b/code/game/objects/items/food/martian.dm index ef288a8bed7..b1d8fee480b 100644 --- a/code/game/objects/items/food/martian.dm +++ b/code/game/objects/items/food/martian.dm @@ -108,7 +108,7 @@ /datum/reagent/consumable/capsaicin = 2 ) tastes = list("chilli heat" = 1, "umami" = 1) - foodtypes = SEAFOOD | VEGETABLES + foodtypes = VEGETABLES|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -123,7 +123,7 @@ /datum/reagent/consumable/nutriment = 2 ) tastes = list("meat" = 1, "breadcrumbs" = 1) - foodtypes = MEAT | GRAIN + foodtypes = MEAT|FRIED|GRAIN w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -194,7 +194,7 @@ food_reagents = list( /datum/reagent/consumable/nutriment = 3 ) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN crafting_complexity = FOOD_COMPLEXITY_3 // Fried Rice @@ -272,7 +272,7 @@ /datum/reagent/consumable/nutriment/vitamin = 10, ) tastes = list("rice" = 1, "cheese" = 1, "meatball" = 1, "olives" = 1, "herbs" = 1) - foodtypes = MEAT | GRAIN | VEGETABLES | DAIRY + foodtypes = MEAT | GRAIN | VEGETABLES | DAIRY | FRUIT w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -341,7 +341,7 @@ /datum/reagent/consumable/nutriment = 8, ) tastes = list("fried noodles" = 1, "meat" = 1, "breadcrumbs" = 1, "veggies" = 1) - foodtypes = MEAT | VEGETABLES | GRAIN + foodtypes = MEAT|VEGETABLES|GRAIN|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -392,7 +392,7 @@ /datum/reagent/medicine/omnizine = 5, ) tastes = list("masterful curry" = 1, "rice" = 1) - foodtypes = GRAIN | MEAT | VEGETABLES + foodtypes = MEAT|VEGETABLES|GRAIN|FRUIT|SUGAR w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_5 //Extensive and secretly guarded. Was previously 2 and I thought it was pathetic. @@ -422,7 +422,7 @@ /datum/reagent/consumable/nutriment/protein = 6, ) tastes = list("bun" = 1, "fried pork" = 2, "egg" = 1, "cheese" = 1, "ketchup" = 1) - foodtypes = MEAT | GRAIN | DAIRY | VEGETABLES + foodtypes = MEAT|GRAIN|DAIRY|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -438,7 +438,7 @@ /datum/reagent/consumable/capsaicin = 1, ) tastes = list("meat" = 1, "bacon" = 1, "kimchi" = 1, "salad" = 1, "rice bread" = 1) - foodtypes = MEAT | GRAIN | VEGETABLES + foodtypes = MEAT|VEGETABLES|GRAIN|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -469,7 +469,7 @@ /datum/reagent/consumable/capsaicin = 1, ) tastes = list("egg" = 1, "meat" = 1, "kimchi" = 1, "mozzarella" = 1) - foodtypes = MEAT | DAIRY | VEGETABLES | GRAIN + foodtypes = MEAT|VEGETABLES|GRAIN|DAIRY|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -484,7 +484,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("egg" = 1, "toast" = 1, "pork" = 1, "pineapple" = 1, "cheese" = 1) - foodtypes = MEAT | DAIRY | VEGETABLES | GRAIN | PINEAPPLE | BREAKFAST + foodtypes = MEAT|GRAIN|FRUIT|DAIRY|FRIED|PINEAPPLE|BREAKFAST w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -545,7 +545,7 @@ /datum/reagent/consumable/nutriment/fat/oil = 2, ) tastes = list("taco meat" = 1, "batter" = 1, "corn" = 1, "cheese" = 1) - foodtypes = MEAT | GRAIN | FRIED | VEGETABLES | DAIRY + foodtypes = MEAT|GRAIN|FRIED|VEGETABLES|DAIRY|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 //Batter AND Cargo ingredients. @@ -559,7 +559,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("batter" = 1, "cabbage" = 1, "onion" = 1, "worcestershire sauce" = 1) - foodtypes = SEAFOOD | GRAIN | FRIED | VEGETABLES + foodtypes = GRAIN|FRIED|VEGETABLES|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 //Cargo stuff and batter. @@ -595,7 +595,7 @@ /datum/reagent/consumable/worcestershire = 2, ) tastes = list("sausage" = 1, "spicy sauce" = 1, "fries" = 1) - foodtypes = MEAT | VEGETABLES + foodtypes = MEAT|VEGETABLES|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 //Cargo ingredients and a few steps. @@ -610,7 +610,7 @@ /datum/reagent/consumable/peanut_butter = 1, ) tastes = list("blood" = 1, "nuts" = 1, "herbs" = 1) - foodtypes = MEAT | NUTS | GRAIN + foodtypes = MEAT|FRIED|NUTS|GRAIN w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -654,7 +654,7 @@ /datum/reagent/consumable/nutriment = 10, ) tastes = list("bread" = 1, "egg" = 1, "meat" = 1, "onion" = 1) - foodtypes = GRAIN | MEAT | VEGETABLES | FRIED | BREAKFAST + foodtypes = MEAT|VEGETABLES|GRAIN|BREAKFAST w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 @@ -685,7 +685,7 @@ /datum/reagent/consumable/nutriment/vitamin = 8, ) tastes = list("bread" = 1, "spicy fries" = 1, "mayonnaise" = 1, "curry" = 1, "meat" = 1) - foodtypes = MEAT | GRAIN | VEGETABLES | FRIED + foodtypes = MEAT|VEGETABLES|GRAIN|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 @@ -699,7 +699,7 @@ /datum/reagent/consumable/nutriment/protein = 8, ) tastes = list("rice" = 1, "burger" = 1, "gravy" = 1, "egg" = 1) - foodtypes = MEAT | GRAIN | VEGETABLES + foodtypes = MEAT|VEGETABLES|GRAIN|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -730,7 +730,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("sausage" = 1, "pineapple" = 1, "onion" = 1, "teriyaki" = 1) - foodtypes = MEAT | VEGETABLES | FRUIT | PINEAPPLE + foodtypes = MEAT|VEGETABLES|GRAIN|FRUIT|PINEAPPLE w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 custom_price = PAYCHECK_CREW * 1.2 @@ -761,7 +761,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/char = 2) tastes = list("octopus" = 1) - foodtypes = SEAFOOD | FRIED + foodtypes = SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -775,7 +775,7 @@ /datum/reagent/consumable/nutriment/protein = 6, ) tastes = list("steak" = 1, "potato" = 1) - foodtypes = MEAT | VEGETABLES | FRIED + foodtypes = MEAT|VEGETABLES|GRAIN|DAIRY|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -791,7 +791,7 @@ /datum/reagent/consumable/garlic = 1, ) tastes = list("ham" = 1, "garlic rice" = 1, "egg" = 1) - foodtypes = MEAT | GRAIN | VEGETABLES | BREAKFAST + foodtypes = MEAT|GRAIN|FRIED|BREAKFAST|VEGETABLES w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -837,7 +837,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("chicken" = 1, "coconut" = 1, "curry" = 1) - foodtypes = MEAT | VEGETABLES | FRUIT + foodtypes = MEAT|GRAIN|FRUIT w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -897,13 +897,13 @@ /datum/reagent/consumable/nutriment/protein = 8, ) tastes = list("curry" = 1, "meat" = 1, "breadcrumbs" = 1, "rice" = 1) - foodtypes = MEAT | VEGETABLES | GRAIN + foodtypes = MEAT|GRAIN|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/salad/beef_bowl name = "beef bowl" - desc = "A tasty mix of stewed beef and onion, served over rice. Typical toppings include pickled ginger, chilli powder, and fried eggs." + desc = "A tasty mix of stewed beef, onion and dashi, served over rice. Typical toppings include pickled ginger, chilli powder, and fried eggs." icon = 'icons/obj/food/martian.dmi' icon_state = "beef_bowl" food_reagents = list( @@ -912,7 +912,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("beef" = 25, "onion" = 25, "chili heat" = 15, "rice" = 34, "soul" = 1) //I pour my soul into this bowl - foodtypes = MEAT | VEGETABLES | GRAIN + foodtypes = MEAT|VEGETABLES|GRAIN|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -929,7 +929,7 @@ /datum/reagent/consumable/salt = 2, ) tastes = list("seafood" = 1, "rice" = 1, "garlic" = 1, "ginger" = 1, "numbing heat" = 1, "salt" = 1) - foodtypes = SEAFOOD | VEGETABLES | GRAIN + foodtypes = VEGETABLES|GRAIN|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 //A few Cargo ingredients @@ -944,7 +944,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("seafood" = 1, "rice" = 1, "egg" = 1, "onion" = 1) - foodtypes = SEAFOOD | MEAT | VEGETABLES | GRAIN + foodtypes = MEAT|VEGETABLES|GRAIN|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -959,7 +959,7 @@ /datum/reagent/toxin/slimejelly = 4, ) tastes = list("grit" = 1, "slime" = 1, "gristle" = 1, "rice" = 1, "Mystery Food X" = 1) - foodtypes = GROSS | GRAIN | TOXIC + foodtypes = VEGETABLES|GRAIN|FRUIT|SEAFOOD|GROSS|TOXIC w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -977,7 +977,7 @@ /datum/reagent/consumable/garlic = 1, ) tastes = list("yoghurt" = 1, "garlic" = 1, "lemon" = 1, "egg" = 1, "chilli heat" = 1) - foodtypes = DAIRY | VEGETABLES | MEAT | BREAKFAST + foodtypes = MEAT|VEGETABLES|DAIRY|FRIED|BREAKFAST w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -993,7 +993,7 @@ /datum/reagent/consumable/orangejuice = 4, ) tastes = list("meat" = 1, "crepes" = 1, "orange" = 1) - foodtypes = MEAT | DAIRY | VEGETABLES | FRUIT + foodtypes = MEAT|GRAIN|FRUIT|SUGAR|ORANGES w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -1008,7 +1008,7 @@ /datum/reagent/consumable/nutriment/vitamin = 15 ) tastes = list("winter spices" = 2, "ambrosia vulgaris" = 2, "cake" = 5) - foodtypes = GRAIN | SUGAR | DAIRY + foodtypes = VEGETABLES|GRAIN|DAIRY|SUGAR crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/cake/spekkoek/make_processable() @@ -1020,7 +1020,7 @@ icon = 'icons/obj/food/martian.dmi' icon_state = "spekkoek_slice" tastes = list("winter spices" = 2, "ambrosia vulgaris" = 2, "cake" = 5) - foodtypes = GRAIN | SUGAR | DAIRY + foodtypes = VEGETABLES|GRAIN|DAIRY|SUGAR crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/salad/pineapple_foster @@ -1036,7 +1036,7 @@ /datum/reagent/consumable/milk = 4 ) tastes = list("pineapple" = 1, "vanilla" = 1, "caramel" = 1, "ice cream" = 1) - foodtypes = FRUIT | DAIRY | PINEAPPLE + foodtypes = GRAIN|FRUIT|DAIRY|SUGAR|PINEAPPLE w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -1051,7 +1051,7 @@ /datum/reagent/consumable/sugar = 4, ) tastes = list("custard" = 1, "vanilla" = 1, "sweet pastry" = 1) - foodtypes = DAIRY | GRAIN + foodtypes = GRAIN|FRUIT|DAIRY w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -1080,7 +1080,7 @@ /datum/reagent/consumable/sugar = 1, ) tastes = list("banana" = 1, "batter" = 1) - foodtypes = GRAIN | FRUIT | FRIED + foodtypes = GRAIN|FRUIT|FRIED|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 //Fried goodness, oil scawy. @@ -1095,7 +1095,7 @@ /datum/reagent/consumable/sugar = 1, ) tastes = list("pineapple" = 1, "batter" = 1) - foodtypes = GRAIN | FRUIT | FRIED | PINEAPPLE + foodtypes = GRAIN|FRUIT|FRIED|PINEAPPLE|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -1143,7 +1143,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("cold pineapple" = 1, "chocolate" = 1) - foodtypes = SUGAR | PINEAPPLE + foodtypes = SUGAR|FRUIT|PINEAPPLE crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/popsicle/sea_salt @@ -1172,7 +1172,7 @@ /datum/reagent/consumable/berryjuice = 4 ) tastes = list("berry" = 1, "tofu" = 1) - foodtypes = FRUIT | VEGETABLES + foodtypes = FRUIT|SUGAR|VEGETABLES crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/popsicle/topsicle/banana @@ -1195,6 +1195,7 @@ /datum/reagent/consumable/sugar = 6, /datum/reagent/consumable/pineapplejuice = 4 ) + foodtypes = FRUIT|SUGAR|VEGETABLES|PINEAPPLE tastes = list("pineapple" = 1, "tofu" = 1) // Ballpark Food @@ -1209,7 +1210,7 @@ /datum/reagent/consumable/nutriment = 6 ) tastes = list("sausage" = 1, "relish" = 1, "onion" = 1, "fruity salsa" = 1) - foodtypes = FRUIT | MEAT | PINEAPPLE | VEGETABLES | GRAIN + foodtypes = MEAT|VEGETABLES|GRAIN|FRUIT|PINEAPPLE|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 //Uses Sambal custom_price = PAYCHECK_CREW * 2 @@ -1225,7 +1226,7 @@ /datum/reagent/consumable/capsaicin = 1, ) tastes = list("frickles" = 1) - foodtypes = VEGETABLES | GRAIN + foodtypes = VEGETABLES|GRAIN|FRIED|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 //batter and cargo stuff. diff --git a/code/game/objects/items/food/meatdish.dm b/code/game/objects/items/food/meatdish.dm index bf7222b31f7..830f647c8e2 100644 --- a/code/game/objects/items/food/meatdish.dm +++ b/code/game/objects/items/food/meatdish.dm @@ -16,7 +16,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("fish" = 4, "batter" = 1, "hot peppers" = 1) - foodtypes = SEAFOOD | FRIED + foodtypes = VEGETABLES|GRAIN|SEAFOOD|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -172,7 +172,7 @@ ) bite_consumption = 1 tastes = list("fish" = 1, "breadcrumbs" = 1) - foodtypes = SEAFOOD | FRIED + foodtypes = GRAIN|SEAFOOD|FRIED w_class = WEIGHT_CLASS_SMALL venue_value = FOOD_PRICE_EXOTIC crafting_complexity = FOOD_COMPLEXITY_2 @@ -215,7 +215,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("boiled rice" = 4, "carrots" = 2, "potato" = 2) - foodtypes = VEGETABLES + foodtypes = VEGETABLES|GRAIN w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -231,7 +231,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("boiled rice" = 4, "carrots" = 2, "potato" = 2) - foodtypes = VEGETABLES + foodtypes = VEGETABLES|GRAIN w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -246,7 +246,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("boiled rice" = 4, "fish" = 2, "spicyness" = 2) - foodtypes = VEGETABLES | SEAFOOD + foodtypes = VEGETABLES|GRAIN|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -264,14 +264,14 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("boiled rice" = 4, "fish" = 2, "spicyness" = 2) - foodtypes = VEGETABLES | SEAFOOD + foodtypes = VEGETABLES|GRAIN|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 // empty sushi for custom sushi /obj/item/food/sushi/empty name = "sushi" - foodtypes = NONE + foodtypes = VEGETABLES tastes = list() icon_state = "vegetariansushiroll" desc = "A roll of customized sushi." @@ -282,7 +282,7 @@ /obj/item/food/sushislice/empty name = "sushi slice" - foodtypes = NONE + foodtypes = VEGETABLES tastes = list() icon_state = "vegetariansushislice" desc = "A slice of customized sushi." @@ -295,7 +295,7 @@ icon_state = "nigiri_sushi" food_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/nutriment/protein = 2) tastes = list("boiled rice" = 4, "fish filet" = 2, "soy sauce" = 2) - foodtypes = SEAFOOD | VEGETABLES + foodtypes = VEGETABLES|GRAIN|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -309,7 +309,7 @@ /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/nutriment/protein = 2, ) - foodtypes = SEAFOOD | MEAT | VEGETABLES + foodtypes = MEAT|VEGETABLES|GRAIN tastes = list("rice and meat" = 4, "lettuce" = 2, "soy sauce" = 2) trash_type = /obj/item/reagent_containers/cup/bowl w_class = WEIGHT_CLASS_SMALL @@ -326,7 +326,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/consumable/nutriment/protein = 2, ) - foodtypes = SEAFOOD | VEGETABLES + foodtypes = VEGETABLES|GRAIN|SEAFOOD tastes = list("rice and fish" = 4, "lettuce" = 2, "soy sauce" = 2) trash_type = /obj/item/reagent_containers/cup/bowl w_class = WEIGHT_CLASS_SMALL @@ -655,7 +655,7 @@ /datum/reagent/consumable/garlic = 1, ) tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) - foodtypes = MEAT + foodtypes = MEAT|GRAIN|VEGETABLES w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -675,7 +675,7 @@ ) bite_consumption = 3 tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) - foodtypes = MEAT + foodtypes = MEAT|GRAIN|VEGETABLES w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -735,12 +735,12 @@ ) bite_consumption = 4 tastes = list("meat" = 1, "the colour green" = 1) - foodtypes = MEAT + foodtypes = MEAT|BUGS w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 /obj/item/food/sashimi - name = "carp sashimi" + name = "spider sashimi" desc = "Celebrate surviving an attack from hostile alien lifeforms by hospitalising yourself. You sure hope whoever made this is skilled." icon = 'icons/obj/food/meat.dmi' icon_state = "sashimi" @@ -750,7 +750,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("fish" = 1, "hot peppers" = 1) - foodtypes = SEAFOOD + foodtypes = MEAT|SEAFOOD|BUGS w_class = WEIGHT_CLASS_TINY //total price of this dish is 20 and a small amount more for soy sauce, all of which are available at the orders console venue_value = FOOD_PRICE_CHEAP @@ -853,7 +853,7 @@ /datum/reagent/consumable/tomatojuice = 10, ) tastes = list("meat" = 3, "pasta" = 3, "tomato" = 2, "cheese" = 2) - foodtypes = MEAT | DAIRY | GRAIN + foodtypes = MEAT|VEGETABLES|GRAIN|DAIRY venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_3 @@ -920,7 +920,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("rat meat" = 1, "metal" = 1) - foodtypes = MEAT | GORE + foodtypes = MEAT|RAW|GORE venue_value = FOOD_PRICE_CHEAP /obj/item/food/kebab/rat/double @@ -1156,7 +1156,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("sausage" = 1, "bacon" = 1, "egg" = 1, "tomato" = 1, "mushrooms" = 1, "bread" = 1, "beans" = 1) - foodtypes = MEAT | VEGETABLES | GRAIN | BREAKFAST + foodtypes = MEAT|VEGETABLES|GRAIN|DAIRY|FRIED|BREAKFAST w_class = WEIGHT_CLASS_SMALL venue_value = FOOD_PRICE_EXOTIC crafting_complexity = FOOD_COMPLEXITY_5 @@ -1249,7 +1249,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("boiled rice" = 4, "fish" = 5, "egg" = 3, "dried seaweed" = 2, "cucumber" = 2) - foodtypes = VEGETABLES | SEAFOOD + foodtypes = MEAT|VEGETABLES|GRAIN|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -1266,7 +1266,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("boiled rice" = 4, "fish" = 5, "egg" = 3, "dried seaweed" = 2, "cucumber" = 2) - foodtypes = VEGETABLES | SEAFOOD + foodtypes = VEGETABLES|GRAIN|DAIRY|SEAFOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -1280,7 +1280,7 @@ /datum/reagent/consumable/nutriment/vitamin = 8, ) tastes = list("boiled rice" = 4, "fish" = 5, "creamy cheese" = 3, "dried seaweed" = 2, "cucumber" = 2) - foodtypes = VEGETABLES | SEAFOOD | DAIRY + foodtypes = VEGETABLES|GRAIN|SEAFOOD|DAIRY w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -1297,6 +1297,6 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("boiled rice" = 4, "fish" = 5, "creamy cheese" = 3, "dried seaweed" = 2, "cucumber" = 2) - foodtypes = VEGETABLES | SEAFOOD | DAIRY + foodtypes = VEGETABLES|GRAIN|SEAFOOD|DAIRY w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 diff --git a/code/game/objects/items/food/meatslab.dm b/code/game/objects/items/food/meatslab.dm index ed391a57bd2..c195b76f1ca 100644 --- a/code/game/objects/items/food/meatslab.dm +++ b/code/game/objects/items/food/meatslab.dm @@ -512,7 +512,6 @@ name = "[source_item.name] steak" /obj/item/food/meat/steak/plain - foodtypes = MEAT /obj/item/food/meat/steak/plain/human tastes = list("tender meat" = 1) @@ -549,6 +548,7 @@ /obj/item/food/meat/steak/spider name = "spider steak" tastes = list("cobwebs" = 1) + foodtypes = parent_type::foodtypes | TOXIC /obj/item/food/meat/steak/goliath name = "goliath steak" @@ -557,7 +557,6 @@ icon_state = "goliathsteak" trash_type = null tastes = list("meat" = 1, "rock" = 1) - foodtypes = MEAT /obj/item/food/meat/steak/gondola name = "gondola steak" @@ -679,6 +678,7 @@ name = "raw spider cutlet" tastes = list("cobwebs" = 1) blood_decal_type = /obj/effect/decal/cleanable/insectguts + foodtypes = parent_type::foodtypes | TOXIC /obj/item/food/meat/rawcutlet/spider/make_grillable() AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/spider, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE) @@ -768,6 +768,7 @@ /obj/item/food/meat/cutlet/spider name = "spider cutlet" tastes = list("cobwebs" = 1) + foodtypes = parent_type::foodtypes | TOXIC /obj/item/food/meat/cutlet/gondola name = "gondola cutlet" diff --git a/code/game/objects/items/food/mexican.dm b/code/game/objects/items/food/mexican.dm index 3dc6adc1079..5f46e4f917e 100644 --- a/code/game/objects/items/food/mexican.dm +++ b/code/game/objects/items/food/mexican.dm @@ -26,7 +26,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("torilla" = 2, "beans" = 3) - foodtypes = GRAIN + foodtypes = VEGETABLES|GRAIN w_class = WEIGHT_CLASS_SMALL venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_2 @@ -42,7 +42,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("torilla" = 2, "beans" = 3, "cheese" = 1) - foodtypes = GRAIN | DAIRY + foodtypes = VEGETABLES|GRAIN|DAIRY w_class = WEIGHT_CLASS_SMALL venue_value = FOOD_PRICE_EXOTIC crafting_complexity = FOOD_COMPLEXITY_3 @@ -58,7 +58,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("torilla" = 2, "meat" = 4) - foodtypes = GRAIN | MEAT + foodtypes = VEGETABLES|GRAIN|MEAT w_class = WEIGHT_CLASS_SMALL venue_value = FOOD_PRICE_EXOTIC crafting_complexity = FOOD_COMPLEXITY_3 @@ -75,7 +75,7 @@ /datum/reagent/consumable/nutriment/vitamin = 3, ) tastes = list("torilla" = 2, "beans" = 3, "hot peppers" = 1) - foodtypes = GRAIN + foodtypes = VEGETABLES|GRAIN w_class = WEIGHT_CLASS_SMALL venue_value = FOOD_PRICE_LEGENDARY crafting_complexity = FOOD_COMPLEXITY_3 @@ -122,7 +122,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("nachos" = 2, "hot pepper" = 1) - foodtypes = VEGETABLES | FRIED | DAIRY + foodtypes = VEGETABLES|FRIED|GRAIN w_class = WEIGHT_CLASS_SMALL venue_value = FOOD_PRICE_CHEAP crafting_complexity = FOOD_COMPLEXITY_2 @@ -178,7 +178,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("hot peppers" = 1, "meat" = 3, "cheese" = 1, "sour cream" = 1) - foodtypes = MEAT | GRAIN + foodtypes = MEAT|VEGETABLES|GRAIN w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -211,7 +211,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("peppers" = 1, "salsa" = 3, "tortilla chips" = 1, "onion" = 1) - foodtypes = VEGETABLES + foodtypes = VEGETABLES|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -279,7 +279,7 @@ /datum/reagent/consumable/nutriment/protein = 6, ) tastes = list("crunchy taco shell" = 1, "cabbage" = 3, "tomatoes" = 1, "ground meat" = 1, "cheese" = 1) - foodtypes = GRAIN | VEGETABLES | MEAT | DAIRY + foodtypes = MEAT|VEGETABLES|GRAIN|DAIRY|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 @@ -294,7 +294,7 @@ /datum/reagent/consumable/nutriment/protein = 6, ) tastes = list("crunchy taco shell" = 1, "ground meat" = 1) - foodtypes = GRAIN | MEAT + foodtypes = MEAT|GRAIN|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -325,7 +325,7 @@ ) trash_type = /obj/item/reagent_containers/cup/bowl tastes = list("zesty rice" = 1, "tomato sauce" = 3,) - foodtypes = VEGETABLES + foodtypes = VEGETABLES|GRAIN w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm index 46ee44cd544..c1d46fb029f 100644 --- a/code/game/objects/items/food/misc.dm +++ b/code/game/objects/items/food/misc.dm @@ -278,7 +278,7 @@ ) w_class = WEIGHT_CLASS_NORMAL tastes = list("melon" = 1) - foodtypes = FRUIT + foodtypes = VEGETABLES|FRUIT|ORANGES w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 @@ -353,7 +353,7 @@ /datum/reagent/consumable/salt = 8, ) tastes = list("bran" = 4, "raisins" = 3, "salt" = 1) - foodtypes = GRAIN | FRUIT | BREAKFAST + foodtypes = SUGAR|GRAIN|FRUIT|BREAKFAST w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -510,7 +510,7 @@ /datum/reagent/consumable/nutriment/vitamin = 5, ) tastes = list("juicy meat" = 1, "rice" = 1, "cabbage" = 1) - foodtypes = MEAT | VEGETABLES + foodtypes = MEAT|VEGETABLES|GRAIN w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -553,7 +553,7 @@ /datum/reagent/consumable/nutriment/protein = 4, ) tastes = list("granola" = 1, "nuts" = 1, "chocolate" = 1, "raisin" = 1) - foodtypes = GRAIN | NUTS | FRUIT | SUGAR | DAIRY + foodtypes = GRAIN|NUTS|FRUIT|SUGAR w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 @@ -567,7 +567,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("rice" = 1, "dried seaweed" = 1) - foodtypes = VEGETABLES + foodtypes = VEGETABLES|GRAIN w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -580,7 +580,7 @@ name = "onigiri" desc = "A ball of cooked rice surrounding a filling formed into a triangular shape and wrapped in seaweed." icon_state = "onigiri" - foodtypes = VEGETABLES + foodtypes = VEGETABLES|GRAIN tastes = list() /obj/item/food/pacoca @@ -689,7 +689,7 @@ /datum/reagent/consumable/nutriment/protein = 20, ) tastes = list("cooked eggplant" = 5, "potato" = 1, "baked veggies" = 2, "meat" = 4, "bechamel sauce" = 3) - foodtypes = MEAT | DAIRY | VEGETABLES + foodtypes = MEAT|VEGETABLES|GRAIN|DAIRY crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/moussaka/make_processable() @@ -705,7 +705,7 @@ /datum/reagent/consumable/nutriment/protein = 5, ) tastes = list("cooked eggplant" = 5, "potato" = 1, "baked veggies" = 2, "meat" = 4, "bechamel sauce" = 3) - foodtypes = MEAT | DAIRY | VEGETABLES + foodtypes = MEAT|VEGETABLES|GRAIN|DAIRY crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/candied_pineapple @@ -718,7 +718,7 @@ icon_state = "candied_pineapple_1" base_icon_state = "candied_pineapple" tastes = list("sugar" = 2, "chewy pineapple" = 4) - foodtypes = FRUIT | SUGAR + foodtypes = SUGAR|FRUIT|PINEAPPLE food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_TINY crafting_complexity = FOOD_COMPLEXITY_1 diff --git a/code/game/objects/items/food/moth.dm b/code/game/objects/items/food/moth.dm index 367a3f29b5c..eeaa02cebc8 100644 --- a/code/game/objects/items/food/moth.dm +++ b/code/game/objects/items/food/moth.dm @@ -67,7 +67,7 @@ /datum/reagent/consumable/salt = 2, ) tastes = list("seeds" = 1, "nuts" = 1, "chocolate" = 1, "salt" = 1, "popcorn" = 1, "potato" = 1) - foodtypes = GRAIN | NUTS | VEGETABLES | SUGAR + foodtypes = JUNKFOOD|GRAIN|FRIED|NUTS|VEGETABLES w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -94,7 +94,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("cheese" = 1, "tofu" = 1, "veggies" = 1) - foodtypes = DAIRY | VEGETABLES + foodtypes = DAIRY|VEGETABLES|GRAIN w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 @@ -126,7 +126,7 @@ /datum/reagent/consumable/capsaicin = 1, ) tastes = list("cheese" = 1, "oil" = 1, "chili" = 1, "fries" = 1) - foodtypes = DAIRY | VEGETABLES + foodtypes = VEGETABLES|DAIRY|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_5 @@ -172,7 +172,7 @@ /datum/reagent/consumable/nutriment/vitamin = 10, ) tastes = list("cheese" = 1, "pesto" = 1, "pasta" = 1) - foodtypes = VEGETABLES | GRAIN | NUTS | RAW + foodtypes = VEGETABLES|GRAIN|DAIRY|NUTS|RAW w_class = WEIGHT_CLASS_NORMAL crafting_complexity = FOOD_COMPLEXITY_5 @@ -189,7 +189,7 @@ /datum/reagent/consumable/nutriment/vitamin = 18, ) tastes = list("cheese" = 1, "pesto" = 1, "pasta" = 1) - foodtypes = VEGETABLES | GRAIN | NUTS + foodtypes = VEGETABLES|GRAIN|DAIRY|NUTS w_class = WEIGHT_CLASS_NORMAL crafting_complexity = FOOD_COMPLEXITY_5 @@ -206,7 +206,7 @@ /datum/reagent/consumable/nutriment/vitamin = 3, ) tastes = list("cheese" = 1, "pesto" = 1, "pasta" = 1) - foodtypes = VEGETABLES | GRAIN | NUTS + foodtypes = VEGETABLES|GRAIN|DAIRY|NUTS w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_5 @@ -300,7 +300,7 @@ /datum/reagent/consumable/char = 1, ) tastes = list("corn" = 1, "chili" = 1, "char" = 1) - foodtypes = VEGETABLES | DAIRY + foodtypes = VEGETABLES|JUNKFOOD|DAIRY|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 @@ -347,7 +347,7 @@ /datum/reagent/consumable/nutriment/protein = 6, ) tastes = list("creamy cheese" = 1, "breading" = 1, "oil" = 1) - foodtypes = DAIRY | GRAIN | FRIED + foodtypes = GRAIN|DAIRY|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 @@ -469,7 +469,7 @@ /datum/reagent/consumable/nutriment/protein = 6, ) tastes = list("bacon" = 1, "eggs" = 1) - foodtypes = MEAT | GRAIN + foodtypes = MEAT|GRAIN|FRIED w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_4 @@ -485,7 +485,7 @@ /datum/reagent/consumable/nutriment = 10, ) tastes = list("cornmeal" = 1, "cheese" = 1, "eggplant" = 1, "tomato sauce" = 1) - foodtypes = DAIRY | GRAIN + foodtypes = VEGETABLES|GRAIN|DAIRY w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_5 @@ -786,7 +786,7 @@ /datum/reagent/consumable/nutriment/vitamin = 3, ) tastes = list("dough" = 1, "garlic" = 1, "butter" = 1) - foodtypes = GRAIN | VEGETABLES | RAW + foodtypes = GRAIN|VEGETABLES|RAW|DAIRY crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/raw_mothic_garlic/make_bakeable() @@ -804,7 +804,7 @@ /datum/reagent/consumable/nutriment/vitamin = 5, ) tastes = list("crust" = 1, "garlic" = 1, "butter" = 1) - foodtypes = GRAIN | VEGETABLES | DAIRY | NUTS + foodtypes = GRAIN|VEGETABLES|DAIRY slice_type = /obj/item/food/pizzaslice/mothic_garlic boxtag = "Garlic Bread alla Moffuchi" crafting_complexity = FOOD_COMPLEXITY_4 @@ -815,7 +815,7 @@ icon = 'icons/obj/food/moth.dmi' icon_state = "garlic_slice" tastes = list("dough" = 1, "garlic" = 1, "butter" = 1) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN|VEGETABLES|DAIRY crafting_complexity = FOOD_COMPLEXITY_4 //Bread diff --git a/code/game/objects/items/food/pancakes.dm b/code/game/objects/items/food/pancakes.dm index 488ba1e5eb5..3ddee9906cc 100644 --- a/code/game/objects/items/food/pancakes.dm +++ b/code/game/objects/items/food/pancakes.dm @@ -145,8 +145,8 @@ /obj/item/food/pancakes/proc/update_snack_overlays(obj/item/food/pancakes/pancake) var/mutable_appearance/pancake_visual = mutable_appearance(icon, "[pancake.stack_name]_[rand(1, 3)]") - pancake_visual.pixel_x = rand(-1, 1) - pancake_visual.pixel_y = 3 * contents.len - 1 + pancake_visual.pixel_w = rand(-1, 1) + pancake_visual.pixel_z = 3 * contents.len - 1 pancake_visual.layer = layer + (contents.len * 0.01) add_overlay(pancake_visual) update_appearance() diff --git a/code/game/objects/items/food/pastries.dm b/code/game/objects/items/food/pastries.dm index 556c0a0bda9..a46802c496a 100644 --- a/code/game/objects/items/food/pastries.dm +++ b/code/game/objects/items/food/pastries.dm @@ -11,7 +11,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("muffin" = 1) - foodtypes = GRAIN | SUGAR | BREAKFAST + foodtypes = GRAIN|DAIRY|SUGAR|BREAKFAST food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -21,7 +21,7 @@ icon_state = "berrymuffin" desc = "A delicious and spongy little cake, with berries." tastes = list("muffin" = 3, "berry" = 1) - foodtypes = GRAIN | FRUIT | SUGAR | BREAKFAST + foodtypes = GRAIN|DAIRY|SUGAR|BREAKFAST|FRUIT venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_3 @@ -31,7 +31,7 @@ alpha = 125 desc = "My stomach is a graveyard! No living being can quench my bloodthirst!" tastes = list("muffin" = 3, "spookiness" = 1) - foodtypes = GRAIN | FRUIT | SUGAR | BREAKFAST + foodtypes = GRAIN|DAIRY|SUGAR|BREAKFAST|FRUIT crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/muffin/booberry/Initialize(mapload, starting_reagent_purity, no_base_reagents) @@ -44,7 +44,7 @@ base_icon_state = "moffin" desc = "A delicious and spongy little cake." tastes = list("muffin" = 3, "dust" = 1, "lint" = 1) - foodtypes = CLOTH | GRAIN | SUGAR | BREAKFAST + foodtypes = CLOTH|DAIRY|GRAIN|SUGAR|BREAKFAST crafting_complexity = FOOD_COMPLEXITY_2 /obj/item/food/muffin/moffin/Initialize(mapload) @@ -72,7 +72,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("waffles" = 1) - foodtypes = GRAIN | SUGAR | BREAKFAST + foodtypes = GRAIN|DAIRY|BREAKFAST w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -90,7 +90,7 @@ /datum/reagent/consumable/nutriment/protein = 4, ) tastes = list("waffles" = 7, "people" = 1) - foodtypes = GRAIN | MEAT + foodtypes = MEAT|GRAIN|DAIRY w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -104,7 +104,7 @@ /datum/reagent/consumable/nutriment/protein = 2, ) tastes = list("waffles" = 7, "the colour green" = 1) - foodtypes = GRAIN + foodtypes = VEGETABLES|GRAIN|DAIRY w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -119,7 +119,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("waffles" = 1, "mushrooms" = 1) - foodtypes = GRAIN | VEGETABLES | SUGAR | BREAKFAST + foodtypes = GRAIN|DAIRY|VEGETABLES|BREAKFAST w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -155,7 +155,7 @@ trash_type = /obj/item/paper/paperslip/fortune food_reagents = list(/datum/reagent/consumable/nutriment = 5) tastes = list("cookie" = 1) - foodtypes = GRAIN | SUGAR + foodtypes = GRAIN|SUGAR|DAIRY food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -187,7 +187,7 @@ /datum/reagent/consumable/sugar = 6, ) tastes = list("sweetness" = 1) - foodtypes = GRAIN | JUNKFOOD | SUGAR + foodtypes = GRAIN|DAIRY|JUNKFOOD|SUGAR crafting_complexity = FOOD_COMPLEXITY_2 /obj/item/food/cookie/sugar/Initialize(mapload, seasonal_changes = TRUE) @@ -206,7 +206,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("biscuit" = 3, "chocolate" = 1) - foodtypes = GRAIN | JUNKFOOD + foodtypes = JUNKFOOD|GRAIN|DAIRY|SUGAR w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -219,7 +219,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("cookie" = 2, "oat" = 1) - foodtypes = GRAIN + foodtypes = GRAIN|DAIRY crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/cookie/raisin @@ -231,7 +231,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("cookie" = 1, "raisins" = 1) - foodtypes = GRAIN | FRUIT + foodtypes = GRAIN|FRUIT|DAIRY|SUGAR crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/poppypretzel @@ -243,7 +243,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("pretzel" = 1) - foodtypes = GRAIN | SUGAR + foodtypes = GRAIN|DAIRY|SUGAR food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -257,7 +257,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("mushroom" = 1, "biscuit" = 1) - foodtypes = GRAIN | VEGETABLES + foodtypes = VEGETABLES|GRAIN|DAIRY food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -311,7 +311,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("cake" = 3, "cherry" = 1) - foodtypes = GRAIN | FRUIT | SUGAR + foodtypes = GRAIN|DAIRY|FRUIT|SUGAR food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -334,6 +334,9 @@ /datum/reagent/consumable/liquidelectricity/enriched = 3, ) tastes = list("cake" = 3, "caramel" = 2, "zap" = 1) + foodtypes = GRAIN|DAIRY|VEGETABLES|SUGAR + food_flags = FOOD_FINGER_FOOD + w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 crafted_food_buff = /datum/status_effect/food/trait/shockimmune @@ -346,7 +349,7 @@ /datum/reagent/consumable/honey = 6, ) tastes = list("pastry" = 1, "sweetness" = 1) - foodtypes = GRAIN | SUGAR + foodtypes = GRAIN|DAIRY|SUGAR w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -372,7 +375,7 @@ food_reagents = list(/datum/reagent/consumable/nutriment = 5) tastes = list("cream" = 2, "waffle" = 1) bite_consumption = 4 - foodtypes = DAIRY | SUGAR + foodtypes = DAIRY | SUGAR | GRAIN food_flags = FOOD_FINGER_FOOD crafting_complexity = FOOD_COMPLEXITY_2 max_volume = 10 //The max volumes scales up with the number of scoops of ice cream served. @@ -432,7 +435,7 @@ /datum/reagent/consumable/peanut_butter = 5, ) tastes = list("peanut butter" = 2, "cookie" = 1) - foodtypes = GRAIN | JUNKFOOD | NUTS + foodtypes = GRAIN|DAIRY|JUNKFOOD|NUTS crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/raw_brownie_batter @@ -445,7 +448,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("raw brownie batter" = 1) - foodtypes = GRAIN | JUNKFOOD | SUGAR | BREAKFAST + foodtypes = GRAIN|DAIRY|JUNKFOOD|SUGAR|BREAKFAST crafting_complexity = FOOD_COMPLEXITY_1 /obj/item/food/raw_brownie_batter/make_bakeable() @@ -461,7 +464,7 @@ /datum/reagent/consumable/sugar = 12, ) tastes = list("brownie" = 1, "chocolatey goodness" = 1) - foodtypes = GRAIN | JUNKFOOD | SUGAR + foodtypes = GRAIN|DAIRY|JUNKFOOD|SUGAR|BREAKFAST w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -478,7 +481,7 @@ /datum/reagent/consumable/sugar = 3, ) tastes = list("brownie" = 1, "chocolatey goodness" = 1) - foodtypes = GRAIN | JUNKFOOD | SUGAR + foodtypes = GRAIN|DAIRY|JUNKFOOD|SUGAR|BREAKFAST w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -493,7 +496,7 @@ /datum/reagent/consumable/peanut_butter = 4, ) tastes = list("raw brownie batter" = 1) - foodtypes = GRAIN | JUNKFOOD | SUGAR | NUTS + foodtypes = GRAIN|DAIRY|JUNKFOOD|SUGAR|BREAKFAST|NUTS crafting_complexity = FOOD_COMPLEXITY_1 /obj/item/food/peanut_butter_brownie_batter/make_bakeable() @@ -510,7 +513,7 @@ /datum/reagent/consumable/peanut_butter = 20, ) tastes = list("brownie" = 1, "chocolatey goodness" = 1, "peanut butter" = 1) - foodtypes = GRAIN | JUNKFOOD | SUGAR | NUTS + foodtypes = GRAIN|DAIRY|JUNKFOOD|SUGAR|BREAKFAST|NUTS w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -528,7 +531,7 @@ /datum/reagent/consumable/peanut_butter = 5, ) tastes = list("brownie" = 1, "chocolatey goodness" = 1) - foodtypes = GRAIN | JUNKFOOD | SUGAR + foodtypes = GRAIN|DAIRY|JUNKFOOD|SUGAR|BREAKFAST|NUTS w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -543,7 +546,7 @@ /datum/reagent/consumable/peanut_butter = 5, ) tastes = list("peanut butter" = 1, "peanuts" = 1, "cream" = 1) - foodtypes = GRAIN | JUNKFOOD | SUGAR | NUTS + foodtypes = GRAIN|DAIRY|JUNKFOOD|SUGAR|NUTS w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -591,7 +594,7 @@ icon_state = "thumbprint_cookie" food_reagents = list(/datum/reagent/consumable/nutriment = 6) tastes = list("cookie" = 2, "cherry jelly" = 3) - foodtypes = GRAIN | SUGAR | FRUIT + foodtypes = GRAIN|DAIRY|SUGAR|FRUIT food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 diff --git a/code/game/objects/items/food/pie.dm b/code/game/objects/items/food/pie.dm index fae0edd7a20..de9d7bb2c49 100644 --- a/code/game/objects/items/food/pie.dm +++ b/code/game/objects/items/food/pie.dm @@ -6,7 +6,7 @@ max_volume = 80 food_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 1) - foodtypes = GRAIN + foodtypes = GRAIN | DAIRY venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_2 /// type is spawned 5 at a time and replaces this pie when processed by cutting tool @@ -24,7 +24,7 @@ w_class = WEIGHT_CLASS_TINY food_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("pie" = 1, "uncertainty" = 1) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN | DAIRY crafting_complexity = FOOD_COMPLEXITY_2 /obj/item/food/pie/plain @@ -36,7 +36,6 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("pie" = 1) - foodtypes = GRAIN crafting_complexity = FOOD_COMPLEXITY_2 /obj/item/food/pie/plain/Initialize(mapload) @@ -47,14 +46,12 @@ name = "pie" desc = "A custom pie made by a crazed chef." icon_state = "pie_custom" - foodtypes = GRAIN slice_type = /obj/item/food/pieslice/empty /obj/item/food/pieslice/empty name = "pie slice" desc = "A custom pie slice made by a crazed chef." icon_state = "pie_custom_slice" - foodtypes = GRAIN /obj/item/food/pieslice/empty/Initialize(mapload) . = ..() @@ -70,7 +67,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("pie" = 1) - foodtypes = GRAIN | DAIRY | SUGAR + foodtypes = GRAIN|DAIRY|SUGAR|FRUIT var/stunning = TRUE crafting_complexity = FOOD_COMPLEXITY_3 @@ -99,7 +96,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("pie" = 1, "blackberries" = 1) - foodtypes = GRAIN | FRUIT | SUGAR + foodtypes = GRAIN|FRUIT|DAIRY|SUGAR venue_value = FOOD_PRICE_NORMAL crafting_complexity = FOOD_COMPLEXITY_3 @@ -113,7 +110,7 @@ /datum/reagent/consumable/nutriment/vitamin = 5, ) tastes = list("pie" = 1, "meat" = 1, "salmon" = 1) - foodtypes = GRAIN | SUGAR | MEAT | FRUIT + foodtypes = GRAIN|DAIRY|SUGAR|MEAT|FRUIT crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/pie/meatpie @@ -126,7 +123,7 @@ /datum/reagent/consumable/nutriment/protein = 2, ) tastes = list("pie" = 1, "meat" = 1) - foodtypes = GRAIN | MEAT + foodtypes = GRAIN|DAIRY|MEAT venue_value = FOOD_PRICE_NORMAL slice_type = /obj/item/food/pieslice/meatpie crafting_complexity = FOOD_COMPLEXITY_3 @@ -136,7 +133,7 @@ desc = "Oh nice, meat pie!" icon_state = "meatpie_slice" tastes = list("pie" = 1, "meat" = 1) - foodtypes = GRAIN | MEAT + foodtypes = GRAIN|DAIRY|MEAT crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/pie/tofupie @@ -149,7 +146,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("pie" = 1, "tofu" = 1) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN|DAIRY|VEGETABLES slice_type = /obj/item/food/pieslice/tofupie crafting_complexity = FOOD_COMPLEXITY_3 @@ -158,7 +155,7 @@ desc = "Oh nice, meat pie- WAIT A MINUTE!!" icon_state = "meatpie_slice" tastes = list("pie" = 1, "disappointment" = 1, "tofu" = 1) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN|DAIRY|VEGETABLES crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/pie/amanita_pie @@ -173,7 +170,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("pie" = 1, "mushroom" = 1) - foodtypes = GRAIN | VEGETABLES | TOXIC | GROSS + foodtypes = GRAIN|DAIRY|VEGETABLES|TOXIC|GROSS crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/pie/plump_pie @@ -185,7 +182,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("pie" = 1, "mushroom" = 1) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN|DAIRY|VEGETABLES crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/pie/plump_pie/Initialize(mapload) @@ -210,7 +207,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("pie" = 1, "meat" = 1, "acid" = 1) - foodtypes = GRAIN | MEAT + foodtypes = MEAT|GRAIN|DAIRY slice_type = /obj/item/food/pieslice/xemeatpie crafting_complexity = FOOD_COMPLEXITY_3 @@ -219,7 +216,7 @@ desc = "Oh god... Is that still moving?" icon_state = "xenopie_slice" tastes = list("pie" = 1, "acid" = 1, "meat" = 1) - foodtypes = GRAIN | MEAT + foodtypes = GRAIN|DAIRY|MEAT crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/pie/applepie @@ -231,7 +228,7 @@ /datum/reagent/consumable/nutriment/vitamin = 5, ) tastes = list("pie" = 1, "apple" = 1) - foodtypes = GRAIN | FRUIT | SUGAR + foodtypes = GRAIN|DAIRY|FRUIT|SUGAR slice_type = /obj/item/food/pieslice/apple crafting_complexity = FOOD_COMPLEXITY_3 @@ -240,7 +237,7 @@ desc = "A slice of comfy apple pie, warm autumn memories ahead." icon_state = "applepie_slice" tastes = list("pie" = 1, "apples" = 1) - foodtypes = GRAIN | FRUIT | SUGAR + foodtypes = GRAIN|DAIRY|FRUIT|SUGAR crafting_complexity = FOOD_COMPLEXITY_3 @@ -253,7 +250,7 @@ /datum/reagent/consumable/nutriment/vitamin = 5, ) tastes = list("pie" = 7, "Nicole Paige Brooks" = 2) - foodtypes = GRAIN | FRUIT | SUGAR + foodtypes = GRAIN|DAIRY|FRUIT|SUGAR slice_type = /obj/item/food/pieslice/cherry crafting_complexity = FOOD_COMPLEXITY_3 @@ -262,7 +259,7 @@ desc = "A slice of delicious cherry pie, I hope it's morellos!" icon_state = "cherrypie_slice" tastes = list("pie" = 1, "apples" = 1) - foodtypes = GRAIN | FRUIT | SUGAR + foodtypes = GRAIN|DAIRY|FRUIT|SUGAR crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/pie/pumpkinpie @@ -274,7 +271,7 @@ /datum/reagent/consumable/nutriment/vitamin = 5, ) tastes = list("pie" = 1, "pumpkin" = 1) - foodtypes = GRAIN | VEGETABLES | SUGAR + foodtypes = GRAIN|DAIRY|VEGETABLES|SUGAR slice_type = /obj/item/food/pieslice/pumpkin crafting_complexity = FOOD_COMPLEXITY_3 @@ -283,7 +280,7 @@ desc = "A slice of pumpkin pie, with whipped cream on top. Perfection." icon_state = "pumpkinpieslice" tastes = list("pie" = 1, "pumpkin" = 1) - foodtypes = GRAIN | VEGETABLES | SUGAR + foodtypes = GRAIN|DAIRY|VEGETABLES|SUGAR crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/pie/appletart @@ -296,7 +293,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("pie" = 1, "apple" = 1, "expensive metal" = 1) - foodtypes = GRAIN | FRUIT | SUGAR + foodtypes = GRAIN|DAIRY|FRUIT|SUGAR crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/pie/grapetart @@ -308,7 +305,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("pie" = 1, "grape" = 1) - foodtypes = GRAIN | FRUIT | SUGAR + foodtypes = GRAIN|DAIRY|FRUIT|SUGAR crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/pie/mimetart @@ -321,7 +318,7 @@ /datum/reagent/consumable/nothing = 10, ) tastes = list("nothing" = 3) - foodtypes = GRAIN + foodtypes = GRAIN|DAIRY|SUGAR crafted_food_buff = /datum/status_effect/food/trait/mute /obj/item/food/pie/berrytart @@ -333,7 +330,7 @@ /datum/reagent/consumable/nutriment/vitamin = 5, ) tastes = list("pie" = 1, "berries" = 2) - foodtypes = GRAIN | FRUIT + foodtypes = GRAIN|DAIRY|FRUIT|SUGAR /obj/item/food/pie/cocolavatart name = "chocolate lava tart" @@ -344,7 +341,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("pie" = 1, "dark chocolate" = 3) - foodtypes = GRAIN | SUGAR + foodtypes = GRAIN|DAIRY|SUGAR /obj/item/food/pie/blumpkinpie name = "blumpkin pie" @@ -355,7 +352,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("pie" = 1, "a mouthful of pool water" = 1) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN|DAIRY|VEGETABLES|SUGAR slice_type = /obj/item/food/pieslice/blumpkin crafting_complexity = FOOD_COMPLEXITY_3 @@ -364,7 +361,7 @@ desc = "A slice of blumpkin pie, with whipped cream on top. Is this edible?" icon_state = "blumpkinpieslice" tastes = list("pie" = 1, "a mouthful of pool water" = 1) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN|DAIRY|VEGETABLES|SUGAR crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/pie/dulcedebatata @@ -398,7 +395,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("mint" = 1, "pie" = 1) - foodtypes = GRAIN | FRUIT | SUGAR + foodtypes = GRAIN|DAIRY|FRUIT|SUGAR slice_type = /obj/item/food/pieslice/frostypie crafting_complexity = FOOD_COMPLEXITY_3 @@ -419,7 +416,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("nuts" = 1, "pie" = 1) - foodtypes = NUTS | SUGAR + foodtypes = GRAIN|DAIRY|SUGAR slice_type = /obj/item/food/pieslice/baklava yield = 6 crafting_complexity = FOOD_COMPLEXITY_4 @@ -429,7 +426,7 @@ desc = "A portion of a delightful healthy snack made of nut layers with thin bread" icon_state = "baklavaslice" tastes = list("nuts" = 1, "pie" = 1) - foodtypes = NUTS | SUGAR + foodtypes = GRAIN|DAIRY|SUGAR crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/pie/frenchsilkpie @@ -490,7 +487,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("pie" = 1, "the far off year of 2010" = 1) - foodtypes = GRAIN + foodtypes = GRAIN|DAIRY crafting_complexity = FOOD_COMPLEXITY_2 /obj/item/food/pie/bacid_pie @@ -502,7 +499,7 @@ /datum/reagent/consumable/liquidelectricity/enriched = 18 ) tastes = list("battery acid" = 2, "electricity" = 2, "a cyber world" = 2) - foodtypes = TOXIC + foodtypes = GRAIN|DAIRY|TOXIC slice_type = /obj/item/food/pieslice/bacid_pie yield = 4 crafting_complexity = FOOD_COMPLEXITY_3 diff --git a/code/game/objects/items/food/pizza.dm b/code/game/objects/items/food/pizza.dm index b3de33e9ecd..33aefddd187 100644 --- a/code/game/objects/items/food/pizza.dm +++ b/code/game/objects/items/food/pizza.dm @@ -296,8 +296,8 @@ /datum/reagent/medicine/omnizine = 10, /datum/reagent/consumable/nutriment/vitamin = 5, ) - tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1) - foodtypes = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD + tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "umami" = 1, "laziness" = 1) + foodtypes = GRAIN|VEGETABLES|DAIRY|JUNKFOOD slice_type = /obj/item/food/pizzaslice/donkpocket boxtag = "Bangin' Donk" crafting_complexity = FOOD_COMPLEXITY_3 @@ -305,7 +305,7 @@ /obj/item/food/pizza/donkpocket/raw name = "raw donkpocket pizza" icon_state = "donkpocketpizza_raw" - foodtypes = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD | RAW + foodtypes = GRAIN|VEGETABLES|DAIRY|JUNKFOOD|RAW slice_type = null /obj/item/food/pizza/donkpocket/raw/make_bakeable() @@ -315,8 +315,8 @@ name = "donkpocket pizza slice" desc = "Smells like donkpocket." icon_state = "donkpocketpizzaslice" - tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1) - foodtypes = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD + tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "umami" = 1, "laziness" = 1) + foodtypes = GRAIN|VEGETABLES|DAIRY|JUNKFOOD /obj/item/food/pizza/dank name = "dank pizza" @@ -458,12 +458,13 @@ tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pepperoni" = 2, "9 millimeter bullets" = 2) slice_type = /obj/item/food/pizzaslice/arnold boxtag = "9mm Pepperoni" + foodtypes = MEAT|GRAIN|DAIRY|VEGETABLES crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/pizza/arnold/raw name = "raw Arnold pizza" icon_state = "arnoldpizza_raw" - foodtypes = GRAIN | DAIRY | VEGETABLES | RAW + foodtypes = MEAT|GRAIN|DAIRY|VEGETABLES|RAW slice_type = null /obj/item/food/pizza/arnold/raw/make_bakeable() @@ -539,14 +540,14 @@ ) tastes = list("pure electricity" = 4, "pizza" = 2) slice_type = /obj/item/food/pizzaslice/energy - foodtypes = TOXIC + foodtypes = GRAIN|TOXIC boxtag = "24 Hour Energy" crafting_complexity = FOOD_COMPLEXITY_2 /obj/item/food/pizza/energy/raw name = "raw energy pizza" icon_state = "energypizza_raw" - foodtypes = TOXIC + foodtypes = GRAIN|TOXIC|RAW slice_type = null /obj/item/food/pizza/energy/raw/make_bakeable() @@ -557,7 +558,7 @@ desc = "You're thinking about using this to power your modsuit. You should avoid eating this if you aren't an Ethereal." icon_state ="energypizzaslice" tastes = list("pure electricity" = 4, "pizza" = 2) - foodtypes = TOXIC + foodtypes = GRAIN|TOXIC crafting_complexity = FOOD_COMPLEXITY_2 /obj/item/food/raw_meat_calzone @@ -570,7 +571,7 @@ /datum/reagent/consumable/nutriment/protein = 2, ) tastes = list("raw dough" = 1, "raw meat" = 1, "cheese" = 1, "tomato sauce" = 1) - foodtypes = GRAIN | RAW | DAIRY | MEAT + foodtypes = GRAIN|VEGETABLES|DAIRY|MEAT|RAW w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -587,7 +588,7 @@ /datum/reagent/consumable/nutriment/protein = 6, ) tastes = list("baked dough" = 1, "juicy meat" = 1, "melted cheese" = 1, "tomato sauce" = 1) - foodtypes = GRAIN | DAIRY | MEAT + foodtypes = GRAIN|VEGETABLES|DAIRY|MEAT w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 @@ -600,7 +601,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("raw dough" = 1, "vegetables" = 1, "tomato sauce" = 1) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN|VEGETABLES|RAW w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 diff --git a/code/game/objects/items/food/salad.dm b/code/game/objects/items/food/salad.dm index ed9c1ba545b..58dffd65a60 100644 --- a/code/game/objects/items/food/salad.dm +++ b/code/game/objects/items/food/salad.dm @@ -36,7 +36,7 @@ icon_state = "validsalad" food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/doctor_delight = 8, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("leaves" = 1, "potato" = 1, "meat" = 1, "valids" = 1) - foodtypes = VEGETABLES | MEAT | FRIED | FRUIT + foodtypes = VEGETABLES | MEAT | FRIED /obj/item/food/salad/fruit name = "fruit salad" @@ -44,7 +44,7 @@ icon_state = "fruitsalad" food_reagents = list(/datum/reagent/consumable/nutriment = 9, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("fruit" = 1) - foodtypes = FRUIT + foodtypes = FRUIT|ORANGES crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/salad/jungle @@ -129,7 +129,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("rice" = 1, "cheese" = 1) - foodtypes = GRAIN | DAIRY + foodtypes = GRAIN|DAIRY|VEGETABLES venue_value = FOOD_PRICE_EXOTIC crafting_complexity = FOOD_COMPLEXITY_3 @@ -143,7 +143,7 @@ /datum/reagent/consumable/nutriment/vitamin = 4, ) tastes = list("rice" = 1, "egg" = 1) - foodtypes = GRAIN | MEAT //EGG = MEAT -NinjaNomNom 2017 + foodtypes = MEAT|VEGETABLES|GRAIN crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/salad/edensalad @@ -266,7 +266,7 @@ /datum/reagent/consumable/nutriment = 14, ) tastes = list("healthy greens" = 2, "olive dressing" = 1, "feta cheese" = 1) - foodtypes = VEGETABLES | DAIRY + foodtypes = VEGETABLES|FRUIT|DAIRY crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/salad/caesar_salad @@ -303,7 +303,7 @@ /datum/reagent/consumable/nutriment/protein = 4, ) tastes = list("creamy potatoes" = 2, "eggs" = 2, "mayonnaise" = 1, "onions" = 1) - foodtypes = VEGETABLES | BREAKFAST + foodtypes = MEAT|VEGETABLES|BREAKFAST crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/salad/spinach_fruit_salad @@ -315,7 +315,7 @@ /datum/reagent/consumable/nutriment = 12, ) tastes = list("spinach" = 2, "berries" = 2, "pineapple" = 2, "dressing" = 1) - foodtypes = VEGETABLES | FRUIT + foodtypes = VEGETABLES|FRUIT|PINEAPPLE crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/salad/antipasto_salad @@ -328,5 +328,5 @@ /datum/reagent/consumable/nutriment/protein = 6, ) tastes = list("lettuce" = 2, "salami" = 2, "mozzarella cheese" = 2, "tomatoes" = 2, "dressing" = 1) - foodtypes = VEGETABLES | DAIRY | MEAT + foodtypes = MEAT|VEGETABLES|FRUIT|DAIRY crafting_complexity = FOOD_COMPLEXITY_4 diff --git a/code/game/objects/items/food/sandwichtoast.dm b/code/game/objects/items/food/sandwichtoast.dm index ebf934b341a..4c29252bd94 100644 --- a/code/game/objects/items/food/sandwichtoast.dm +++ b/code/game/objects/items/food/sandwichtoast.dm @@ -96,7 +96,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("butter" = 1, "toast" = 1) - foodtypes = GRAIN | BREAKFAST + foodtypes = GRAIN | BREAKFAST | DAIRY food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -119,7 +119,7 @@ /obj/item/food/jelliedtoast/slime food_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin/slimejelly = 8, /datum/reagent/consumable/nutriment/vitamin = 4) - foodtypes = GRAIN | TOXIC | SUGAR | BREAKFAST + foodtypes = GRAIN | TOXIC | BREAKFAST /obj/item/food/twobread name = "two bread" @@ -242,7 +242,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("bread" = 2, "Britain" = 1, "butter" = 1, "toast" = 1) - foodtypes = GRAIN + foodtypes = GRAIN|DAIRY crafting_complexity = FOOD_COMPLEXITY_2 /obj/item/food/sandwich/death @@ -255,7 +255,7 @@ /datum/reagent/consumable/nutriment/vitamin = 6, ) tastes = list("bread" = 1, "meat" = 1, "tomato sauce" = 1, "death" = 1) - foodtypes = GRAIN | MEAT + foodtypes = MEAT|VEGETABLES|GRAIN eat_time = 4 SECONDS // Makes it harder to force-feed this to people as a weapon, as funny as that is. var/static/list/correct_clothing = list(/obj/item/clothing/under/rank/civilian/cookjorts, /obj/item/clothing/under/shorts/jeanshorts) diff --git a/code/game/objects/items/food/snacks.dm b/code/game/objects/items/food/snacks.dm index deb222033ba..dfdd0e5bbe7 100644 --- a/code/game/objects/items/food/snacks.dm +++ b/code/game/objects/items/food/snacks.dm @@ -94,7 +94,7 @@ ) junkiness = 20 tastes = list("salt" = 1, "crisps" = 1) - foodtypes = JUNKFOOD | FRIED + foodtypes = VEGETABLES|JUNKFOOD|FRIED w_class = WEIGHT_CLASS_SMALL /obj/item/food/chips/make_leave_trash() diff --git a/code/game/objects/items/food/soup.dm b/code/game/objects/items/food/soup.dm index e1482b17a81..450893e2cfc 100644 --- a/code/game/objects/items/food/soup.dm +++ b/code/game/objects/items/food/soup.dm @@ -32,7 +32,7 @@ /datum/reagent/consumable/nutriment = 11, /datum/reagent/consumable/nutriment/vitamin = 2, ) - foodtypes = SUGAR | DAIRY + foodtypes = SUGAR | DAIRY | JUNKFOOD | GRAIN crafting_complexity = FOOD_COMPLEXITY_2 /obj/item/food/bowled/spacylibertyduff diff --git a/code/game/objects/items/food/sweets.dm b/code/game/objects/items/food/sweets.dm index fcd5707f013..7088c2fe275 100644 --- a/code/game/objects/items/food/sweets.dm +++ b/code/game/objects/items/food/sweets.dm @@ -128,7 +128,7 @@ /datum/reagent/consumable/sugar = 1, ) tastes = list("chocolate" = 3, "oranges" = 1) - foodtypes = JUNKFOOD | SUGAR | ORANGES + foodtypes = JUNKFOOD|FRUIT|SUGAR|ORANGES food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_2 @@ -143,7 +143,7 @@ /datum/reagent/consumable/coco = 1, ) tastes = list("chocolate" = 1) - foodtypes = DAIRY | JUNKFOOD | SUGAR + foodtypes = JUNKFOOD|SUGAR food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_TINY @@ -176,7 +176,7 @@ /datum/reagent/consumable/nutriment/vitamin = 3, ) tastes = list("chocolate" = 1, "peanuts" = 1) - foodtypes = DAIRY | SUGAR | JUNKFOOD | NUTS + foodtypes = SUGAR|JUNKFOOD|NUTS crafting_complexity = FOOD_COMPLEXITY_1 /obj/item/food/bonbon/peanut_butter_cup @@ -188,7 +188,7 @@ /datum/reagent/consumable/nutriment/vitamin = 3, ) tastes = list("chocolate" = 1, "peanut butter" = 1) - foodtypes = DAIRY | SUGAR | JUNKFOOD | NUTS + foodtypes = SUGAR|JUNKFOOD|NUTS crafting_complexity = FOOD_COMPLEXITY_1 // Gum @@ -342,7 +342,7 @@ /datum/reagent/medicine/omnizine = 2, ) //lollipop, but vitamins = toxins tastes = list("cobwebs" = 1, "sugar" = 2) - foodtypes = JUNKFOOD | SUGAR | BUGS + foodtypes = JUNKFOOD|SUGAR|MEAT|BUGS food_flags = FOOD_FINGER_FOOD slot_flags = ITEM_SLOT_MASK crafting_complexity = FOOD_COMPLEXITY_1 diff --git a/code/game/objects/items/food/vegetables.dm b/code/game/objects/items/food/vegetables.dm index 8c0962106b1..000ada0907c 100644 --- a/code/game/objects/items/food/vegetables.dm +++ b/code/game/objects/items/food/vegetables.dm @@ -126,7 +126,7 @@ /datum/reagent/consumable/nutriment/vitamin = 2, ) tastes = list("fries" = 3, "cheese" = 1) - foodtypes = VEGETABLES | DAIRY + foodtypes = VEGETABLES|DAIRY|FRIED w_class = WEIGHT_CLASS_SMALL venue_value = FOOD_PRICE_CHEAP preserved_food = TRUE @@ -158,7 +158,7 @@ icon_state = "poutine" food_reagents = list(/datum/reagent/consumable/nutriment = 7) tastes = list("potato" = 3, "gravy" = 1, "squeaky cheese" = 1) - foodtypes = VEGETABLES | FRIED | MEAT + foodtypes = VEGETABLES|DAIRY|FRIED|MEAT w_class = WEIGHT_CLASS_SMALL venue_value = FOOD_PRICE_CHEAP preserved_food = TRUE diff --git a/code/game/objects/items/granters/martial_arts/_martial_arts.dm b/code/game/objects/items/granters/martial_arts/_martial_arts.dm index b7d186c99c0..bc61c9ad802 100644 --- a/code/game/objects/items/granters/martial_arts/_martial_arts.dm +++ b/code/game/objects/items/granters/martial_arts/_martial_arts.dm @@ -6,10 +6,12 @@ /// The text given to the user when they learn the martial arts var/greet = "" -/obj/item/book/granter/martial/can_learn(mob/user) +/obj/item/book/granter/martial/can_learn(mob/living/user) if(!martial) CRASH("Someone attempted to learn [type], which did not have a martial arts set.") - if(istype(user.mind?.martial_art, martial)) + if(!isliving(user)) + return FALSE + if(locate(martial) in user.martial_arts) to_chat(user, span_warning("You already know [martial_name]!")) return FALSE return TRUE @@ -19,12 +21,14 @@ return TRUE /obj/item/book/granter/martial/on_reading_finished(mob/user) - var/datum/martial_art/martial_to_learn = new martial() - if(!martial_to_learn.teach(user)) - to_chat(user, span_warning("You attempt to learn [martial_name] from [src], \ - but your current knowledge of martial arts conflicts with the new style, so it just doesn't stick with you.")) - uses += 1 // Return the use - return + if(user.mind) + if(!user.mind.AddComponent(/datum/component/mindbound_martial_arts, martial)) + to_chat(user, span_warning("You attempt to learn [martial_name] from [src], but it doesn't stick.")) + uses += 1 // Return the use + return + else + var/datum/martial_art/martial_art = new martial(user) + martial_art.teach(user) to_chat(user, "[greet]") - user.log_message("learned the martial art [martial_name] ([martial_to_learn])", LOG_ATTACK, color = "orange") + user.log_message("learned the martial art [martial_name] ([martial])", LOG_ATTACK, color = "orange") diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 93af52924c2..a3cffcaeffc 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -9,7 +9,7 @@ /// Which stage of construction this grenade is currently at. var/stage = GRENADE_EMPTY /// The set of reagent containers that have been added to this grenade casing. - var/list/obj/item/reagent_containers/cup/beakers = list() + var/list/obj/item/beakers = list() /// The types of reagent containers that can be added to this grenade casing. var/list/allowed_containers = list(/obj/item/reagent_containers/cup/beaker, /obj/item/reagent_containers/cup/bottle) /// The types of reagent containers that can't be added to this grenade casing. @@ -24,15 +24,15 @@ var/threatscale = 1 /// The description when examining empty casings. var/casedesc = "This basic model accepts both beakers and bottles. It heats contents by 10 K upon ignition." - /// Whether or not the grenade is currently acting as a landmine. Currently broken and not my current project. + /// Whether or not the grenade is currently acting as a landmine. var/obj/item/assembly/prox_sensor/landminemode = null /obj/item/grenade/chem_grenade/Initialize(mapload) . = ..() AddElement(/datum/element/empprotection, EMP_PROTECT_WIRES) create_reagents(casing_holder_volume) - stage_change() // If no argument is set, it will change the stage to the current stage, useful for stock grenades that start READY. set_wires(new /datum/wires/explosive/chem_grenade(src)) + update_appearance() /obj/item/grenade/chem_grenade/Destroy(force) QDEL_NULL(landminemode) @@ -48,162 +48,186 @@ /obj/item/grenade/chem_grenade/examine(mob/user) display_timer = (stage == GRENADE_READY) //show/hide the timer based on assembly state . = ..() - if(user.can_see_reagents()) - if(beakers.len) - . += span_notice("You scan the grenade and detect the following reagents:") - for(var/obj/item/reagent_containers/cup/glass_beaker in beakers) - for(var/datum/reagent/reagent in glass_beaker.reagents.reagent_list) - . += span_notice("[reagent.volume] units of [reagent.name] in \the [glass_beaker].") - if(beakers.len == 1) - . += span_notice("You detect no second beaker in the grenade.") - else - . += span_notice("You scan the grenade, but detect nothing.") - else if(stage != GRENADE_READY && beakers.len) - if(beakers.len == 2 && beakers[1].name == beakers[2].name) + if (!user.can_see_reagents()) + if (stage == GRENADE_READY || !(length(beakers))) + return + if (length(beakers) == 2 && beakers[1].name == beakers[2].name) . += span_notice("You see two [beakers[1].name]s inside the grenade.") - else - for(var/obj/item/reagent_containers/cup/glass_beaker in beakers) - . += span_notice("You see a [glass_beaker.name] inside the grenade.") + return + + for (var/obj/item/beaker as anything in beakers) + . += span_notice("You see a [beaker.name] inside the grenade.") + + if (!length(beakers)) + . += span_notice("You scan the grenade, but detect nothing.") + return + + . += span_notice("You scan the grenade and detect the following reagents:") + + for (var/obj/item/beaker as anything in beakers) + for (var/datum/reagent/reagent in beaker.reagents.reagent_list) + . += span_notice("[reagent.volume] units of [reagent.name] in \the [beaker].") + + if (length(beakers) == 1) + . += span_notice("You detect no second beaker in the grenade.") /obj/item/grenade/chem_grenade/update_name(updates) - switch(stage) - if(GRENADE_EMPTY) + switch (stage) + if (GRENADE_EMPTY) name = "[initial(name)] casing" - if(GRENADE_WIRED) + if (GRENADE_WIRED) name = "unsecured [initial(name)]" - if(GRENADE_READY) + if (GRENADE_READY) name = initial(name) return ..() /obj/item/grenade/chem_grenade/update_desc(updates) - switch(stage) - if(GRENADE_EMPTY) + switch (stage) + if (GRENADE_EMPTY) desc = "A do it yourself [initial(name)]! [initial(casedesc)]" - if(GRENADE_WIRED) + if (GRENADE_WIRED) desc = "An unsecured [initial(name)] assembly." - if(GRENADE_READY) + if (GRENADE_READY) desc = initial(desc) return ..() /obj/item/grenade/chem_grenade/update_icon_state() - if(active) + if (active) icon_state = "[base_icon_state]_active" return ..() - switch(stage) - if(GRENADE_EMPTY) + switch (stage) + if (GRENADE_EMPTY) icon_state = base_icon_state - if(GRENADE_WIRED) + if (GRENADE_WIRED) icon_state = "[base_icon_state]_ass" - if(GRENADE_READY) + if (GRENADE_READY) icon_state = "[base_icon_state]_locked" return ..() /obj/item/grenade/chem_grenade/attack_self(mob/user) - if(stage == GRENADE_READY && !active) - ..() - if(stage == GRENADE_WIRED) + if (stage == GRENADE_READY && !active) + return ..() + + if (stage == GRENADE_WIRED) wires.interact(user) /obj/item/grenade/chem_grenade/screwdriver_act(mob/living/user, obj/item/tool) - . = TRUE - if(dud_flags & GRENADE_USED) + if (dud_flags & GRENADE_USED) balloon_alert(user, "resetting trigger...") - if (do_after(user, 2 SECONDS, src)) - balloon_alert(user, "trigger reset") - dud_flags &= ~GRENADE_USED - return + if (!do_after(user, 2 SECONDS, src)) + return ITEM_INTERACT_BLOCKING - if(stage == GRENADE_WIRED) - if(beakers.len) + balloon_alert(user, "trigger reset") + dud_flags &= ~GRENADE_USED + return ITEM_INTERACT_SUCCESS + + if (stage == GRENADE_WIRED) + if (length(beakers)) stage_change(GRENADE_READY) to_chat(user, span_notice("You lock the [initial(name)] assembly.")) tool.play_tool_sound(src, 25) - else if(landminemode) - landminemode.timing = FALSE - if(!landminemode.secured) - landminemode.toggle_secure() - landminemode.toggle_scan(FALSE) - to_chat(user, span_notice("You disarm \the [landminemode].")) - tool.play_tool_sound(src, 25) - else - to_chat(user, span_warning("You need to add at least one beaker before locking the [initial(name)] assembly!")) - else if(stage == GRENADE_READY) - det_time = det_time == 50 ? 30 : 50 //toggle between 30 and 50 - if(landminemode) - landminemode.time = det_time * 0.1 //overwrites the proxy sensor activation timer - tool.play_tool_sound(src, 25) - to_chat(user, span_notice("You modify the time delay. It's set for [DisplayTimeText(det_time)].")) - else - to_chat(user, span_warning("You need to add a wire!")) + return ITEM_INTERACT_SUCCESS + if (!landminemode || !(landminemode.scanning || landminemode.timing)) + to_chat(user, span_warning("You need to add at least one beaker before locking the [initial(name)] assembly!")) + return ITEM_INTERACT_BLOCKING + + landminemode.timing = FALSE + landminemode.toggle_scan(FALSE) + to_chat(user, span_notice("You disarm \the [landminemode].")) + tool.play_tool_sound(src, 25) + return ITEM_INTERACT_SUCCESS + + if (stage != GRENADE_READY) + to_chat(user, span_warning("You need to add a wire!")) + return ITEM_INTERACT_BLOCKING + + det_time = det_time == 5 SECONDS ? 3 SECONDS : 5 SECONDS + if (landminemode) + landminemode.time = det_time * 0.1 //overwrites the proxy sensor activation timer + + tool.play_tool_sound(src, 25) + to_chat(user, span_notice("You modify the time delay. It's set for [DisplayTimeText(det_time)].")) return TRUE /obj/item/grenade/chem_grenade/wirecutter_act(mob/living/user, obj/item/tool) - if(stage == GRENADE_READY && !active) - tool.play_tool_sound(src) - stage_change(GRENADE_WIRED) - to_chat(user, span_notice("You unlock the [initial(name)] assembly.")) - return TRUE + if (stage != GRENADE_READY || active) + return NONE + + tool.play_tool_sound(src) + stage_change(GRENADE_WIRED) + to_chat(user, span_notice("You unlock the [initial(name)] assembly.")) + return TRUE /obj/item/grenade/chem_grenade/wrench_act(mob/living/user, obj/item/tool) - if(stage != GRENADE_WIRED) - return FALSE - if(beakers.len) - for(var/obj/beaker in beakers) - beaker.forceMove(drop_location()) - if(!beaker.reagents) - continue - var/reagent_list = pretty_string_from_reagent_list(beaker.reagents.reagent_list) - user.log_message("removed [beaker] ([reagent_list]) from [src]", LOG_GAME) - beakers = list() - to_chat(user, span_notice("You open the [initial(name)] assembly and remove the payload.")) - return - tool.play_tool_sound(src) - wires.detach_assembly(wires.get_wire(1)) - new /obj/item/stack/cable_coil(get_turf(src), 1) - stage_change(GRENADE_EMPTY) - to_chat(user, span_notice("You remove the activation mechanism from the [initial(name)] assembly.")) + if (stage != GRENADE_WIRED) + return NONE -/obj/item/grenade/chem_grenade/attackby(obj/item/item, mob/user, params) - if(isassembly(item) && stage == GRENADE_WIRED) + if (!length(beakers)) + tool.play_tool_sound(src) + wires.detach_assembly(wires.get_wire(1)) + new /obj/item/stack/cable_coil(get_turf(src), 1) + stage_change(GRENADE_EMPTY) + to_chat(user, span_notice("You remove the activation mechanism from the [initial(name)] assembly.")) + return ITEM_INTERACT_SUCCESS + + to_chat(user, span_notice("You open the [initial(name)] assembly and remove the payload.")) + for(var/obj/item/beaker as anything in beakers) + beaker.forceMove(drop_location()) + if(!beaker.reagents) + continue + var/reagent_list = pretty_string_from_reagent_list(beaker.reagents.reagent_list) + user.log_message("removed [beaker] ([reagent_list]) from [src]", LOG_GAME) + return ITEM_INTERACT_SUCCESS + +/obj/item/grenade/chem_grenade/item_interaction(mob/living/user, obj/item/item, list/modifiers) + if (isassembly(item) && stage == GRENADE_WIRED) wires.interact(user) - else if(stage == GRENADE_WIRED && is_type_in_list(item, allowed_containers)) - . = TRUE //no afterattack - if(is_type_in_list(item, banned_containers)) - to_chat(user, span_warning("[src] is too small to fit [item]!")) // this one hits home huh anon? - return - if(beakers.len == 2) - to_chat(user, span_warning("[src] can not hold more containers!")) - return - else - if(item.reagents.total_volume) - if(!user.transferItemToLoc(item, src)) - return - to_chat(user, span_notice("You add [item] to the [initial(name)] assembly.")) - beakers += item - var/reagent_list = pretty_string_from_reagent_list(item.reagents.reagent_list) - user.log_message("inserted [item] ([reagent_list]) into [src]", LOG_GAME) - else - to_chat(user, span_warning("[item] is empty!")) + return ITEM_INTERACT_SUCCESS - else if(stage == GRENADE_EMPTY && istype(item, /obj/item/stack/cable_coil)) + if (stage == GRENADE_EMPTY && istype(item, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/coil = item - if (coil.use(1)) - det_time = 50 // In case the cable_coil was removed and readded. - stage_change(GRENADE_WIRED) - to_chat(user, span_notice("You rig the [initial(name)] assembly.")) - else + if (!coil.use(1)) to_chat(user, span_warning("You need one length of coil to wire the assembly!")) - return - else - return ..() + return ITEM_INTERACT_BLOCKING -/obj/item/grenade/chem_grenade/proc/stage_change(N) - if(N) - stage = N + det_time = 5 SECONDS // In case the cable_coil was removed and readded. + stage_change(GRENADE_WIRED) + to_chat(user, span_notice("You rig the [initial(name)] assembly.")) + return ITEM_INTERACT_SUCCESS + + if (stage != GRENADE_WIRED) + return NONE + + if (!is_type_in_list(item, allowed_containers)) + return NONE + + if(is_type_in_list(item, banned_containers)) + to_chat(user, span_warning("[src] is too small to fit [item]!")) // this one hits home huh anon? + return ITEM_INTERACT_BLOCKING + + if (length(beakers) == 2) + to_chat(user, span_warning("[src] can not hold more containers!")) + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(item, src)) + return ITEM_INTERACT_BLOCKING + + to_chat(user, span_notice("You add [item] to the [initial(name)] assembly.")) + beakers += item + var/reagent_list = pretty_string_from_reagent_list(item.reagents.reagent_list) + user.log_message("inserted [item] ([reagent_list]) into [src]", LOG_GAME) + return ITEM_INTERACT_SUCCESS + +/obj/item/grenade/chem_grenade/Exited(atom/movable/gone, direction) + . = ..() + beakers -= gone + +/obj/item/grenade/chem_grenade/proc/stage_change(new_stage) + stage = new_stage update_appearance() /obj/item/grenade/chem_grenade/on_found(mob/finder) @@ -213,10 +237,10 @@ /obj/item/grenade/chem_grenade/log_grenade(mob/user) var/reagent_string = "" var/beaker_number = 1 - for(var/obj/exploded_beaker in beakers) - if(!exploded_beaker.reagents) - continue - reagent_string += " ([exploded_beaker.name] [beaker_number++] : " + pretty_string_from_reagent_list(exploded_beaker.reagents.reagent_list) + ");" + for(var/obj/item/exploded_beaker as anything in beakers) + if (exploded_beaker.reagents) + reagent_string += " ([exploded_beaker.name] [beaker_number++] : " + pretty_string_from_reagent_list(exploded_beaker.reagents.reagent_list) + ");" + if(landminemode) log_bomber(user, "activated a proxy", src, "containing:[reagent_string]", message_admins = !dud_flags) else @@ -224,10 +248,10 @@ /obj/item/grenade/chem_grenade/arm_grenade(mob/user, delayoverride, msg = TRUE, volume = 60) log_grenade(user) //Inbuilt admin procs already handle null users - if(user) + if (user) add_fingerprint(user) - if(msg) - if(landminemode) + if (msg) + if (landminemode) to_chat(user, span_warning("You prime [src], activating its proximity sensor.")) else to_chat(user, span_warning("You prime [src]! [DisplayTimeText(det_time)]!")) @@ -235,10 +259,11 @@ active = TRUE update_icon_state() playsound(src, grenade_arm_sound, volume, grenade_sound_vary) - if(landminemode) + if (landminemode) + landminemode.toggle_scan(FALSE) // Ensures that if it was turned on before for some reason, it doesn't get turned off landminemode.activate() - return - addtimer(CALLBACK(src, PROC_REF(detonate)), isnull(delayoverride)? det_time : delayoverride) + else + addtimer(CALLBACK(src, PROC_REF(detonate)), isnull(delayoverride)? det_time : delayoverride) /obj/item/grenade/chem_grenade/detonate(mob/living/lanced_by) if(stage != GRENADE_READY) @@ -249,8 +274,8 @@ return var/list/datum/reagents/reactants = list() - for(var/obj/item/reagent_containers/cup/glass_beaker in beakers) - reactants += glass_beaker.reagents + for(var/obj/item/beaker as anything in beakers) + reactants += beaker.reagents var/turf/detonation_turf = get_turf(src) if (chem_splash(detonation_turf, reagents, affected_area, reactants, ignition_temp, threatscale)) @@ -260,7 +285,6 @@ active = FALSE update_appearance() - //Large chem grenades accept slime cores and use the appropriately. /obj/item/grenade/chem_grenade/large name = "large grenade" @@ -268,7 +292,7 @@ casedesc = "This casing affects a larger area than the basic model and can fit exotic containers, including slime cores and bluespace beakers. Heats contents by 25 K upon ignition." icon_state = "large_grenade" base_icon_state = "large_grenade" - allowed_containers = list(/obj/item/reagent_containers/cup, /obj/item/reagent_containers/condiment, /obj/item/reagent_containers/cup/glass) + allowed_containers = list(/obj/item/reagent_containers/cup, /obj/item/reagent_containers/condiment, /obj/item/reagent_containers/cup/glass, /obj/item/slime_extract) banned_containers = list() affected_area = 5 ignition_temp = 25 // Large grenades are slightly more effective at setting off heat-sensitive mixtures than smaller grenades. @@ -280,7 +304,6 @@ update_appearance() return FALSE - var/extract_total_volume = 0 var/extract_maximum_volume = 0 var/list/extracts = list() @@ -292,18 +315,18 @@ if(!thing.reagents) continue - if(istype(thing, /obj/item/slime_extract)) - var/obj/item/slime_extract/extract = thing - if(!extract.extract_uses) - continue - - extract_total_volume += extract.reagents.total_volume - extract_maximum_volume += extract.reagents.maximum_volume - extracts += extract - else + if(!istype(thing, /obj/item/slime_extract)) beaker_total_volume += thing.reagents.total_volume other_containers += thing + continue + var/obj/item/slime_extract/extract = thing + if(!extract.extract_uses) + continue + + extract_total_volume += extract.reagents.total_volume + extract_maximum_volume += extract.reagents.maximum_volume + extracts += extract var/available_extract_volume = extract_maximum_volume - extract_total_volume if(beaker_total_volume <= 0 || available_extract_volume <= 0) @@ -325,18 +348,6 @@ return ..() - //I tried to just put it in the allowed_containers list but - //if you do that it must have reagents. If you're going to - //make a special case you might as well do it explicitly. -Sayu -/obj/item/grenade/chem_grenade/large/attackby(obj/item/item, mob/user, params) - if(!istype(item, /obj/item/slime_extract) || stage != GRENADE_WIRED) - return ..() - - if(!user.transferItemToLoc(item, src)) - return - to_chat(user, span_notice("You add [item] to the [initial(name)] assembly.")) - beakers += item - /obj/item/grenade/chem_grenade/cryo // Intended for rare cryogenic mixes. Cools the area moderately upon detonation. name = "cryo grenade" desc = "A custom made cryogenic grenade. Rapidly cools contents upon ignition." @@ -364,13 +375,15 @@ /obj/item/grenade/chem_grenade/adv_release/multitool_act(mob/living/user, obj/item/tool) if (active) - return + return ITEM_INTERACT_BLOCKING + var/newspread = tgui_input_number(user, "Please enter a new spread amount", "Grenade Spread", 5, 100, 5) if(!newspread || QDELETED(user) || QDELETED(src) || !usr.can_perform_action(src, FORBID_TELEKINESIS_REACH)) - return + return ITEM_INTERACT_BLOCKING + unit_spread = newspread to_chat(user, span_notice("You set the time release to [unit_spread] units per detonation.")) - ..() + return ..() /obj/item/grenade/chem_grenade/adv_release/detonate(mob/living/lanced_by) if(stage != GRENADE_READY || dud_flags) @@ -381,10 +394,12 @@ var/total_volume = 0 for(var/obj/item/reagent_containers/reagent_container in beakers) total_volume += reagent_container.reagents.total_volume + if(!total_volume) active = FALSE update_appearance() return + var/fraction = unit_spread/total_volume var/datum/reagents/reactants = new(unit_spread) reactants.my_atom = src @@ -395,18 +410,13 @@ threatscale, no_react = TRUE ) - chem_splash(get_turf(src), reagents, affected_area, list(reactants), ignition_temp, threatscale) var/turf/detonated_turf = get_turf(src) + chem_splash(detonated_turf, reagents, affected_area, list(reactants), ignition_temp, threatscale) addtimer(CALLBACK(src, PROC_REF(detonate)), det_time) log_game("A grenade detonated at [AREACOORD(detonated_turf)]") - - - -////////////////////////////// -////// PREMADE GRENADES ////// -////////////////////////////// +// Premade grenades /obj/item/grenade/chem_grenade/metalfoam name = "metal foam grenade" diff --git a/code/game/objects/items/grenades/hypno.dm b/code/game/objects/items/grenades/hypno.dm index 0d7601df204..d77049419ab 100644 --- a/code/game/objects/items/grenades/hypno.dm +++ b/code/game/objects/items/grenades/hypno.dm @@ -52,7 +52,7 @@ living_mob.Paralyze(10) living_mob.Knockdown(100) to_chat(living_mob, span_hypnophrase("The sound echoes in your brain...")) - living_mob.adjust_hallucinations(100 SECONDS) + living_mob.adjust_hallucinations(150 SECONDS) else if(distance <= 1) @@ -60,7 +60,7 @@ living_mob.Knockdown(30) if(hypno_sound) to_chat(living_mob, span_hypnophrase("The sound echoes in your brain...")) - living_mob.adjust_hallucinations(100 SECONDS) + living_mob.adjust_hallucinations(150 SECONDS) //Flash if(living_mob.flash_act(affect_silicon = 1)) diff --git a/code/game/objects/items/implants/implant_krav_maga.dm b/code/game/objects/items/implants/implant_krav_maga.dm index 4d921269beb..5dd821a683d 100644 --- a/code/game/objects/items/implants/implant_krav_maga.dm +++ b/code/game/objects/items/implants/implant_krav_maga.dm @@ -3,6 +3,7 @@ desc = "Teaches you the arts of Krav Maga in 5 short instructional videos beamed directly into your eyeballs." icon = 'icons/obj/scrolls.dmi' icon_state ="scroll2" + /// The martial art style this implant teaches. var/datum/martial_art/krav_maga/style /obj/item/implant/krav_maga/get_data() @@ -15,8 +16,7 @@ /obj/item/implant/krav_maga/Initialize(mapload) . = ..() - style = new() - style.allow_temp_override = FALSE + style = new(src) /obj/item/implant/krav_maga/Destroy() QDEL_NULL(style) @@ -26,10 +26,10 @@ . = ..() if(isnull(imp_in.mind)) return - if(style.fully_remove(imp_in)) + if(style.unlearn(imp_in)) return - style.teach(imp_in, TRUE) + style.teach(imp_in) /obj/item/implanter/krav_maga name = "implanter (krav maga)" diff --git a/code/game/objects/items/mail.dm b/code/game/objects/items/mail.dm index 1e414ca68da..d8659732e24 100644 --- a/code/game/objects/items/mail.dm +++ b/code/game/objects/items/mail.dm @@ -82,22 +82,22 @@ for(var/stamp in stamps) var/image/stamp_image = image( icon = icon, - icon_state = stamp, - pixel_x = stamp_offset_x, - pixel_y = stamp_offset_y + bonus_stamp_offset + icon_state = stamp ) - stamp_image.appearance_flags |= RESET_COLOR + stamp_image.pixel_w = pixel_w = stamp_offset_x + stamp_image.pixel_z = stamp_offset_y + bonus_stamp_offset + stamp_image.appearance_flags |= RESET_COLOR|KEEP_APART bonus_stamp_offset -= 5 . += stamp_image if(postmarked == TRUE) var/image/postmark_image = image( icon = icon, - icon_state = "postmark", - pixel_x = stamp_offset_x + rand(-3, 1), - pixel_y = stamp_offset_y + rand(bonus_stamp_offset + 3, 1) + icon_state = "postmark" ) - postmark_image.appearance_flags |= RESET_COLOR + postmark_image.pixel_w = stamp_offset_x + rand(-3, 1) + postmark_image.pixel_z = stamp_offset_y + rand(bonus_stamp_offset + 3, 1) + postmark_image.appearance_flags |= RESET_COLOR|KEEP_APART . += postmark_image /obj/item/mail/attackby(obj/item/W, mob/user, params) @@ -252,8 +252,10 @@ base_icon_state = "mail" can_install_electronics = FALSE lid_icon_state = "maillid" - lid_x = -26 - lid_y = 2 + lid_w = -26 + lid_z = 2 + weld_w = 1 + weld_z = 4 paint_jobs = null ///if it'll show the nt mark on the crate var/postmarked = TRUE diff --git a/code/game/objects/items/melee/baton.dm b/code/game/objects/items/melee/baton.dm index 946a9e47eae..5e84c16ffd8 100644 --- a/code/game/objects/items/melee/baton.dm +++ b/code/game/objects/items/melee/baton.dm @@ -86,7 +86,7 @@ readout += "\n[active ? "It is currently [span_warning("[activated_word]")], and capable of stunning." : "It is [span_warning("not [activated_word]")], and not capable of stunning."]" if(stamina_damage <= 0) // The advanced baton actually does have 0 stamina damage so...yeah. - readout += "Either is is [span_warning("completely unable to perform a stunning strike")], or it [span_warning("attacks via some unusual method")]." + readout += "Either it is [span_warning("completely unable to perform a stunning strike")], or it [span_warning("attacks via some unusual method")]." return readout.Join("\n") readout += "It takes [span_warning("[HITS_TO_CRIT(stamina_damage)] strike\s")] to stun an enemy." @@ -984,3 +984,56 @@ else stuff_in_hand.forceMove(user.drop_location()) stuff_in_hand.loc.visible_message(span_warning("[stuff_in_hand] suddenly appears!")) + + +/obj/item/melee/baton/nunchaku + name = "Syndie Fitness Nunchuks" + desc = "The most common fitness equipment in the entire syndicate, titanium rods weigh strictly 13 pounds" + desc_controls = "Left click to stun, right click to harm. Throw mode counterattack any melee/throwable attacks." + icon_state = "nunchaku" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + inhand_icon_state = "nunchaku" + worn_icon_state = "nunchaku" + attack_verb_continuous = list("beats", "whips", "smashes", "punishes") + attack_verb_simple = list("beat", "whip", "smash", "punish") + hitsound = 'sound/items/weapons/chainhit.ogg' + block_sound = 'sound/items/weapons/block_shield.ogg' + slot_flags = ITEM_SLOT_BELT + cooldown = CLICK_CD_MELEE + knockdown_time = 0.25 SECONDS + demolition_mod = 1.5 + stamina_damage = 30 // 4 hit stamcrit + stun_armour_penetration = 30 // bronze-silver telescopic + force = 16 // 7 hit crit + bare_wound_bonus = 5 + +/obj/item/melee/baton/nunchaku/proc/randomize_state() + icon_state = pick(list("nunchaku", "nunchaku_x", "nunchaku_y")) + update_appearance() + +/obj/item/melee/baton/nunchaku/after_throw(datum/callback/callback) + . = ..() + randomize_state() + +/obj/item/melee/baton/nunchaku/afterattack(atom/target, mob/user, click_parameters) + . = ..() + randomize_state() + +/obj/item/melee/baton/nunchaku/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text, final_block_chance, damage, attack_type, damage_type) + if(attack_type == PROJECTILE_ATTACK || !owner.throw_mode) + return ..() + + randomize_state() + + // blocks any melee/throwable attacks + owner.adjustStaminaLoss(5) + final_block_chance = 100 + + // counterattack at melee + if(attack_type in list(MELEE_ATTACK, UNARMED_ATTACK, LEAP_ATTACK)) + var/mob/living/attacker = GET_ASSAILANT(hitby) + playsound(src, pick(list('sound/items/weapons/cqchit2.ogg', 'sound/items/weapons/cqchit1.ogg')), 70, FALSE) + melee_attack_chain(owner, attacker, LEFT_CLICK) + + return ..() diff --git a/code/game/objects/items/piggy_bank.dm b/code/game/objects/items/piggy_bank.dm index b6294dbc4dd..8b0af071fa4 100644 --- a/code/game/objects/items/piggy_bank.dm +++ b/code/game/objects/items/piggy_bank.dm @@ -49,14 +49,41 @@ SSticker.OnRoundend(persistence_cb) if(initial_value && initial_value + calculate_dosh_amount() <= maximum_value) - new /obj/item/holochip(src, initial_value) + var/obj/item/holochip/chip = locate() in src + if(!chip) + new /obj/item/holochip(src, initial_value) + else + chip.credits += initial_value + chip.update_appearance() if(maximum_savings_per_shift) maximum_value = calculate_dosh_amount() + maximum_savings_per_shift /obj/item/piggy_bank/proc/save_cash() + sanitize_piggy_bank_contents_len() SSpersistence.save_piggy_bank(src) +#define MAXIMUM_PIGGY_BANK_CONTENTS_LENGTH 35 + +///This prevents the piggy bank from becoming laggy as hell if broken with hundred upon hundreds of chips inside it. +/obj/item/piggy_bank/proc/sanitize_piggy_bank_contents_len() + var/contents_len = length(contents) + if(contents_len <= MAXIMUM_PIGGY_BANK_CONTENTS_LENGTH) + return + // that +1 is to make space for the holochip with the collected amount + var/iterations = contents_len + 1 - MAXIMUM_PIGGY_BANK_CONTENTS_LENGTH + var/creds_amount = 0 + for(var/i in 1 to iterations) + var/obj/item/money = pick(contents) + if(!istype(money)) // Very barebone safety for somethig that shouldn't happen just in case + continue // Yes, this means we lose an iteration, the code is that simple. + creds_amount += money.get_item_credit_value() + qdel(money) + if(creds_amount) + new /obj/item/holochip(src, creds_amount) + +#undef MAXIMUM_PIGGY_BANK_CONTENTS_LENGTH + /obj/item/piggy_bank/Destroy() if(persistence_cb) LAZYREMOVE(SSticker.round_end_events, persistence_cb) //cleanup the callback. @@ -112,6 +139,7 @@ balloon_alert(user, "stuck in your hands!") else balloon_alert(user, "inserted [creds_value] creds") + sanitize_piggy_bank_contents_len() return TRUE ///Returns the total amount of credits that its contents amount to. diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index 3b877393031..c28f5acb66b 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -95,7 +95,7 @@ desc = "A handheld tracking device that points to crew suit sensors." icon_state = "pinpointer_crew" worn_icon_state = "pinpointer_crew" - custom_price = PAYCHECK_CREW * 4 + custom_price = PAYCHECK_CREW * 6 custom_premium_price = PAYCHECK_CREW * 6 var/has_owner = FALSE var/pinpointer_owner = null diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm index 6772d4203f3..ebece113d0b 100644 --- a/code/game/objects/items/puzzle_pieces.dm +++ b/code/game/objects/items/puzzle_pieces.dm @@ -264,10 +264,10 @@ continue var/mutable_appearance/lit_image = mutable_appearance('icons/obj/fluff/puzzle_small.dmi', "light_lit") var/mutable_appearance/emissive_image = emissive_appearance('icons/obj/fluff/puzzle_small.dmi', "light_lit", src) - lit_image.pixel_x = 8 * ((i % 3 || 3 ) - 1) - lit_image.pixel_y = -8 * (ROUND_UP(i / 3) - 1) - emissive_image.pixel_x = lit_image.pixel_x - emissive_image.pixel_y = lit_image.pixel_y + lit_image.pixel_w = 8 * ((i % 3 || 3 ) - 1) + lit_image.pixel_z = -8 * (ROUND_UP(i / 3) - 1) + emissive_image.pixel_w = lit_image.pixel_w + emissive_image.pixel_z = lit_image.pixel_z . += lit_image . += emissive_image @@ -595,13 +595,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/puzzle/password/pin, 32) pixel_y += round(extra_rows*(PUZZLE_DOTS_VERTICAL_OFFSET*0.5)) for(var/i in 1 to extra_rows) var/mutable_appearance/row = mutable_appearance(icon, icon_state) - row.pixel_y = -i*PUZZLE_DOTS_VERTICAL_OFFSET + row.pixel_z = -i*PUZZLE_DOTS_VERTICAL_OFFSET add_overlay(row) for(var/i in 1 to pass_len) var/mutable_appearance/colored_dot = mutable_appearance(icon, "puzzle_dot_single") colored_dot.color = pad.digit_to_color[pass_digits[i]] - colored_dot.pixel_x = PUZZLE_DOTS_HORIZONTAL_OFFSET * ((i-1)%MAX_PUZZLE_DOTS_PER_ROW) - colored_dot.pixel_y -= CEILING((i/MAX_PUZZLE_DOTS_PER_ROW)-1, 1)*PUZZLE_DOTS_VERTICAL_OFFSET + colored_dot.pixel_w = PUZZLE_DOTS_HORIZONTAL_OFFSET * ((i-1)%MAX_PUZZLE_DOTS_PER_ROW) + colored_dot.pixel_z -= CEILING((i/MAX_PUZZLE_DOTS_PER_ROW)-1, 1)*PUZZLE_DOTS_VERTICAL_OFFSET add_overlay(colored_dot) #undef MAX_PUZZLE_DOTS_PER_ROW diff --git a/code/game/objects/items/robot/items/storage.dm b/code/game/objects/items/robot/items/storage.dm index e0310d62584..caa510e8037 100644 --- a/code/game/objects/items/robot/items/storage.dm +++ b/code/game/objects/items/robot/items/storage.dm @@ -139,16 +139,16 @@ . = ..() var/mutable_appearance/arm = mutable_appearance(icon = icon, icon_state = "borg_beaker_apparatus_arm") if(stored) - stored.pixel_x = 0 - stored.pixel_y = 0 + stored.pixel_w = 0 + stored.pixel_z = 0 var/mutable_appearance/stored_copy = new /mutable_appearance(stored) if(istype(stored, /obj/item/reagent_containers/cup/beaker)) - arm.pixel_y = arm.pixel_y - 3 + arm.pixel_z -= 3 stored_copy.layer = FLOAT_LAYER stored_copy.plane = FLOAT_PLANE . += stored_copy else - arm.pixel_y = arm.pixel_y - 5 + arm.pixel_z -= 5 . += arm /obj/item/borg/apparatus/beaker/extra @@ -229,8 +229,8 @@ var/mutable_appearance/stored_organ = new /mutable_appearance(stored) stored_organ.layer = FLOAT_LAYER stored_organ.plane = FLOAT_PLANE - stored_organ.pixel_x = 0 - stored_organ.pixel_y = 0 + stored_organ.pixel_w = 0 + stored_organ.pixel_z = 0 . += stored_organ bag = mutable_appearance(icon, icon_state = "evidence") // full bag else @@ -265,8 +265,8 @@ . = ..() var/mutable_appearance/arm = mutable_appearance(icon, "borg_stack_apparatus_arm1") if(stored) - stored.pixel_x = 0 - stored.pixel_y = 0 + stored.pixel_w = 0 + stored.pixel_z = 0 arm.icon_state = "borg_stack_apparatus_arm2" var/mutable_appearance/stored_copy = new /mutable_appearance(stored) var/underscore = findtext(stored_copy.icon_state, "_") @@ -299,8 +299,8 @@ . = ..() var/mutable_appearance/arm = mutable_appearance(icon, "borg_hardware_apparatus_arm1") if(stored) - stored.pixel_x = -3 - stored.pixel_y = 0 + stored.pixel_w = -3 + stored.pixel_z = 0 if(!istype(stored, /obj/item/circuitboard)) arm.icon_state = "borg_hardware_apparatus_arm2" var/mutable_appearance/stored_copy = new /mutable_appearance(stored) @@ -344,8 +344,8 @@ . = ..() var/mutable_appearance/arm = mutable_appearance(icon, "borg_hardware_apparatus_arm1") if(stored) - stored.pixel_x = -3 - stored.pixel_y = 0 + stored.pixel_w = -3 + stored.pixel_z = 0 if((!istype(stored, /obj/item/plate/oven_tray)) || (!istype(stored, /obj/item/food))) arm.icon_state = "borg_hardware_apparatus_arm2" var/mutable_appearance/stored_copy = new /mutable_appearance(stored) diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 0930de71c0e..8ed78cccc87 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -52,8 +52,8 @@ return var/image/bullet_hole = image('icons/effects/effects.dmi', "dent", OBJ_LAYER + 0.5) - bullet_hole.pixel_x = p_x - 1 //offset correction - bullet_hole.pixel_y = p_y - 1 + bullet_hole.pixel_w = p_x - 1 //offset correction + bullet_hole.pixel_z = p_y - 1 if(hitting_projectile.damage_type != BRUTE) bullet_hole.setDir(pick(GLOB.cardinals))// random scorch design if(hitting_projectile.damage < 20 && is_generic_projectile) diff --git a/code/game/objects/items/shrapnel.dm b/code/game/objects/items/shrapnel.dm index 9763b060c01..eb69de6687c 100644 --- a/code/game/objects/items/shrapnel.dm +++ b/code/game/objects/items/shrapnel.dm @@ -47,6 +47,7 @@ embed_chance = 70 ignore_throwspeed_threshold = TRUE fall_chance = 1 + stealthy_embed = TRUE /obj/projectile/bullet/shrapnel/short_range range = 5 @@ -132,4 +133,3 @@ name = "\improper AP shrapnel shard" custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.5) weak_against_armour = TRUE - diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index a63f79a5121..0e13f50136a 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -104,3 +104,6 @@ to_chat(user, span_notice("You break off a crystal.")) else ..() + +/obj/item/stack/sheet/bluespace_crystal/fifty + amount = 50 diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 6d1bbe7bc64..4f0d2a8bfea 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -27,7 +27,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ merge_type = /obj/item/stack/sheet/glass grind_results = list(/datum/reagent/silicon = 20) material_type = /datum/material/glass - tableVariant = /obj/structure/table/glass + table_type = /obj/structure/table/glass matter_amount = 4 cost = SHEET_MATERIAL_AMOUNT source = /datum/robot_energy_storage/material/glass @@ -103,7 +103,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \ merge_type = /obj/item/stack/sheet/plasmaglass grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10) material_flags = NONE - tableVariant = /obj/structure/table/glass/plasmaglass + table_type = /obj/structure/table/glass/plasmaglass pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg' drop_sound = 'sound/items/handling/materials/glass_drop.ogg' @@ -163,7 +163,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ merge_type = /obj/item/stack/sheet/rglass grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/iron = 10) matter_amount = 6 - tableVariant = /obj/structure/table/reinforced/rglass + table_type = /obj/structure/table/reinforced/rglass pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg' drop_sound = 'sound/items/handling/materials/glass_drop.ogg' @@ -203,7 +203,7 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \ grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10, /datum/reagent/iron = 10) gulag_valid = TRUE matter_amount = 8 - tableVariant = /obj/structure/table/reinforced/plasmarglass + table_type = /obj/structure/table/reinforced/plasmarglass pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg' drop_sound = 'sound/items/handling/materials/glass_drop.ogg' @@ -235,7 +235,7 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list( armor_type = /datum/armor/sheet_titaniumglass resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/titaniumglass - tableVariant = /obj/structure/table/reinforced/titaniumglass + table_type = /obj/structure/table/reinforced/titaniumglass pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg' drop_sound = 'sound/items/handling/materials/glass_drop.ogg' @@ -267,7 +267,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( material_flags = NONE resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plastitaniumglass - tableVariant = /obj/structure/table/reinforced/plastitaniumglass + table_type = /obj/structure/table/reinforced/plastitaniumglass pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg' drop_sound = 'sound/items/handling/materials/glass_drop.ogg' @@ -311,12 +311,6 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( /datum/embedding/shard embed_chance = 65 -/datum/embedding/glass_candy - embed_chance = 100 - ignore_throwspeed_threshold = TRUE - impact_pain_mult = 1 - pain_chance = 5 - /datum/armor/item_shard melee = 100 energy = 100 diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 14a9b5dcfb7..7195bc85704 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -118,6 +118,9 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \ /obj/item/stack/sheet/mineral/diamond/five amount = 5 +/obj/item/stack/sheet/mineral/diamond/fifty + amount = 50 + /* * Uranium */ @@ -149,6 +152,9 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ /obj/item/stack/sheet/mineral/uranium/half amount = 25 +/obj/item/stack/sheet/mineral/uranium/fifty + amount = 50 + /* * Plasma */ @@ -186,6 +192,9 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ /obj/item/stack/sheet/mineral/plasma/thirty amount = 30 +/obj/item/stack/sheet/mineral/plasma/fifty + amount = 50 + /* * Gold */ @@ -213,6 +222,9 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ . = ..() . += GLOB.gold_recipes +/obj/item/stack/sheet/mineral/gold/fifty + amount = 50 + /* * Silver */ @@ -227,7 +239,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ gulag_valid = TRUE merge_type = /obj/item/stack/sheet/mineral/silver material_type = /datum/material/silver - tableVariant = /obj/structure/table/optable + table_type = /obj/structure/table/optable walltype = /turf/closed/wall/mineral/silver GLOBAL_LIST_INIT(silver_recipes, list ( \ @@ -239,6 +251,9 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \ . = ..() . += GLOB.silver_recipes +/obj/item/stack/sheet/mineral/silver/fifty + amount = 50 + /* * Clown */ diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 3ca639d2830..2a903c0f917 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -174,7 +174,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ merge_type = /obj/item/stack/sheet/iron grind_results = list(/datum/reagent/iron = 20) gulag_valid = TRUE - tableVariant = /obj/structure/table + table_type = /obj/structure/table material_type = /datum/material/iron matter_amount = 4 cost = SHEET_MATERIAL_AMOUNT @@ -304,7 +304,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ merge_type = /obj/item/stack/sheet/plasteel grind_results = list(/datum/reagent/iron = 20, /datum/reagent/toxin/plasma = 20) gulag_valid = TRUE - tableVariant = /obj/structure/table/reinforced + table_type = /obj/structure/table/reinforced material_flags = NONE matter_amount = 12 @@ -774,7 +774,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ novariants = FALSE grind_results = list(/datum/reagent/iron = 20, /datum/reagent/copper = 12) //we have no "tin" reagent so this is the closest thing merge_type = /obj/item/stack/sheet/bronze - tableVariant = /obj/structure/table/bronze + table_type = /obj/structure/table/bronze material_type = /datum/material/bronze walltype = /turf/closed/wall/mineral/bronze has_unique_girder = TRUE diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm index b9a66202a16..baf98015575 100644 --- a/code/game/objects/items/stacks/sheets/sheets.dm +++ b/code/game/objects/items/stacks/sheets/sheets.dm @@ -13,6 +13,7 @@ attack_verb_simple = list("bash", "batter", "bludgeon", "thrash", "smash") novariants = FALSE material_flags = MATERIAL_EFFECTS + table_type = /obj/structure/table/greyscale pickup_sound = 'sound/items/handling/materials/metal_pick_up.ogg' drop_sound = 'sound/items/handling/materials/metal_drop.ogg' var/sheettype = null //this is used for girders in the creation of walls/false walls diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 7a3346bee14..6eacfbc60d6 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -47,7 +47,7 @@ /// Does this stack require a unique girder in order to make a wall? var/has_unique_girder = FALSE /// What typepath table we create from this stack - var/obj/structure/table/tableVariant + var/obj/structure/table/table_type /// What typepath stairs do we create from this stack var/obj/structure/stairs/stairs_type /// If TRUE, we'll use a radial instead when displaying recipes @@ -215,6 +215,12 @@ else . = (amount) +/// Gets the table type we make, accounting for potential exceptions. +/obj/item/stack/proc/get_table_type() + if(ispath(table_type, /obj/structure/table/greyscale) && isnull(material_type)) + return // This table type breaks without a material type. + return table_type + /** * Builds all recipes in a given recipe list and returns an association list containing them * diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 51a244be613..dc524091404 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -217,7 +217,7 @@ inhand_icon_state = "tile-carpet" turf_type = /turf/open/floor/carpet resistance_flags = FLAMMABLE - tableVariant = /obj/structure/table/wood/fancy + table_type = /obj/structure/table/wood/fancy merge_type = /obj/item/stack/tile/carpet tile_reskin_types = list( /obj/item/stack/tile/carpet, @@ -247,7 +247,7 @@ icon_state = "tile-carpet-black" inhand_icon_state = "tile-carpet-black" turf_type = /turf/open/floor/carpet/black - tableVariant = /obj/structure/table/wood/fancy/black + table_type = /obj/structure/table/wood/fancy/black merge_type = /obj/item/stack/tile/carpet/black tile_reskin_types = null @@ -256,7 +256,7 @@ icon_state = "tile-carpet-blue" inhand_icon_state = "tile-carpet-blue" turf_type = /turf/open/floor/carpet/blue - tableVariant = /obj/structure/table/wood/fancy/blue + table_type = /obj/structure/table/wood/fancy/blue merge_type = /obj/item/stack/tile/carpet/blue tile_reskin_types = null @@ -265,7 +265,7 @@ icon_state = "tile-carpet-cyan" inhand_icon_state = "tile-carpet-cyan" turf_type = /turf/open/floor/carpet/cyan - tableVariant = /obj/structure/table/wood/fancy/cyan + table_type = /obj/structure/table/wood/fancy/cyan merge_type = /obj/item/stack/tile/carpet/cyan tile_reskin_types = null @@ -274,7 +274,7 @@ icon_state = "tile-carpet-green" inhand_icon_state = "tile-carpet-green" turf_type = /turf/open/floor/carpet/green - tableVariant = /obj/structure/table/wood/fancy/green + table_type = /obj/structure/table/wood/fancy/green merge_type = /obj/item/stack/tile/carpet/green tile_reskin_types = null @@ -283,7 +283,7 @@ icon_state = "tile-carpet-orange" inhand_icon_state = "tile-carpet-orange" turf_type = /turf/open/floor/carpet/orange - tableVariant = /obj/structure/table/wood/fancy/orange + table_type = /obj/structure/table/wood/fancy/orange merge_type = /obj/item/stack/tile/carpet/orange tile_reskin_types = null @@ -292,7 +292,7 @@ icon_state = "tile-carpet-purple" inhand_icon_state = "tile-carpet-purple" turf_type = /turf/open/floor/carpet/purple - tableVariant = /obj/structure/table/wood/fancy/purple + table_type = /obj/structure/table/wood/fancy/purple merge_type = /obj/item/stack/tile/carpet/purple tile_reskin_types = null @@ -301,7 +301,7 @@ icon_state = "tile-carpet-red" inhand_icon_state = "tile-carpet-red" turf_type = /turf/open/floor/carpet/red - tableVariant = /obj/structure/table/wood/fancy/red + table_type = /obj/structure/table/wood/fancy/red merge_type = /obj/item/stack/tile/carpet/red tile_reskin_types = null @@ -310,7 +310,7 @@ icon_state = "tile-carpet-royalblack" inhand_icon_state = "tile-carpet-royalblack" turf_type = /turf/open/floor/carpet/royalblack - tableVariant = /obj/structure/table/wood/fancy/royalblack + table_type = /obj/structure/table/wood/fancy/royalblack merge_type = /obj/item/stack/tile/carpet/royalblack tile_reskin_types = null @@ -319,7 +319,7 @@ icon_state = "tile-carpet-royalblue" inhand_icon_state = "tile-carpet-royalblue" turf_type = /turf/open/floor/carpet/royalblue - tableVariant = /obj/structure/table/wood/fancy/royalblue + table_type = /obj/structure/table/wood/fancy/royalblue merge_type = /obj/item/stack/tile/carpet/royalblue tile_reskin_types = null diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 58e0a685f40..41300362e21 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -335,36 +335,39 @@ // Copy-pasted from the former /obj/item/storage/box/material, w/ small additions like rods, cardboard, plastic. // "Only 20 uranium 'cause of radiation" /obj/item/storage/bag/sheetsnatcher/debug/PopulateContents() + // amount should be null if it should spawn with the type's default amount var/static/items_inside = list( - /obj/item/stack/sheet/iron/fifty=1, - /obj/item/stack/sheet/glass/fifty=1, - /obj/item/stack/sheet/rglass/fifty=1, - /obj/item/stack/sheet/plasmaglass/fifty=1, - /obj/item/stack/sheet/titaniumglass/fifty=1, - /obj/item/stack/sheet/plastitaniumglass/fifty=1, - /obj/item/stack/sheet/plasteel/fifty=1, - /obj/item/stack/sheet/mineral/titanium/fifty=1, - /obj/item/stack/sheet/mineral/gold=50, - /obj/item/stack/sheet/mineral/silver=50, - /obj/item/stack/sheet/mineral/plasma=50, - /obj/item/stack/sheet/mineral/uranium=20, - /obj/item/stack/sheet/mineral/diamond=50, - /obj/item/stack/sheet/bluespace_crystal=50, - /obj/item/stack/sheet/mineral/bananium=50, - /obj/item/stack/sheet/mineral/wood/fifty=1, - /obj/item/stack/sheet/plastic/fifty=1, - /obj/item/stack/sheet/runed_metal/fifty=1, - /obj/item/stack/rods/fifty=1, - /obj/item/stack/sheet/mineral/plastitanium=50, - /obj/item/stack/sheet/mineral/abductor=50, - /obj/item/stack/sheet/cardboard/fifty=1, - ) + /obj/item/stack/sheet/iron/fifty = null, + /obj/item/stack/sheet/glass/fifty = null, + /obj/item/stack/sheet/rglass/fifty = null, + /obj/item/stack/sheet/plasmaglass/fifty = null, + /obj/item/stack/sheet/titaniumglass/fifty = null, + /obj/item/stack/sheet/plastitaniumglass/fifty = null, + /obj/item/stack/sheet/plasteel/fifty = null, + /obj/item/stack/sheet/mineral/titanium/fifty = null, + /obj/item/stack/sheet/mineral/gold = 50, + /obj/item/stack/sheet/mineral/silver = 50, + /obj/item/stack/sheet/mineral/plasma = 50, + /obj/item/stack/sheet/mineral/uranium = 20, + /obj/item/stack/sheet/mineral/diamond = 50, + /obj/item/stack/sheet/bluespace_crystal = 50, + /obj/item/stack/sheet/mineral/bananium = 50, + /obj/item/stack/sheet/mineral/wood/fifty = null, + /obj/item/stack/sheet/plastic/fifty = null, + /obj/item/stack/sheet/runed_metal/fifty = null, + /obj/item/stack/rods/fifty = null, + /obj/item/stack/sheet/mineral/plastitanium = 50, + /obj/item/stack/sheet/mineral/abductor = 50, + /obj/item/stack/sheet/cardboard/fifty = null, + ) //This needs to be done here and not in Initialize() because the stacks get merged and fall out when their weight updates if this is set after PopulateContents() atom_storage.allow_big_nesting = TRUE atom_storage.max_slots = 99 atom_storage.max_specific_storage = WEIGHT_CLASS_GIGANTIC atom_storage.max_total_storage = capacity - generate_items_inside(items_inside,src) + for(var/obj/item/stack/stack_type as anything in items_inside) + var/amt = items_inside[stack_type] + new stack_type(src, amt, FALSE) /obj/item/storage/bag/sheetsnatcher/debug/Initialize(mapload) . = ..() @@ -524,7 +527,7 @@ /obj/item/reagent_containers/cup/bottle, /obj/item/reagent_containers/cup/tube, /obj/item/reagent_containers/medigel, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator, /obj/item/reagent_containers/syringe, )) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 93ade7689de..07a2de08b2a 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -251,7 +251,7 @@ /obj/item/reagent_containers/cup/tube, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/medigel, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator, /obj/item/reagent_containers/spray, /obj/item/reagent_containers/syringe, /obj/item/retractor, @@ -433,7 +433,7 @@ /obj/item/reagent_containers/cup/glass, /obj/item/reagent_containers/cup/glass/bottle, /obj/item/reagent_containers/hypospray, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator/pill, /obj/item/resonator, /obj/item/screwdriver, /obj/item/shovel, diff --git a/code/game/objects/items/storage/boxes/food_boxes.dm b/code/game/objects/items/storage/boxes/food_boxes.dm index bac558ce3be..fd4bef33758 100644 --- a/code/game/objects/items/storage/boxes/food_boxes.dm +++ b/code/game/objects/items/storage/boxes/food_boxes.dm @@ -46,6 +46,12 @@ icon_state = "donkpocketboxbanana" donktype = /obj/item/food/donkpocket/honk +/obj/item/storage/box/donkpockets/donkpocketshell + name = "box of Donk Co. 'Donk Spike' flechette shells" + desc = "Instructions: DO NOT heat in microwave. Product will remove all hostile threats with cutting edge Donk Co. technology." + icon_state = "donkpocketboxshell" + donktype = /obj/item/ammo_casing/shotgun/flechette/donk + /obj/item/storage/box/papersack name = "paper sack" desc = "A sack neatly crafted out of paper." diff --git a/code/game/objects/items/storage/boxes/job_boxes.dm b/code/game/objects/items/storage/boxes/job_boxes.dm index c13ad4e54e9..9c67a30517d 100644 --- a/code/game/objects/items/storage/boxes/job_boxes.dm +++ b/code/game/objects/items/storage/boxes/job_boxes.dm @@ -19,14 +19,14 @@ /// Do we get to benefit from Nanotrasen's largesse? var/give_premium_goods = TRUE -/obj/item/storage/box/survival/Initialize(mapload) +/obj/item/storage/box/survival/create_storage(max_slots, max_specific_storage, max_total_storage, list/canhold, list/canthold, storage_type) . = ..() if(crafted || !HAS_TRAIT(SSstation, STATION_TRAIT_PREMIUM_INTERNALS)) return atom_storage.max_slots += 2 atom_storage.max_total_storage += 4 name = "large [name]" - transform = transform.Scale(1.25, 1) + icon_state = "[icon_state]_large" /obj/item/storage/box/survival/PopulateContents() if(crafted) diff --git a/code/game/objects/items/storage/boxes/medical_boxes.dm b/code/game/objects/items/storage/boxes/medical_boxes.dm index c76f1ca0b37..28224602cef 100644 --- a/code/game/objects/items/storage/boxes/medical_boxes.dm +++ b/code/game/objects/items/storage/boxes/medical_boxes.dm @@ -150,8 +150,8 @@ atom_storage.max_slots = 6 atom_storage.set_holdable(list( /obj/item/stack/medical/bandage, - /obj/item/reagent_containers/pill, - /obj/item/reagent_containers/pill/patch, + /obj/item/reagent_containers/applicator/pill, + /obj/item/reagent_containers/applicator/patch, )) /obj/item/storage/box/bandages/PopulateContents() diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index e88a0c9ee48..773bbf01c64 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -127,7 +127,9 @@ if (!istype(donut)) continue - . += image(icon = initial(icon), icon_state = donut.in_box_sprite(), pixel_x = donuts * DONUT_INBOX_SPRITE_WIDTH) + var/image/donut_image = image(icon = initial(icon), icon_state = donut.in_box_sprite()) + donut_image.pixel_w = donuts * DONUT_INBOX_SPRITE_WIDTH + . += donut_image donuts += 1 . += image(icon = initial(icon), icon_state = "[base_icon_state]_top") diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index 83667c5d58d..d341bfe3011 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -160,11 +160,11 @@ var/obj/item/clothing/accessory/medal/M = contents[i] var/mutable_appearance/medalicon = mutable_appearance(initial(icon), M.medaltype) if(i > 1 && i <= 5) - medalicon.pixel_x += ((i-1)*3) + medalicon.pixel_w += ((i-1)*3) else if(i > 5) - medalicon.pixel_y -= 7 - medalicon.pixel_x -= 2 - medalicon.pixel_x += ((i-6)*3) + medalicon.pixel_z -= 7 + medalicon.pixel_w -= 2 + medalicon.pixel_w += ((i-6)*3) . += medalicon /obj/item/storage/lockbox/medal/hop diff --git a/code/game/objects/items/storage/medkit.dm b/code/game/objects/items/storage/medkit.dm index 13f0e1bfda8..e7f7c1dae75 100644 --- a/code/game/objects/items/storage/medkit.dm +++ b/code/game/objects/items/storage/medkit.dm @@ -32,7 +32,7 @@ /obj/item/reagent_containers/cup/beaker, /obj/item/reagent_containers/cup/bottle, /obj/item/reagent_containers/cup/tube, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/medigel, /obj/item/reagent_containers/spray, @@ -190,7 +190,7 @@ if(empty) return var/static/items_inside = list( - /obj/item/reagent_containers/pill/patch/aiuri = 3, + /obj/item/reagent_containers/applicator/patch/aiuri = 3, /obj/item/reagent_containers/spray/hercuri = 1, /obj/item/reagent_containers/hypospray/medipen/oxandrolone = 1, /obj/item/reagent_containers/hypospray/medipen = 1) @@ -265,7 +265,7 @@ if(empty) return var/static/items_inside = list( - /obj/item/reagent_containers/pill/patch/libital = 3, + /obj/item/reagent_containers/applicator/patch/libital = 3, /obj/item/stack/medical/gauze = 1, /obj/item/storage/pill_bottle/probital = 1, /obj/item/reagent_containers/hypospray/medipen/salacid = 1, @@ -288,7 +288,7 @@ if(empty) return var/static/items_inside = list( - /obj/item/reagent_containers/pill/patch/synthflesh = 3, + /obj/item/reagent_containers/applicator/patch/synthflesh = 3, /obj/item/reagent_containers/hypospray/medipen/atropine = 2, /obj/item/stack/medical/gauze = 1, /obj/item/storage/pill_bottle/penacid = 1) @@ -344,8 +344,8 @@ /obj/item/stack/medical/gauze = 2, /obj/item/stack/medical/suture/medicated = 2, /obj/item/stack/medical/mesh/advanced = 2, - /obj/item/reagent_containers/pill/patch/libital = 4, - /obj/item/reagent_containers/pill/patch/aiuri = 4, + /obj/item/reagent_containers/applicator/patch/libital = 4, + /obj/item/reagent_containers/applicator/patch/aiuri = 4, ) generate_items_inside(items_inside,src) @@ -370,8 +370,8 @@ var/static/list/items_inside = list( /obj/item/stack/medical/suture/medicated = 2, /obj/item/stack/medical/mesh/advanced = 2, - /obj/item/reagent_containers/pill/patch/libital = 3, - /obj/item/reagent_containers/pill/patch/aiuri = 3, + /obj/item/reagent_containers/applicator/patch/libital = 3, + /obj/item/reagent_containers/applicator/patch/aiuri = 3, /obj/item/healthanalyzer/advanced = 1, /obj/item/stack/medical/gauze = 2, /obj/item/mod/module/thread_ripper = 1, @@ -470,7 +470,8 @@ . = ..() atom_storage.allow_quick_gather = TRUE atom_storage.set_holdable(list( - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator/pill, + /obj/item/reagent_containers/applicator/patch, /obj/item/food/bait/natural, )) atom_storage.open_sound = 'sound/items/handling/pill_bottle_open.ogg' @@ -486,13 +487,13 @@ /obj/item/storage/pill_bottle/multiver/PopulateContents() for(var/i in 1 to 7) - new /obj/item/reagent_containers/pill/multiver(src) + new /obj/item/reagent_containers/applicator/pill/multiver(src) /obj/item/storage/pill_bottle/multiver/less /obj/item/storage/pill_bottle/multiver/less/PopulateContents() for(var/i in 1 to 3) - new /obj/item/reagent_containers/pill/multiver(src) + new /obj/item/reagent_containers/applicator/pill/multiver(src) /obj/item/storage/pill_bottle/epinephrine name = "bottle of epinephrine pills" @@ -500,7 +501,7 @@ /obj/item/storage/pill_bottle/epinephrine/PopulateContents() for(var/i in 1 to 7) - new /obj/item/reagent_containers/pill/epinephrine(src) + new /obj/item/reagent_containers/applicator/pill/epinephrine(src) /obj/item/storage/pill_bottle/mutadone name = "bottle of mutadone pills" @@ -508,7 +509,7 @@ /obj/item/storage/pill_bottle/mutadone/PopulateContents() for(var/i in 1 to 7) - new /obj/item/reagent_containers/pill/mutadone(src) + new /obj/item/reagent_containers/applicator/pill/mutadone(src) /obj/item/storage/pill_bottle/potassiodide name = "bottle of potassium iodide pills" @@ -516,7 +517,7 @@ /obj/item/storage/pill_bottle/potassiodide/PopulateContents() for(var/i in 1 to 3) - new /obj/item/reagent_containers/pill/potassiodide(src) + new /obj/item/reagent_containers/applicator/pill/potassiodide(src) /obj/item/storage/pill_bottle/probital name = "bottle of probital pills" @@ -524,7 +525,7 @@ /obj/item/storage/pill_bottle/probital/PopulateContents() for(var/i in 1 to 4) - new /obj/item/reagent_containers/pill/probital(src) + new /obj/item/reagent_containers/applicator/pill/probital(src) /obj/item/storage/pill_bottle/iron name = "bottle of iron pills" @@ -532,7 +533,7 @@ /obj/item/storage/pill_bottle/iron/PopulateContents() for(var/i in 1 to 4) - new /obj/item/reagent_containers/pill/iron(src) + new /obj/item/reagent_containers/applicator/pill/iron(src) /obj/item/storage/pill_bottle/mannitol name = "bottle of mannitol pills" @@ -540,7 +541,7 @@ /obj/item/storage/pill_bottle/mannitol/PopulateContents() for(var/i in 1 to 7) - new /obj/item/reagent_containers/pill/mannitol(src) + new /obj/item/reagent_containers/applicator/pill/mannitol(src) //Contains 4 pills instead of 7, and 5u pills instead of 50u (50u pills heal 250 brain damage, 5u pills heal 25) /obj/item/storage/pill_bottle/mannitol/braintumor @@ -548,7 +549,7 @@ /obj/item/storage/pill_bottle/mannitol/braintumor/PopulateContents() for(var/i in 1 to 4) - new /obj/item/reagent_containers/pill/mannitol/braintumor(src) + new /obj/item/reagent_containers/applicator/pill/mannitol/braintumor(src) /obj/item/storage/pill_bottle/stimulant name = "bottle of stimulant pills" @@ -556,7 +557,7 @@ /obj/item/storage/pill_bottle/stimulant/PopulateContents() for(var/i in 1 to 5) - new /obj/item/reagent_containers/pill/stimulant(src) + new /obj/item/reagent_containers/applicator/pill/stimulant(src) /obj/item/storage/pill_bottle/sansufentanyl name = "bottle of experimental medication" @@ -564,16 +565,16 @@ /obj/item/storage/pill_bottle/sansufentanyl/PopulateContents() for(var/i in 1 to 6) - new /obj/item/reagent_containers/pill/sansufentanyl(src) + new /obj/item/reagent_containers/applicator/pill/sansufentanyl(src) /obj/item/storage/pill_bottle/mining name = "bottle of patches" desc = "Contains patches used to treat brute and burn damage." /obj/item/storage/pill_bottle/mining/PopulateContents() - new /obj/item/reagent_containers/pill/patch/aiuri(src) + new /obj/item/reagent_containers/applicator/patch/aiuri(src) for(var/i in 1 to 3) - new /obj/item/reagent_containers/pill/patch/libital(src) + new /obj/item/reagent_containers/applicator/patch/libital(src) /obj/item/storage/pill_bottle/zoom name = "suspicious pill bottle" @@ -581,7 +582,7 @@ /obj/item/storage/pill_bottle/zoom/PopulateContents() for(var/i in 1 to 5) - new /obj/item/reagent_containers/pill/zoom(src) + new /obj/item/reagent_containers/applicator/pill/zoom(src) /obj/item/storage/pill_bottle/happy name = "suspicious pill bottle" @@ -589,7 +590,7 @@ /obj/item/storage/pill_bottle/happy/PopulateContents() for(var/i in 1 to 5) - new /obj/item/reagent_containers/pill/happy(src) + new /obj/item/reagent_containers/applicator/pill/happy(src) /obj/item/storage/pill_bottle/lsd name = "suspicious pill bottle" @@ -597,7 +598,7 @@ /obj/item/storage/pill_bottle/lsd/PopulateContents() for(var/i in 1 to 5) - new /obj/item/reagent_containers/pill/lsd(src) + new /obj/item/reagent_containers/applicator/pill/lsd(src) /obj/item/storage/pill_bottle/aranesp name = "suspicious pill bottle" @@ -605,7 +606,7 @@ /obj/item/storage/pill_bottle/aranesp/PopulateContents() for(var/i in 1 to 5) - new /obj/item/reagent_containers/pill/aranesp(src) + new /obj/item/reagent_containers/applicator/pill/aranesp(src) /obj/item/storage/pill_bottle/psicodine name = "bottle of psicodine pills" @@ -613,7 +614,7 @@ /obj/item/storage/pill_bottle/psicodine/PopulateContents() for(var/i in 1 to 7) - new /obj/item/reagent_containers/pill/psicodine(src) + new /obj/item/reagent_containers/applicator/pill/psicodine(src) /obj/item/storage/pill_bottle/penacid name = "bottle of pentetic acid pills" @@ -621,7 +622,7 @@ /obj/item/storage/pill_bottle/penacid/PopulateContents() for(var/i in 1 to 3) - new /obj/item/reagent_containers/pill/penacid(src) + new /obj/item/reagent_containers/applicator/pill/penacid(src) /obj/item/storage/pill_bottle/neurine @@ -630,7 +631,7 @@ /obj/item/storage/pill_bottle/neurine/PopulateContents() for(var/i in 1 to 5) - new /obj/item/reagent_containers/pill/neurine(src) + new /obj/item/reagent_containers/applicator/pill/neurine(src) /obj/item/storage/pill_bottle/maintenance_pill name = "bottle of maintenance pills" @@ -638,16 +639,16 @@ /obj/item/storage/pill_bottle/maintenance_pill/Initialize(mapload) . = ..() - var/obj/item/reagent_containers/pill/P = locate() in src + var/obj/item/reagent_containers/applicator/pill/P = locate() in src name = "bottle of [P.name]s" /obj/item/storage/pill_bottle/maintenance_pill/PopulateContents() for(var/i in 1 to rand(1,7)) - new /obj/item/reagent_containers/pill/maintenance(src) + new /obj/item/reagent_containers/applicator/pill/maintenance(src) /obj/item/storage/pill_bottle/maintenance_pill/full/PopulateContents() for(var/i in 1 to 7) - new /obj/item/reagent_containers/pill/maintenance(src) + new /obj/item/reagent_containers/applicator/pill/maintenance(src) ///////////////////////////////////////// Psychologist inventory pillbottles /obj/item/storage/pill_bottle/happinesspsych @@ -656,7 +657,7 @@ /obj/item/storage/pill_bottle/happinesspsych/PopulateContents() for(var/i in 1 to 5) - new /obj/item/reagent_containers/pill/happinesspsych(src) + new /obj/item/reagent_containers/applicator/pill/happinesspsych(src) /obj/item/storage/pill_bottle/lsdpsych name = "mindbreaker toxin pills" @@ -664,7 +665,7 @@ /obj/item/storage/pill_bottle/lsdpsych/PopulateContents() for(var/i in 1 to 5) - new /obj/item/reagent_containers/pill/lsdpsych(src) + new /obj/item/reagent_containers/applicator/pill/lsdpsych(src) /obj/item/storage/pill_bottle/paxpsych name = "pax pills" @@ -672,7 +673,7 @@ /obj/item/storage/pill_bottle/paxpsych/PopulateContents() for(var/i in 1 to 5) - new /obj/item/reagent_containers/pill/paxpsych(src) + new /obj/item/reagent_containers/applicator/pill/paxpsych(src) /obj/item/storage/pill_bottle/naturalbait name = "freshness jar" @@ -688,7 +689,7 @@ /obj/item/storage/pill_bottle/ondansetron/PopulateContents() for(var/i in 1 to 5) - new /obj/item/reagent_containers/pill/patch/ondansetron(src) + new /obj/item/reagent_containers/applicator/patch/ondansetron(src) /// A box which takes in coolant and uses it to preserve organs and body parts /obj/item/storage/organbox diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index 75ca06ff0ff..06e122780b9 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -3,6 +3,7 @@ icon = 'icons/obj/storage/storage.dmi' w_class = WEIGHT_CLASS_NORMAL interaction_flags_click = ALLOW_RESTING|FORBID_TELEKINESIS_REACH + action_slots = ALL var/rummage_if_nodrop = TRUE /// Should we preload the contents of this type? /// BE CAREFUL, THERE'S SOME REALLY NASTY SHIT IN THIS TYPEPATH diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 5893c504c5a..e922a908596 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -60,7 +60,7 @@ new /obj/item/computer_disk/syndicate/camera_app(src) // 1 tc new /obj/item/multitool/ai_detect(src) // 1 tc new /obj/item/encryptionkey/syndicate(src) // 2 tc - new /obj/item/reagent_containers/syringe/mulligan(src) // 4 tc + new /obj/item/storage/box/syndie_kit/mulligan(src) // 4 tc new /obj/item/switchblade(src) //basically 1 tc as it can be bought from BM kits new /obj/item/storage/fancy/cigarettes/cigpack_syndicate (src) // 2 tc this shit heals new /obj/item/flashlight/emp(src) // 2 tc @@ -208,7 +208,7 @@ new /obj/item/implanter/freedom(src) // 5 tc new /obj/item/flashlight/emp(src) // 2 tc new /obj/item/grenade/c4/x4(src) // 1ish tc - new /obj/item/reagent_containers/pill/cyanide(src) + new /obj/item/reagent_containers/applicator/pill/cyanide(src) new /obj/item/toy/cards/deck/syndicate(src) // 1 tc, for poker if(KIT_NINJA) @@ -318,7 +318,7 @@ new /obj/item/card/emag(src) // 4 tc new /obj/item/card/emag/doorjack(src) //emag used to do both. 3 tc new /obj/item/pen/sleepy(src) // 4 tc - new /obj/item/reagent_containers/pill/cyanide(src) + new /obj/item/reagent_containers/applicator/pill/cyanide(src) new /obj/item/chameleon(src) //its not the original cloaking device, but it will do. 8 tc new /obj/item/gun/ballistic/revolver(src) // 13 tc old one stays in the old box new /obj/item/implanter/freedom(src) // 5 tc @@ -580,6 +580,11 @@ for(var/i in 1 to 3) new/obj/item/grenade/chem_grenade/ez_clean(src) +/obj/item/storage/box/syndie_kit/mulligan/PopulateContents() + . = ..() + new /obj/item/reagent_containers/syringe/mulligan(src) + new /obj/item/fake_identity_kit(src) + /obj/item/storage/box/hug/reverse_revolver/PopulateContents() new /obj/item/gun/ballistic/revolver/reverse(src) @@ -669,6 +674,17 @@ for(var/i in 1 to 7) new /obj/item/ammo_box/magazine/sniper_rounds/surplus(src) +/obj/item/storage/box/syndie_kit/shotgun_surplus + name = "\improper Donk Co. 'Donk Spike' flechette 12g Bulldog magazine box" + desc = "A shoddy box full of Donk Co. 'Donk Spike' flechette 12g. It is debatable whether or not these are actually \ + better or worse than standard flechette. Donk Co. did genuinely believe in this product being the future of military \ + ammunition production. The only reason it didn't see wider adoption was a lack of faith in the product. Do you \ + believe in Donk? Time to put that to the test." + +/obj/item/storage/box/syndie_kit/shotgun_surplus/PopulateContents() + for(var/i in 1 to 7) + new /obj/item/ammo_box/magazine/m12g/donk(src) + ///Subtype for the sabotage bundle. Contains three C4, two X4 and 6 signalers /obj/item/storage/backpack/duffelbag/syndie/sabotage diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm index 9329bc9dc11..3a56b7f9ace 100644 --- a/code/game/objects/items/storage/wallets.dm +++ b/code/game/objects/items/storage/wallets.dm @@ -42,7 +42,7 @@ /obj/item/photo, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator, /obj/item/screwdriver, /obj/item/seeds, /obj/item/spess_knife, diff --git a/code/game/objects/items/tongs.dm b/code/game/objects/items/tongs.dm index 4748cbddedb..53ad3b95c45 100644 --- a/code/game/objects/items/tongs.dm +++ b/code/game/objects/items/tongs.dm @@ -97,6 +97,6 @@ held_food.layer = layer held_food.plane = plane held_food.transform = held_food.transform.Scale(0.7, 0.7) - held_food.pixel_x = 6 - held_food.pixel_y = 6 + held_food.pixel_w = 6 + held_food.pixel_z = 6 . += held_food diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index 50bd1716c36..23d25970ecf 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -134,12 +134,18 @@ return if(exposed_temperature && !(resistance_flags & FIRE_PROOF)) take_damage(clamp(0.02 * exposed_temperature, 0, 20), BURN, FIRE, 0) + if(QDELETED(src)) // take_damage() can send our obj to an early grave, let's stop here if that happens + return if(!(resistance_flags & ON_FIRE) && (resistance_flags & FLAMMABLE) && !(resistance_flags & FIRE_PROOF)) - AddComponent(/datum/component/burning, custom_fire_overlay || GLOB.fire_overlay, burning_particles) + AddComponent(/datum/component/burning, custom_fire_overlay() || GLOB.fire_overlay, burning_particles) SEND_SIGNAL(src, COMSIG_ATOM_FIRE_ACT, exposed_temperature, exposed_volume) return TRUE return ..() +/// Returns a custom fire overlay, if any +/obj/proc/custom_fire_overlay() + return custom_fire_overlay + /// Should be called when the atom is destroyed by fire, comparable to acid_melt() proc /obj/proc/burn() deconstruct(FALSE) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 74919fd71d0..46cf3987381 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -27,7 +27,7 @@ /// A multiplier to an object's force when used against a structure, vehicle, machine, or robot. var/demolition_mod = 1 - /// Custom fire overlay icon, will just use the default overlay if this is null + /// Cached custom fire overlay var/custom_fire_overlay /// Particles this obj uses when burning, if any var/burning_particles diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 7f5e4c6b76d..193a5c8b669 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -22,8 +22,6 @@ if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH(src) QUEUE_SMOOTH_NEIGHBORS(src) - if(smoothing_flags & SMOOTH_CORNERS) - icon_state = "" GLOB.cameranet.updateVisibility(src) /obj/structure/Destroy(force) diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index e6dad759c83..ca7ae8a01fd 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -133,7 +133,7 @@ desc = "A thick resin surface covers the floor." anchored = TRUE density = FALSE - layer = MID_TURF_LAYER + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE icon = 'icons/obj/smooth_structures/alien/weeds1.dmi' icon_state = "weeds1-0" diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm index b0de02fef48..47b1ab530d9 100644 --- a/code/game/objects/structures/beds_chairs/alien_nest.dm +++ b/code/game/objects/structures/beds_chairs/alien_nest.dm @@ -7,7 +7,6 @@ icon_state = "nest-0" base_icon_state = "nest" max_integrity = 120 - can_be_unanchored = FALSE smoothing_flags = SMOOTH_BITMASK smoothing_groups = SMOOTH_GROUP_ALIEN_NEST canSmoothWith = SMOOTH_GROUP_ALIEN_NEST diff --git a/code/game/objects/structures/bonfire.dm b/code/game/objects/structures/bonfire.dm index e6f7edd9396..f390fdebf71 100644 --- a/code/game/objects/structures/bonfire.dm +++ b/code/game/objects/structures/bonfire.dm @@ -52,7 +52,7 @@ buckle_requires_restraints = TRUE to_chat(user, span_notice("You add a rod to \the [src].")) var/mutable_appearance/rod_underlay = mutable_appearance('icons/obj/service/hydroponics/equipment.dmi', "bonfire_rod") - rod_underlay.pixel_y = 16 + rod_underlay.pixel_z = 16 underlays += rod_underlay if("Grill") grill = TRUE diff --git a/code/game/objects/structures/cat_house.dm b/code/game/objects/structures/cat_house.dm index bfaa464ff6d..ea016e00d67 100644 --- a/code/game/objects/structures/cat_house.dm +++ b/code/game/objects/structures/cat_house.dm @@ -41,6 +41,6 @@ return var/image/cat_icon = image(icon = resident_cat.icon, icon_state = resident_cat.icon_state, layer = LOW_ITEM_LAYER) cat_icon.transform = cat_icon.transform.Scale(0.7, 0.7) - cat_icon.pixel_x = 0 - cat_icon.pixel_y = -9 + cat_icon.pixel_w = 0 + cat_icon.pixel_z = -9 . += cat_icon diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index baf12ad92ac..c9563678de4 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -42,7 +42,7 @@ new /obj/item/assembly/flash/handheld(src) new /obj/item/clothing/neck/petcollar(src) new /obj/item/pet_carrier(src) - new /obj/item/door_remote/civilian(src) + new /obj/item/door_remote/head_of_personnel(src) new /obj/item/circuitboard/machine/techfab/department/service(src) new /obj/item/storage/photo_album/hop(src) new /obj/item/storage/lockbox/medal/hop(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index ba91cc988bf..57575e5e412 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -32,9 +32,11 @@ /// Icon state to use for lid to display when opened. Leave undefined if there isn't one. var/lid_icon_state /// Controls the X value of the lid, allowing left and right pixel movement. - var/lid_x = 0 + var/lid_w = 0 /// Controls the Y value of the lid, allowing up and down pixel movement. - var/lid_y = 0 + var/lid_z = 0 + var/weld_w = 0 + var/weld_z = 0 /obj/structure/closet/crate/Initialize(mapload) AddElement(/datum/element/climbable, climb_time = crate_climb_time, climb_stun = 0) //add element in closed state before parent init opens it(if it does) @@ -95,12 +97,15 @@ . += "securecrateg" if(welded) - . += icon_welded + var/mutable_appearance/weld_overlay = mutable_appearance(icon, "welded") + weld_overlay.pixel_w = weld_w + weld_overlay.pixel_z = weld_z + . += weld_overlay if(opened && lid_icon_state) var/mutable_appearance/lid = mutable_appearance(icon = lid_icon, icon_state = lid_icon_state) - lid.pixel_x = lid_x - lid.pixel_y = lid_y + lid.pixel_w = lid_w + lid.pixel_z = lid_z lid.layer = layer . += lid @@ -185,6 +190,7 @@ base_icon_state = "trashcart" can_install_electronics = FALSE paint_jobs = null + weld_z = 5 /obj/structure/closet/crate/trashcart/laundry name = "laundry cart" diff --git a/code/game/objects/structures/crates_lockers/crates/cardboard.dm b/code/game/objects/structures/crates_lockers/crates/cardboard.dm index 5d1418e397e..1544bb2e0a4 100644 --- a/code/game/objects/structures/crates_lockers/crates/cardboard.dm +++ b/code/game/objects/structures/crates_lockers/crates/cardboard.dm @@ -13,6 +13,7 @@ paint_jobs = null cutting_tool = /obj/item/wirecutters can_weld_shut = FALSE + lid_icon_state = "cardboardopen" /obj/structure/closet/crate/cardboard/mothic name = "\improper Mothic Fleet box" @@ -25,3 +26,8 @@ desc = "For holding lizards, presumably." icon_state = "cardboard_tiziran" base_icon_state = "cardboard_tiziran" + +/obj/structure/closet/crate/cardboard/update_icon_state() + . = ..() + if(opened) + icon_state = "[base_icon_state]" diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index e80542c32b1..787b48a3192 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -111,6 +111,7 @@ icon_state = "atmos_secure" base_icon_state = "atmos_secure" + /obj/structure/closet/crate/secure/science name = "secure science crate" desc = "A crate with a lock on it, painted in the scheme of the station's scientists." @@ -129,6 +130,7 @@ damage_deflection = 10 icon_state = "securetrashcart" base_icon_state = "securetrashcart" + weld_z = 5 paint_jobs = null req_access = list(ACCESS_JANITOR) diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 22c18a15212..d6523ca74c2 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -15,7 +15,6 @@ smoothing_flags = SMOOTH_BITMASK smoothing_groups = SMOOTH_GROUP_WALLS + SMOOTH_GROUP_CLOSED_TURFS canSmoothWith = SMOOTH_GROUP_WALLS - can_be_unanchored = FALSE can_atmos_pass = ATMOS_PASS_DENSITY rad_insulation = RAD_MEDIUM_INSULATION material_flags = MATERIAL_EFFECTS @@ -42,12 +41,11 @@ if(.) return - opening = TRUE if(!density) - var/srcturf = get_turf(src) - for(var/mob/living/obstacle in srcturf) //Stop people from using this as a shield - opening = FALSE + for(var/mob/living/obstacle in get_turf(src)) //Stop people from using this as a shield return + + opening = TRUE update_appearance() addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/structure/falsewall, toggle_open)), 0.5 SECONDS) @@ -66,7 +64,6 @@ if(opening) smoothing_flags = NONE - clear_smooth_overlays() else smoothing_flags = SMOOTH_BITMASK QUEUE_SMOOTH(src) @@ -435,6 +432,5 @@ girder_icon_state += "_[density ? "opening" : "closing"]" else if(!density) girder_icon_state += "_open" - var/mutable_appearance/girder_underlay = mutable_appearance('icons/obj/structures.dmi', girder_icon_state, layer = LOW_OBJ_LAYER-0.01) - girder_underlay.appearance_flags = RESET_ALPHA | RESET_COLOR + var/mutable_appearance/girder_underlay = mutable_appearance('icons/obj/structures.dmi', girder_icon_state, layer = LOW_OBJ_LAYER-0.01, appearance_flags = RESET_ALPHA | RESET_COLOR | KEEP_APART) underlays += girder_underlay diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm index 7acfa65f625..c4e1418372c 100644 --- a/code/game/objects/structures/fluff.dm +++ b/code/game/objects/structures/fluff.dm @@ -87,7 +87,7 @@ icon = 'icons/obj/mining_zones/survival_pod.dmi' icon_state = "fan_tiny" plane = FLOOR_PLANE - layer = ABOVE_OPEN_TURF_LAYER + layer = BELOW_CATWALK_LAYER /** * A variety of statue in disrepair; parts are broken off and a gemstone is missing diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm index f46caa48c7b..a1246f4d1b4 100644 --- a/code/game/objects/structures/guillotine.dm +++ b/code/game/objects/structures/guillotine.dm @@ -76,7 +76,7 @@ var/msg = "It is [anchored ? "wrenched to the floor." : "unsecured. A wrench should fix that."]" if (blade_status == GUILLOTINE_BLADE_RAISED) - msg += "The blade is raised, ready to fall, and" + msg += " The blade is raised, ready to fall, and" if (blade_sharpness >= GUILLOTINE_DECAP_MIN_SHARP) msg += " looks sharp enough to decapitate without any resistance." diff --git a/code/game/objects/structures/guncase.dm b/code/game/objects/structures/guncase.dm index b297b670b0e..11cb19e6d0f 100644 --- a/code/game/objects/structures/guncase.dm +++ b/code/game/objects/structures/guncase.dm @@ -27,7 +27,7 @@ if(case_type && LAZYLEN(contents)) var/mutable_appearance/gun_overlay = mutable_appearance(icon, case_type) for(var/i in 1 to contents.len) - gun_overlay.pixel_x = 3 * (i - 1) + gun_overlay.pixel_w = 3 * (i - 1) . += new /mutable_appearance(gun_overlay) . += "[icon_state]_[open ? "open" : "door"]" diff --git a/code/game/objects/structures/headpike.dm b/code/game/objects/structures/headpike.dm index fca32574455..d7a46463118 100644 --- a/code/game/objects/structures/headpike.dm +++ b/code/game/objects/structures/headpike.dm @@ -53,7 +53,7 @@ return var/mutable_appearance/appearance = new() appearance.copy_overlays(victim) - appearance.pixel_y = 12 + appearance.pixel_z = 12 appearance.layer = layer + 0.1 . += appearance diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm index 0461180721e..e6ca59016ed 100644 --- a/code/game/objects/structures/lavaland/necropolis_tendril.dm +++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm @@ -113,7 +113,7 @@ GLOBAL_LIST_INIT(tendrils, list()) collected += WEAKREF(collector) /obj/effect/collapse/Destroy() - QDEL_NULL(collected) + collected.Cut() QDEL_NULL(emitted_light) return ..() diff --git a/code/game/objects/structures/lavaland/ore_vent.dm b/code/game/objects/structures/lavaland/ore_vent.dm index d53935bda29..b44e7542a0a 100644 --- a/code/game/objects/structures/lavaland/ore_vent.dm +++ b/code/game/objects/structures/lavaland/ore_vent.dm @@ -230,7 +230,7 @@ if(istype(rock, /turf/open/misc/asteroid) && prob(35)) // so it's too common new /obj/effect/decal/cleanable/rubble(rock) if(prob(100 - (i * 15))) - rock.gets_drilled(user, FALSE) + rock.gets_drilled(user) if(prob(50)) new /obj/effect/decal/cleanable/rubble(rock) sleep(0.6 SECONDS) diff --git a/code/game/objects/structures/maintenance.dm b/code/game/objects/structures/maintenance.dm index 20cedf535fb..cdcd6a162af 100644 --- a/code/game/objects/structures/maintenance.dm +++ b/code/game/objects/structures/maintenance.dm @@ -177,8 +177,7 @@ at the cost of risking a vicious bite.**/ overlayicon = "altar_pants2" if(ALTAR_STAGETHREE) overlayicon = "altar_pants3" - var/mutable_appearance/pants_overlay = mutable_appearance(icon, overlayicon) - pants_overlay.appearance_flags = RESET_COLOR + var/mutable_appearance/pants_overlay = mutable_appearance(icon, overlayicon, appearance_flags = RESET_COLOR|KEEP_APART) pants_overlay.color = pants_color . += pants_overlay diff --git a/code/game/objects/structures/mannequin.dm b/code/game/objects/structures/mannequin.dm index dc213e762ed..48a2c093a6b 100644 --- a/code/game/objects/structures/mannequin.dm +++ b/code/game/objects/structures/mannequin.dm @@ -93,7 +93,7 @@ /obj/structure/mannequin/update_overlays() . = ..() var/mutable_appearance/pedestal = mutable_appearance(icon, "pedestal_[material]") - pedestal.pixel_y = -3 + pedestal.pixel_z = -3 . += pedestal var/datum/sprite_accessory/underwear/underwear = SSaccessories.underwear_list[underwear_name] if(underwear) diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 7890b74942c..516d990dacb 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -250,8 +250,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror/broken, 28) var/new_eye_color = tgui_color_picker(user, "Choose your eye color", "Eye Color", user.eye_color_left) // BUBBERSTATION EDIT: TGUI COLOR PICKER if(isnull(new_eye_color)) return TRUE - user.eye_color_left = sanitize_hexcolor(new_eye_color) - user.eye_color_right = sanitize_hexcolor(new_eye_color) + user.set_eye_color(sanitize_hexcolor(new_eye_color)) user.dna.update_ui_block(DNA_EYE_COLOR_LEFT_BLOCK) user.dna.update_ui_block(DNA_EYE_COLOR_RIGHT_BLOCK) user.update_body() diff --git a/code/game/objects/structures/mystery_box.dm b/code/game/objects/structures/mystery_box.dm index 3a1844aa222..cf76ad29ea7 100644 --- a/code/game/objects/structures/mystery_box.dm +++ b/code/game/objects/structures/mystery_box.dm @@ -128,7 +128,7 @@ GLOBAL_LIST_INIT(mystery_fishing, list( /// The box's current state, and whether it can be interacted with in different ways var/box_state = MYSTERY_BOX_STANDBY /// The object that represents the rapidly changing item that will be granted upon being claimed. Is not, itself, an item. - var/obj/mystery_box_item/presented_item + var/obj/effect/abstract/mystery_box_item/presented_item /// A timer for how long it takes for the box to start its expire animation var/box_expire_timer /// A timer for how long it takes for the box to close itself @@ -187,7 +187,10 @@ GLOBAL_LIST_INIT(mystery_fishing, list( /obj/structure/mystery_box/proc/activate(mob/living/user) box_state = MYSTERY_BOX_CHOOSING update_icon_state() - presented_item = new(loc) + presented_item = new(src) + presented_item.vis_flags = VIS_INHERIT_PLANE + presented_item.flags_1 |= IS_ONTOP_1 + vis_contents += presented_item presented_item.start_animation(src) current_sound_channel = SSsounds.reserve_sound_channel(src) playsound(src, open_sound, 70, FALSE, channel = current_sound_channel, falloff_exponent = 10) @@ -297,12 +300,12 @@ GLOBAL_LIST_INIT(mystery_fishing, list( return ..() /// This represents the item that comes out of the box and is constantly changing before the box finishes deciding. Can probably be just an /atom or /movable. -/obj/mystery_box_item +/obj/effect/abstract/mystery_box_item name = "???" desc = "Who knows what it'll be??" icon = 'icons/obj/weapons/guns/ballistic.dmi' icon_state = "revolver" - pixel_y = -8 + pixel_z = -4 uses_integrity = FALSE /// The currently selected item. Constantly changes while choosing, determines what is spawned if the prize is claimed, and its current icon @@ -313,36 +316,36 @@ GLOBAL_LIST_INIT(mystery_fishing, list( var/claimable = FALSE -/obj/mystery_box_item/Initialize(mapload) +/obj/effect/abstract/mystery_box_item/Initialize(mapload) . = ..() var/matrix/starting = matrix() starting.Scale(0.5,0.5) transform = starting add_filter("weapon_rays", 3, list("type" = "rays", "size" = 28, "color" = COLOR_VIVID_YELLOW)) -/obj/mystery_box_item/Destroy(force) +/obj/effect/abstract/mystery_box_item/Destroy(force) parent_box = null return ..() // this way, clicking on the prize will work the same as clicking on the box -/obj/mystery_box_item/attack_hand(mob/living/user, list/modifiers) +/obj/effect/abstract/mystery_box_item/attack_hand(mob/living/user, list/modifiers) . = ..() if(claimable) parent_box.grant_weapon(user) /// Start pushing the prize up -/obj/mystery_box_item/proc/start_animation(atom/parent) +/obj/effect/abstract/mystery_box_item/proc/start_animation(atom/parent) parent_box = parent loop_icon_changes() /// Keep changing the icon and selected path -/obj/mystery_box_item/proc/loop_icon_changes() +/obj/effect/abstract/mystery_box_item/proc/loop_icon_changes() var/change_delay = 1 // the running count of the delay var/change_delay_delta = 1 // How much to increment the delay per step so the changing slows down var/change_counter = 0 // The running count of the running count var/matrix/starting = matrix() - animate(src, pixel_y = 6, transform = starting, time = MBOX_DURATION_CHOOSING, easing = QUAD_EASING | EASE_OUT) + animate(src, pixel_z = 10, transform = starting, time = MBOX_DURATION_CHOOSING, easing = QUAD_EASING | EASE_OUT) while((change_counter + change_delay_delta + change_delay) < MBOX_DURATION_CHOOSING) change_delay += change_delay_delta @@ -353,12 +356,12 @@ GLOBAL_LIST_INIT(mystery_fishing, list( addtimer(CALLBACK(src, PROC_REF(present_item)), MBOX_DURATION_CHOOSING) /// animate() isn't up to the task for queueing up icon changes, so this is the proc we call with timers to update our icon -/obj/mystery_box_item/proc/update_random_icon(new_item_type) +/obj/effect/abstract/mystery_box_item/proc/update_random_icon(new_item_type) var/atom/movable/new_item = new_item_type icon = new_item::icon icon_state = new_item::icon_state -/obj/mystery_box_item/proc/present_item() +/obj/effect/abstract/mystery_box_item/proc/present_item() var/atom/movable/selected_item = selected_path add_filter("ready_outline", 2, list("type" = "outline", "color" = COLOR_VIVID_YELLOW, "size" = 0.2)) name = selected_item::name @@ -366,10 +369,10 @@ GLOBAL_LIST_INIT(mystery_fishing, list( claimable = TRUE /// Sink back into the box -/obj/mystery_box_item/proc/expire_animation() +/obj/effect/abstract/mystery_box_item/proc/expire_animation() var/matrix/shrink_back = matrix() shrink_back.Scale(0.5,0.5) - animate(src, pixel_y = -8, transform = shrink_back, time = MBOX_DURATION_EXPIRING) + animate(src, pixel_z = -4, transform = shrink_back, time = MBOX_DURATION_EXPIRING) #undef MYSTERY_BOX_COOLING_DOWN #undef MYSTERY_BOX_STANDBY diff --git a/code/game/objects/structures/plaques/static_plaques.dm b/code/game/objects/structures/plaques/static_plaques.dm index c13cf832ab2..53e1cbb3198 100644 --- a/code/game/objects/structures/plaques/static_plaques.dm +++ b/code/game/objects/structures/plaques/static_plaques.dm @@ -25,83 +25,6 @@ /obj/structure/plaque/static_plaque/golden/captain name = "The Most Robust Captain Award for Robustness" -/obj/structure/plaque/static_plaque/tram - /// The tram we have info about - var/specific_transport_id = TRAMSTATION_LINE_1 - /// Weakref to the tram we have info about - var/datum/weakref/transport_ref - /// Serial number of the tram - var/tram_serial - name = "\improper tram information plate" - icon_state = "commission_tram" - custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT) - layer = SIGN_LAYER - -/obj/structure/plaque/static_plaque/tram/Initialize(mapload) - . = ..() - return INITIALIZE_HINT_LATELOAD - -/obj/structure/plaque/static_plaque/tram/LateInitialize() - link_tram() - set_tram_serial() - -/obj/structure/plaque/static_plaque/tram/add_context(atom/source, list/context, obj/item/held_item, mob/user) - . = ..() - if(isnull(held_item)) - context[SCREENTIP_CONTEXT_LMB] = "View details" - return CONTEXTUAL_SCREENTIP_SET - -/obj/structure/plaque/static_plaque/tram/proc/link_tram() - for(var/datum/transport_controller/linear/tram/tram as anything in SStransport.transports_by_type[TRANSPORT_TYPE_TRAM]) - if(tram.specific_transport_id == specific_transport_id) - transport_ref = WEAKREF(tram) - break - -/obj/structure/plaque/static_plaque/tram/proc/set_tram_serial() - var/datum/transport_controller/linear/tram/tram = transport_ref?.resolve() - if(isnull(tram) || isnull(tram.tram_registration)) - return - - tram_serial = tram.tram_registration.serial_number - desc = "A plate showing details from the manufacturer about this Nakamura Engineering SkyyTram Mk VI, serial number [tram_serial].

We are not responsible for any injuries or fatalities caused by usage of the tram. \ - Using the tram carries inherent risks, and we cannot guarantee the safety of all passengers. By using the tram, you assume, acknowledge, and accept all the risks and responsibilities.

\ - Please be aware that riding the tram can cause a variety of injuries, including but not limited to: slips, trips, and falls; collisions with other passengers or objects; strains, sprains, and other musculoskeletal injuries; \ - cuts, bruises, and lacerations; and more severe injuries such as head trauma, spinal cord injuries, and even death. These injuries can be caused by a variety of factors, including the movements of the tram, the behaviour \ - of other passengers, and unforeseen circumstances such as foul play or mechanical issues.

\ - By entering the tram, guideway, or crossings you agree Nanotrasen is not liable for any injuries, damages, or losses that may occur. If you do not agree to these terms, please do not use the tram.
" - -/obj/structure/plaque/static_plaque/tram/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "TramPlaque") - ui.autoupdate = FALSE - ui.open() - -/obj/structure/plaque/static_plaque/tram/ui_static_data(mob/user) - var/datum/transport_controller/linear/tram/tram = transport_ref?.resolve() - var/list/data = list() - var/list/current_tram = list() - var/list/previous_trams = list() - - current_tram += list(list( - "serialNumber" = tram.tram_registration.serial_number, - "mfgDate" = tram.tram_registration.mfg_date, - "distanceTravelled" = tram.tram_registration.distance_travelled, - "tramCollisions" = tram.tram_registration.collisions, - )) - - for(var/datum/tram_mfg_info/previous_tram as anything in tram.tram_history) - previous_trams += list(list( - "serialNumber" = previous_tram.serial_number, - "mfgDate" = previous_tram.mfg_date, - "distanceTravelled" = previous_tram.distance_travelled, - "tramCollisions" = previous_tram.collisions, - )) - - data["currentTram"] = current_tram - data["previousTrams"] = previous_trams - return data - // Commission plaques, to give a little backstory to the stations. Commission dates are date of merge (or best approximation, in the case of Meta) + 540 years to convert to SS13 dates. // Where PRs are available, I've linked them. Where they are unavailable, a git hash is provided instead for the direct commit that added/removed the map. // Please enjoy this trip through SS13's history. diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm index d470008bb9c..3aafd2bf7fc 100644 --- a/code/game/objects/structures/reflector.dm +++ b/code/game/objects/structures/reflector.dm @@ -96,7 +96,7 @@ return ITEM_INTERACT_SUCCESS user.visible_message(span_notice("[user] starts to dismantle [src]."), span_notice("You start to dismantle [src]...")) if(!tool.use_tool(src, user, 8 SECONDS, volume=50)) - return + return ITEM_INTERACT_BLOCKING to_chat(user, span_notice("You dismantle [src].")) new framebuildstacktype(drop_location(), framebuildstackamount) if(buildstackamount) @@ -106,7 +106,7 @@ /obj/structure/reflector/welder_act(mob/living/user, obj/item/tool) if(!tool.tool_start_check(user, amount=1)) - return + return ITEM_INTERACT_BLOCKING if(atom_integrity < max_integrity) user.visible_message(span_notice("[user] starts to repair [src]."), span_notice("You begin repairing [src]..."), diff --git a/code/game/objects/structures/signs/_signs.dm b/code/game/objects/structures/signs/_signs.dm index d3713ca1b2f..664a4696c36 100644 --- a/code/game/objects/structures/signs/_signs.dm +++ b/code/game/objects/structures/signs/_signs.dm @@ -210,7 +210,7 @@ return ..() /obj/item/sign/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) - if(!iswallturf(interacting_with)) + if(!iswallturf(interacting_with) && !istype(interacting_with, /obj/structure/tram)) return NONE var/turf/target_turf = interacting_with var/turf/user_turf = get_turf(user) @@ -275,6 +275,11 @@ var/obj/structure/sign/potential_sign = s if(!initial(potential_sign.is_editable)) continue - output[initial(potential_sign.sign_change_name)] = potential_sign + var/shown_name = initial(potential_sign.sign_change_name) || capitalize(format_text(initial(potential_sign.name))) + if(output[shown_name]) + if(!ispath(potential_sign, output[shown_name])) + stack_trace("Two signs share the same sign_change_name: [output[shown_name]] and [potential_sign]") + continue + output[shown_name] = potential_sign output = sort_list(output) //Alphabetizes the results. return output diff --git a/code/game/objects/structures/signs/signs_departments.dm b/code/game/objects/structures/signs/signs_departments.dm index 532cbcfc426..9966ced8f47 100644 --- a/code/game/objects/structures/signs/signs_departments.dm +++ b/code/game/objects/structures/signs/signs_departments.dm @@ -191,7 +191,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/departments/holy, 32) /obj/structure/sign/departments/holy_alt name = "\improper Chapel sign" - sign_change_name = "Department - Chapel" + sign_change_name = "Department - Chapel Alt" desc = "A sign labelling a religious area." icon_state = "chapel" diff --git a/code/game/objects/structures/signs/signs_misc.dm b/code/game/objects/structures/signs/signs_misc.dm index 0b0348977df..6825063c95e 100644 --- a/code/game/objects/structures/signs/signs_misc.dm +++ b/code/game/objects/structures/signs/signs_misc.dm @@ -27,3 +27,85 @@ desc = "85cr for a iced lactose-free caramel frappe?! Who buys that?!" MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/xenobio_guide, 32) + +// Tram-mounted statistics plate +/obj/structure/sign/tram_plate + /// The tram we have info about + var/specific_transport_id = TRAMSTATION_LINE_1 + /// Weakref to the tram we have info about + var/datum/weakref/transport_ref + /// Serial number of the tram + var/tram_serial + name = "tram information plate" + sign_change_name = "Information - Tram Statistics" + icon_state = "commission_tram" + max_integrity = 150 + armor_type = /datum/armor/tram_structure + is_editable = FALSE + +/obj/structure/sign/tram_plate/Initialize(mapload) + . = ..() + return INITIALIZE_HINT_LATELOAD + +/obj/structure/sign/tram_plate/LateInitialize() + link_tram() + set_tram_serial() + +/obj/structure/sign/tram_plate/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if(isnull(held_item)) + context[SCREENTIP_CONTEXT_LMB] = "View details" + return CONTEXTUAL_SCREENTIP_SET + +/obj/structure/sign/tram_plate/proc/link_tram() + for(var/datum/transport_controller/linear/tram/tram as anything in SStransport.transports_by_type[TRANSPORT_TYPE_TRAM]) + if(tram.specific_transport_id == specific_transport_id) + transport_ref = WEAKREF(tram) + break + +/obj/structure/sign/tram_plate/proc/set_tram_serial() + var/datum/transport_controller/linear/tram/tram = transport_ref?.resolve() + if(isnull(tram) || isnull(tram.tram_registration)) + return + + tram_serial = tram.tram_registration.serial_number + desc = "A plate showing details from the manufacturer about this Nakamura Engineering SkyyTram Mk VI, serial number [tram_serial].

We are not responsible for any injuries or fatalities caused by usage of the tram. \ + Using the tram carries inherent risks, and we cannot guarantee the safety of all passengers. By using the tram, you assume, acknowledge, and accept all the risks and responsibilities.

\ + Please be aware that riding the tram can cause a variety of injuries, including but not limited to: slips, trips, and falls; collisions with other passengers or objects; strains, sprains, and other musculoskeletal injuries; \ + cuts, bruises, and lacerations; and more severe injuries such as head trauma, spinal cord injuries, and even death. These injuries can be caused by a variety of factors, including the movements of the tram, the behaviour \ + of other passengers, and unforeseen circumstances such as foul play or mechanical issues.

\ + By entering the tram, guideway, or crossings you agree Nanotrasen is not liable for any injuries, damages, or losses that may occur. If you do not agree to these terms, please do not use the tram.
" + +/obj/structure/sign/tram_plate/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "TramPlaque") + ui.autoupdate = FALSE + ui.open() + +/obj/structure/sign/tram_plate/ui_static_data(mob/user) + var/datum/transport_controller/linear/tram/tram = transport_ref?.resolve() + var/list/data = list() + var/list/current_tram = list() + var/list/previous_trams = list() + + current_tram += list(list( + "serialNumber" = tram.tram_registration.serial_number, + "mfgDate" = tram.tram_registration.mfg_date, + "distanceTravelled" = tram.tram_registration.distance_travelled, + "tramCollisions" = tram.tram_registration.collisions, + )) + + for(var/datum/tram_mfg_info/previous_tram as anything in tram.tram_history) + previous_trams += list(list( + "serialNumber" = previous_tram.serial_number, + "mfgDate" = previous_tram.mfg_date, + "distanceTravelled" = previous_tram.distance_travelled, + "tramCollisions" = previous_tram.collisions, + )) + + data["currentTram"] = current_tram + data["previousTrams"] = previous_trams + return data + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/tram_plate, 32) diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm index cb45eb18e75..36ae8e5fb70 100644 --- a/code/game/objects/structures/table_frames.dm +++ b/code/game/objects/structures/table_frames.dm @@ -21,59 +21,63 @@ var/framestack = /obj/item/stack/rods var/framestackamount = 2 +/obj/structure/table_frame/Initialize(mapload) + . = ..() + register_context() -/obj/structure/table_frame/wrench_act(mob/living/user, obj/item/I) - to_chat(user, span_notice("You start disassembling [src]...")) - I.play_tool_sound(src) - if(!I.use_tool(src, user, 3 SECONDS)) - return TRUE +/obj/structure/table_frame/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + if(isnull(held_item)) + return NONE + + if(held_item.tool_behaviour == TOOL_WRENCH) + context[SCREENTIP_CONTEXT_LMB] = "Deconstruct" + context[SCREENTIP_CONTEXT_RMB] = "Deconstruct" + return CONTEXTUAL_SCREENTIP_SET + + if(isstack(held_item) && get_table_type(held_item)) + context[SCREENTIP_CONTEXT_LMB] = "Construct table" + return CONTEXTUAL_SCREENTIP_SET + +/obj/structure/table_frame/wrench_act(mob/living/user, obj/item/tool) + balloon_alert(user, "deconstructing...") + tool.play_tool_sound(src) + if(!tool.use_tool(src, user, 3 SECONDS)) + return ITEM_INTERACT_BLOCKING playsound(loc, 'sound/items/deconstruct.ogg', 50, TRUE) deconstruct(TRUE) - return TRUE + return ITEM_INTERACT_SUCCESS +/obj/structure/table_frame/wrench_act_secondary(mob/living/user, obj/item/tool) + return wrench_act(user, tool) -/obj/structure/table_frame/attackby(obj/item/I, mob/user, params) - if(isstack(I)) - var/obj/item/stack/material = I - if(material.tableVariant) - if(material.get_amount() < 1) - to_chat(user, span_warning("You need one [material.name] sheet to do this!")) - return - if(locate(/obj/structure/table) in loc) - to_chat(user, span_warning("There's already a table built here!")) - return - to_chat(user, span_notice("You start adding [material] to [src]...")) - if(!do_after(user, 2 SECONDS, target = src) || !material.use(1) || (locate(/obj/structure/table) in loc)) - return - make_new_table(material.tableVariant) - else if(istype(material, /obj/item/stack/sheet)) - if(material.get_amount() < 1) - to_chat(user, span_warning("You need one sheet to do this!")) - return - if(locate(/obj/structure/table) in loc) - to_chat(user, span_warning("There's already a table built here!")) - return - to_chat(user, span_notice("You start adding [material] to [src]...")) - if(!do_after(user, 2 SECONDS, target = src) || !material.use(1) || (locate(/obj/structure/table) in loc)) - return - var/list/material_list = list() - if(material.material_type) - material_list[material.material_type] = SHEET_MATERIAL_AMOUNT - make_new_table(/obj/structure/table/greyscale, material_list) - return - return ..() +/obj/structure/table_frame/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!isstack(tool)) + return NONE + var/obj/item/stack/our_stack = tool + var/table_type = get_table_type(our_stack) + if(isnull(table_type)) + return NONE + if(our_stack.get_amount() < 1) + balloon_alert(user, "need more material!") + return ITEM_INTERACT_BLOCKING + if(locate(/obj/structure/table) in loc) + balloon_alert(user, "can't stack tables!") + return ITEM_INTERACT_BLOCKING -/obj/structure/table_frame/proc/make_new_table(table_type, custom_materials, carpet_type) //makes sure the new table made retains what we had as a frame - var/obj/structure/table/T = new table_type(loc) - T.frame = type - T.framestack = framestack - T.framestackamount = framestackamount - if (carpet_type) - T.buildstack = carpet_type - if(custom_materials) - T.set_custom_materials(custom_materials) + balloon_alert(user, "constructing table...") + if(!do_after(user, 2 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + if((locate(/obj/structure/table) in loc) || !our_stack.use(1)) + return ITEM_INTERACT_BLOCKING + + new table_type(loc, src, our_stack) qdel(src) + return ITEM_INTERACT_SUCCESS + +/// Gets the table type we make with our given stack. +/obj/structure/table_frame/proc/get_table_type(obj/item/stack/our_stack) + return our_stack.get_table_type() /obj/structure/table_frame/atom_deconstruct(disassembled = TRUE) new framestack(get_turf(src), framestackamount) @@ -94,22 +98,8 @@ framestackamount = 2 resistance_flags = FLAMMABLE -/obj/structure/table_frame/wood/attackby(obj/item/I, mob/user, params) - if (isstack(I)) - var/obj/item/stack/material = I - var/toConstruct // stores the table variant - var/carpet_type // stores the carpet type used for construction in case of poker tables - if(istype(I, /obj/item/stack/sheet/mineral/wood)) - toConstruct = /obj/structure/table/wood - else if(istype(I, /obj/item/stack/tile/carpet)) - toConstruct = /obj/structure/table/wood/poker - carpet_type = I.type - if (toConstruct) - if(material.get_amount() < 1) - to_chat(user, span_warning("You need one [material.name] sheet to do this!")) - return - to_chat(user, span_notice("You start adding [material] to [src]...")) - if(do_after(user, 2 SECONDS, target = src) && material.use(1)) - make_new_table(toConstruct, null, carpet_type) - else - return ..() +/obj/structure/table_frame/wood/get_table_type(obj/item/stack/our_stack) + if(istype(our_stack, /obj/item/stack/sheet/mineral/wood)) + return /obj/structure/table/wood + if(istype(our_stack, /obj/item/stack/tile/carpet)) + return /obj/structure/table/wood/poker diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index c7e6ba7ca0b..b57c527e075 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -38,10 +38,13 @@ var/framestackamount = 2 var/deconstruction_ready = TRUE -/obj/structure/table/Initialize(mapload, _buildstack) +/obj/structure/table/Initialize(mapload, obj/structure/table_frame/frame_used, obj/item/stack/stack_used) . = ..() - if(_buildstack) - buildstack = _buildstack + if(frame_used) + apply_frame_properties(frame_used) + if(stack_used) + apply_stack_properties(stack_used) + AddElement(/datum/element/footstep_override, priority = STEP_SOUND_TABLE_PRIORITY) make_climbable() @@ -57,6 +60,16 @@ ADD_TRAIT(src, TRAIT_COMBAT_MODE_SKIP_INTERACTION, INNATE_TRAIT) +/// Applies additional properties based on the frame used to construct this table. +/obj/structure/table/proc/apply_frame_properties(obj/structure/table_frame/frame_used) + frame = frame_used.type + framestack = frame_used.framestack + framestackamount = frame_used.framestackamount + +/// Applies additional properties based on the stack used to construct this table. +/obj/structure/table/proc/apply_stack_properties(obj/item/stack/stack_used) + return + ///Adds the element used to make the object climbable, and also the one that shift the mob buckled to it up. /obj/structure/table/proc/make_climbable() AddElement(/datum/element/climbable) @@ -183,13 +196,12 @@ pushed_mob.Knockdown(30) pushed_mob.apply_damage(10, BRUTE) pushed_mob.apply_damage(40, STAMINA) - if(user.mind?.martial_art?.smashes_tables && user.mind?.martial_art.can_use(user)) - deconstruct(FALSE) playsound(pushed_mob, 'sound/effects/tableslam.ogg', 90, TRUE) pushed_mob.visible_message(span_danger("[user] slams [pushed_mob] onto \the [src]!"), \ span_userdanger("[user] slams you onto \the [src]!")) log_combat(user, pushed_mob, "tabled", null, "onto [src]") pushed_mob.add_mood_event("table", /datum/mood_event/table) + SEND_SIGNAL(user, COMSIG_LIVING_TABLE_SLAMMING, pushed_mob, src) /obj/structure/table/proc/tablelimbsmash(mob/living/user, mob/living/pushed_mob) pushed_mob.Knockdown(30) @@ -200,13 +212,12 @@ pushed_mob.apply_damage(30, BRUTE, banged_limb, wound_bonus = extra_wound) pushed_mob.apply_damage(60, STAMINA) take_damage(50) - if(user.mind?.martial_art?.smashes_tables && user.mind?.martial_art.can_use(user)) - deconstruct(FALSE) playsound(pushed_mob, 'sound/effects/bang.ogg', 90, TRUE) pushed_mob.visible_message(span_danger("[user] smashes [pushed_mob]'s [banged_limb.plaintext_zone] against \the [src]!"), span_userdanger("[user] smashes your [banged_limb.plaintext_zone] against \the [src]")) log_combat(user, pushed_mob, "head slammed", null, "against [src]") pushed_mob.add_mood_event("table", /datum/mood_event/table_limbsmash, banged_limb) + SEND_SIGNAL(user, COMSIG_LIVING_TABLE_LIMB_SLAMMING, pushed_mob, src) /obj/structure/table/screwdriver_act_secondary(mob/living/user, obj/item/tool) if(!deconstruction_ready) @@ -360,6 +371,11 @@ material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS buildstack = null //No buildstack, so generate from mat datums +/obj/structure/table/greyscale/apply_stack_properties(obj/item/stack/stack_used) + if(!stack_used.material_type) + return + set_custom_materials(list(stack_used.material_type = SHEET_MATERIAL_AMOUNT)) + /obj/structure/table/greyscale/finalize_material_effects(list/materials) . = ..() var/english_list = get_material_english_list(materials) @@ -378,7 +394,7 @@ /// Lazylist of the items that we have on our surface. var/list/attached_items = null -/obj/structure/table/rolling/Initialize(mapload) +/obj/structure/table/rolling/Initialize(mapload, obj/structure/table_frame/frame_used, obj/item/stack/stack_used) . = ..() AddElement(/datum/element/noisy_movement) @@ -461,7 +477,7 @@ fire = 80 acid = 100 -/obj/structure/table/glass/Initialize(mapload) +/obj/structure/table/glass/Initialize(mapload, obj/structure/table_frame/frame_used, obj/item/stack/stack_used) . = ..() var/static/list/loc_connections = list( COMSIG_ATOM_ENTERED = PROC_REF(on_entered), @@ -556,6 +572,9 @@ base_icon_state = "poker_table" buildstack = /obj/item/stack/tile/carpet +/obj/structure/table/wood/poker/apply_stack_properties(obj/item/stack/stack_used) + buildstack = stack_used.type + /obj/structure/table/wood/poker/narsie_act() ..(FALSE) @@ -572,7 +591,7 @@ canSmoothWith = SMOOTH_GROUP_FANCY_WOOD_TABLES var/smooth_icon = 'icons/obj/smooth_structures/fancy_table.dmi' // see Initialize() -/obj/structure/table/wood/fancy/Initialize(mapload) +/obj/structure/table/wood/fancy/Initialize(mapload, obj/structure/table_frame/frame_used, obj/item/stack/stack_used) . = ..() // Needs to be set dynamically because table smooth sprites are 32x34, // which the editor treats as a two-tile-tall object. The sprites are that @@ -580,6 +599,9 @@ // the sprites in the editor to see why. icon = smooth_icon +/obj/structure/table/wood/fancy/apply_stack_properties(obj/item/stack/stack_used) + buildstack = stack_used.type + /obj/structure/table/wood/fancy/black icon_state = "fancy_table_black" base_icon_state = "fancy_table_black" @@ -808,7 +830,7 @@ var/mob/living/carbon/patient = null var/obj/machinery/computer/operating/computer = null -/obj/structure/table/optable/Initialize(mapload) +/obj/structure/table/optable/Initialize(mapload, obj/structure/table_frame/frame_used, obj/item/stack/stack_used) . = ..() for(var/direction in GLOB.alldirs) computer = locate(/obj/machinery/computer/operating) in get_step(src, direction) diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm index 2975d08f1f2..abaa1789641 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube.dm @@ -146,13 +146,13 @@ tube_overlay.icon_state = "decorative_diag" switch(shift_dir) if(NORTH) - tube_overlay.pixel_y = 32 + tube_overlay.pixel_z = 32 if(SOUTH) - tube_overlay.pixel_y = -32 + tube_overlay.pixel_z = -32 if(EAST) - tube_overlay.pixel_x = 32 + tube_overlay.pixel_w = 32 if(WEST) - tube_overlay.pixel_x = -32 + tube_overlay.pixel_w = -32 else tube_overlay.icon_state = "decorative" diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 445af1fab2b..9d263d4cc53 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -9,7 +9,6 @@ flags_1 = ON_BORDER_1 obj_flags = CAN_BE_HIT | BLOCKS_CONSTRUCTION_DIR | IGNORE_DENSITY max_integrity = 50 - can_be_unanchored = TRUE resistance_flags = ACID_PROOF armor_type = /datum/armor/structure_window can_atmos_pass = ATMOS_PASS_PROC diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index f8d2a9db058..bc8d594b8c9 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -40,15 +40,23 @@ AddComponent(/datum/component/simple_rotation) register_context() +/obj/machinery/power/shuttle_engine/on_construction(mob/user) + . = ..() + if(anchored) + connect_to_shuttle(port = SSshuttle.get_containing_shuttle(src)) //connect to a new ship, if needed + if(!connected_ship_ref?.resolve()) + AddElement(/datum/element/connect_loc, connections) + /obj/machinery/power/shuttle_engine/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock) . = ..() if(!port) return FALSE connected_ship_ref = WEAKREF(port) port.engine_list += src - port.current_engine_power += engine_power if(mapload) port.initial_engine_power += engine_power + if(engine_state == ENGINE_WELDED) + alter_engine_power(engine_power) /obj/machinery/power/shuttle_engine/Destroy() if(engine_state == ENGINE_WELDED) diff --git a/code/game/sound.dm b/code/game/sound.dm index ce1fc1994f8..e0cae9841d6 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -1,28 +1,3 @@ - -///Default override for echo -/sound - echo = list( - 0, // Direct - 0, // DirectHF - -10000, // Room, -10000 means no low frequency sound reverb - -10000, // RoomHF, -10000 means no high frequency sound reverb - 0, // Obstruction - 0, // ObstructionLFRatio - 0, // Occlusion - 0.25, // OcclusionLFRatio - 1.5, // OcclusionRoomRatio - 1.0, // OcclusionDirectRatio - 0, // Exclusion - 1.0, // ExclusionLFRatio - 0, // OutsideVolumeHF - 0, // DopplerFactor - 0, // RolloffFactor - 0, // RoomRolloffFactor - 1.0, // AirAbsorptionFactor - 0, // Flags (1 = Auto Direct, 2 = Auto Room, 4 = Auto RoomHF) - ) - environment = SOUND_ENVIRONMENT_NONE //Default to none so sounds without overrides dont get reverb - /** * playsound is a proc used to play a 3D sound in a specific range. This uses SOUND_RANGE + extra_range to determine that. * @@ -62,9 +37,11 @@ var/sound/S = isdatum(soundin) ? soundin : sound(get_sfx(soundin)) var/maxdistance = SOUND_RANGE + extrarange var/source_z = turf_source.z - var/list/listeners = SSmobs.clients_by_zlevel[source_z].Copy() - . = list()//output everything that successfully heard the sound + if(vary && !frequency) + frequency = get_rand_frequency() // skips us having to do it per-sound later. should just make this a macro tbh + + var/list/listeners var/turf/above_turf = GET_TURF_ABOVE(turf_source) var/turf/below_turf = GET_TURF_BELOW(turf_source) @@ -72,25 +49,29 @@ var/audible_distance = CALCULATE_MAX_SOUND_AUDIBLE_DISTANCE(vol, maxdistance, falloff_distance, falloff_exponent) if(ignore_walls) + listeners = get_hearers_in_range(audible_distance, turf_source, RECURSIVE_CONTENTS_CLIENT_MOBS) if(above_turf && istransparentturf(above_turf)) - listeners += SSmobs.clients_by_zlevel[above_turf.z] + listeners += get_hearers_in_range(audible_distance, above_turf, RECURSIVE_CONTENTS_CLIENT_MOBS) if(below_turf && istransparentturf(turf_source)) - listeners += SSmobs.clients_by_zlevel[below_turf.z] + listeners += get_hearers_in_range(audible_distance, below_turf, RECURSIVE_CONTENTS_CLIENT_MOBS) else //these sounds don't carry through walls - listeners = get_hearers_in_view(audible_distance, turf_source) + listeners = get_hearers_in_view(audible_distance, turf_source, RECURSIVE_CONTENTS_CLIENT_MOBS) if(above_turf && istransparentturf(above_turf)) - listeners += get_hearers_in_view(audible_distance, above_turf) + listeners += get_hearers_in_view(audible_distance, above_turf, RECURSIVE_CONTENTS_CLIENT_MOBS) if(below_turf && istransparentturf(turf_source)) - listeners += get_hearers_in_view(audible_distance, below_turf) + listeners += get_hearers_in_view(audible_distance, below_turf, RECURSIVE_CONTENTS_CLIENT_MOBS) + for(var/mob/listening_ghost as anything in SSmobs.dead_players_by_zlevel[source_z]) + if(get_dist(listening_ghost, turf_source) <= audible_distance) + listeners += listening_ghost - for(var/mob/listening_mob in listeners | SSmobs.dead_players_by_zlevel[source_z])//observers always hear through walls - if(get_dist(listening_mob, turf_source) <= audible_distance) - listening_mob.playsound_local(turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance, 1, use_reverb) - . += listening_mob + for(var/mob/listening_mob in listeners)//had nulls sneak in here, hence the typecheck + listening_mob.playsound_local(turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance, 1, use_reverb) + + return listeners /** * Plays a sound with a specific point of origin for src mob @@ -179,9 +160,10 @@ var/area/A = get_area(src) sound_to_use.environment = A.sound_environment - if(use_reverb && sound_to_use.environment != SOUND_ENVIRONMENT_NONE) //We have reverb, reset our echo setting - sound_to_use.echo[3] = -1300 //Room setting, 0 means normal reverb //SKYRAT EDIT CHANGE - sound_to_use.echo[4] = -1300 //RoomHF setting, 0 means normal reverb. //SKYRAT EDIT CHANGE + if(!use_reverb || sound_to_use.environment == SOUND_ENVIRONMENT_NONE) + sound_to_use.echo ||= new /list(18) + sound_to_use.echo[3] = -10000 + sound_to_use.echo[4] = -10000 if(HAS_TRAIT(src, TRAIT_SOUND_DEBUGGED)) to_chat(src, span_admin("Max Range-[max_distance] Distance-[distance] Vol-[round(sound_to_use.volume, 0.01)] Sound-[sound_to_use.file]")) diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 478aa47bc76..12bc1d3f2be 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -286,7 +286,7 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( if(ispath(oldType, /turf/closed) && isopenturf(src)) SSair.add_to_active(src) else //In effect, I want closed turfs to make their tile active when sheered, but we need to queue it since they have no adjacent turfs - CALCULATE_ADJACENT_TURFS(src, (!(ispath(oldType, /turf/closed) && isopenturf(src)) ? NORMAL_TURF : MAKE_ACTIVE)) + CALCULATE_ADJACENT_TURFS(src, (ispath(oldType, /turf/closed) && isopenturf(src) ? MAKE_ACTIVE : NORMAL_TURF)) /turf/open/AfterChange(flags, oldType) ..() diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index 60b85110086..0af752b18c2 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -182,7 +182,7 @@ TIMER_COOLDOWN_END(src, REF(user)) //if we fail we can start again immediately return if(ismineralturf(src)) - gets_drilled(user, TRUE) + gets_drilled(user, 1) SSblackbox.record_feedback("tally", "pick_used_mining", 1, I.type) /turf/closed/mineral/attack_hand(mob/user) @@ -208,9 +208,9 @@ if(user.Adjacent(src)) attack_hand(user) -/turf/closed/mineral/proc/gets_drilled(mob/user, give_exp = FALSE) +/turf/closed/mineral/proc/gets_drilled(mob/user, exp_multiplier = 0) if(istype(user)) - SEND_SIGNAL(user, COMSIG_MOB_MINED, src, give_exp) + SEND_SIGNAL(user, COMSIG_MOB_MINED, src, exp_multiplier) if(mineralType && (mineralAmt > 0)) new mineralType(src, mineralAmt) SSblackbox.record_feedback("tally", "ore_mined", mineralAmt, mineralType) @@ -218,11 +218,11 @@ new spawned_boulder(src) if(ishuman(user)) var/mob/living/carbon/human/H = user - if(give_exp) + if(exp_multiplier) if (mineralType && (mineralAmt > 0)) - H.mind.adjust_experience(/datum/skill/mining, initial(mineralType.mine_experience) * mineralAmt) + H.mind.adjust_experience(/datum/skill/mining, initial(mineralType.mine_experience) * mineralAmt * exp_multiplier) else - H.mind.adjust_experience(/datum/skill/mining, 4) + H.mind.adjust_experience(/datum/skill/mining, 4 * exp_multiplier) for(var/obj/effect/temp_visual/mining_overlay/M in src) qdel(M) @@ -255,23 +255,23 @@ /turf/closed/mineral/ex_act(severity, target) . = ..() if(target == src) - gets_drilled(null, FALSE) + gets_drilled() return TRUE switch(severity) if(EXPLODE_DEVASTATE) - gets_drilled(null, FALSE) + gets_drilled() if(EXPLODE_HEAVY) if(prob(90)) - gets_drilled(null, FALSE) + gets_drilled() if(EXPLODE_LIGHT) if(prob(75)) - gets_drilled(null, FALSE) + gets_drilled() return TRUE /turf/closed/mineral/blob_act(obj/structure/blob/B) if(prob(50)) - gets_drilled(give_exp = FALSE) + gets_drilled() /turf/closed/mineral/random /// What are the base odds that this turf spawns a mineral in the wall on initialize? @@ -836,9 +836,9 @@ if(defuser) SEND_SIGNAL(defuser, COMSIG_LIVING_DEFUSED_GIBTONITE, det_time) -/turf/closed/mineral/gibtonite/gets_drilled(mob/user, give_exp = FALSE, triggered_by_explosion = FALSE) +/turf/closed/mineral/gibtonite/gets_drilled(mob/user, exp_multiplier = 0, triggered_by_explosion = FALSE) if(istype(user)) - SEND_SIGNAL(user, COMSIG_MOB_MINED, src, give_exp) + SEND_SIGNAL(user, COMSIG_MOB_MINED, src, exp_multiplier) if(stage == GIBTONITE_UNSTRUCK && mineralAmt >= 1) //Gibtonite deposit is activated playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,TRUE) @@ -850,13 +850,13 @@ stage = GIBTONITE_DETONATE explosion(bombturf, devastation_range = 1, heavy_impact_range = 2, light_impact_range = 5, flame_range = 0, flash_range = 0, adminlog = FALSE, explosion_cause = src) if(stage == GIBTONITE_STABLE) //Gibtonite deposit is now benign and extractable. Depending on how close you were to it blowing up before defusing, you get better quality ore. - var/obj/item/gibtonite/G = new (src) + var/obj/item/gibtonite/ore = new (src) if(det_time <= 0) - G.quality = 3 - G.icon_state = "gibtonite_3" + ore.quality = GIBTONITE_QUALITY_HIGH + ore.icon_state = "gibtonite_3" if(det_time >= 1 && det_time <= 2) - G.quality = 2 - G.icon_state = "gibtonite_2" + ore.quality = GIBTONITE_QUALITY_MEDIUM + ore.icon_state = "gibtonite_2" var/flags = NONE var/old_type = type @@ -908,9 +908,9 @@ to_chat(usr, span_warning("The rock seems to be too strong to destroy. Maybe I can break it once I become a master miner.")) -/turf/closed/mineral/strong/gets_drilled(mob/user, give_exp = FALSE) +/turf/closed/mineral/strong/gets_drilled(mob/user, exp_multiplier = 0) if(istype(user)) - SEND_SIGNAL(user, COMSIG_MOB_MINED, src, give_exp) + SEND_SIGNAL(user, COMSIG_MOB_MINED, src, exp_multiplier) if(!ishuman(user)) return // see attackby diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm index 3937ed55710..47b4e75cd26 100644 --- a/code/game/turfs/closed/walls.dm +++ b/code/game/turfs/closed/walls.dm @@ -306,8 +306,8 @@ if(WALL_DENT_HIT) decal.icon_state = "impact[rand(1, 3)]" - decal.pixel_x = x - decal.pixel_y = y + decal.pixel_w = x + decal.pixel_z = y if(LAZYLEN(dent_decals)) cut_overlay(dent_decals) diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm index 1b532687b6b..b0aaba8103c 100644 --- a/code/game/turfs/open/_open.dm +++ b/code/game/turfs/open/_open.dm @@ -235,7 +235,6 @@ planetary_atmos = TRUE initial_gas_mix = LAVALAND_DEFAULT_ATMOS baseturfs = /turf/open/indestructible/hierophant - smoothing_flags = SMOOTH_CORNERS smoothing_flags = SMOOTH_BITMASK smoothing_groups = SMOOTH_GROUP_TURF_OPEN + SMOOTH_GROUP_HIEROPHANT canSmoothWith = SMOOTH_GROUP_HIEROPHANT diff --git a/code/game/turfs/open/asteroid.dm b/code/game/turfs/open/asteroid.dm index d0234b826a2..fd9a275efc6 100644 --- a/code/game/turfs/open/asteroid.dm +++ b/code/game/turfs/open/asteroid.dm @@ -287,7 +287,7 @@ GLOBAL_LIST_EMPTY(dug_up_basalt) //Used in SnowCabin.dm /turf/open/misc/asteroid/snow/snow_cabin - temperature = 180 + temperature = ICEBOX_MIN_TEMPERATURE /turf/open/misc/asteroid/snow/atmosphere initial_gas_mix = FROZEN_ATMOS diff --git a/code/game/turfs/open/chasm.dm b/code/game/turfs/open/chasm.dm index 003719d3bdf..e490abceda7 100644 --- a/code/game/turfs/open/chasm.dm +++ b/code/game/turfs/open/chasm.dm @@ -125,6 +125,7 @@ // Chasm that doesn't do any z-level nonsense and just kills/stores whoever steps into it. /turf/open/chasm/true desc = "There's nothing at the bottom. Absolutely nothing." + baseturfs = /turf/open/chasm/true /turf/open/chasm/true/apply_components(mapload) AddComponent(/datum/component/chasm, null, mapload) //Don't pass anything for below_turf. diff --git a/code/game/turfs/open/cliff.dm b/code/game/turfs/open/cliff.dm index 1417e527e64..fa3eed90c44 100644 --- a/code/game/turfs/open/cliff.dm +++ b/code/game/turfs/open/cliff.dm @@ -30,8 +30,8 @@ if(isnull(underlay_tile)) return var/image/underlay = image(icon_state = initial(underlay_tile.icon_state), icon = initial(underlay_tile.icon)) - underlay.pixel_x = undertile_pixel_x //if there's a pixel offset, correct it because we should be lined up with the grid - underlay.pixel_y = undertile_pixel_y + underlay.pixel_w = undertile_pixel_x //if there's a pixel offset, correct it because we should be lined up with the grid + underlay.pixel_z = undertile_pixel_y SET_PLANE(underlay, underlay_plane || plane, src) underlays += underlay @@ -82,7 +82,7 @@ // We can walk infront of the bottom cliff turf, so check that here if(!iscliffturf(get_step(src, fall_direction)) && !(get_dir(arrived, src) & fall_direction)) return FALSE - + // gravity // marked in UNLINT due to a spacemandmm bug: https://github.com/SpaceManiac/SpacemanDMM/issues/382 (REMOVE ONCE FIXED!) if(UNLINT(!arrived.has_gravity(src))) diff --git a/code/game/turfs/open/floor/catwalk_plating.dm b/code/game/turfs/open/floor/catwalk_plating.dm index 6e2979b8512..b1f81be75d3 100644 --- a/code/game/turfs/open/floor/catwalk_plating.dm +++ b/code/game/turfs/open/floor/catwalk_plating.dm @@ -105,7 +105,7 @@ /turf/open/floor/catwalk_floor/iron_dark/telecomms initial_gas_mix = TCOMMS_ATMOS -/turf/open/floor/catwalk_floor/titanium/Airless +/turf/open/floor/catwalk_floor/titanium/airless initial_gas_mix = AIRLESS_ATMOS /turf/open/floor/catwalk_floor/iron_smooth/airless diff --git a/code/game/turfs/open/floor/fancy_floor.dm b/code/game/turfs/open/floor/fancy_floor.dm index 23479eb1481..9d17ab3300f 100644 --- a/code/game/turfs/open/floor/fancy_floor.dm +++ b/code/game/turfs/open/floor/fancy_floor.dm @@ -69,7 +69,7 @@ //Used in Snowcabin.dm /turf/open/floor/wood/freezing - temperature = 180 + temperature = ICEBOX_MIN_TEMPERATURE /turf/open/floor/wood/airless initial_gas_mix = AIRLESS_ATMOS @@ -163,7 +163,7 @@ AddElement(/datum/element/diggable, /obj/item/stack/ore/glass, 2, worm_chance = 50, \ action_text = "uproot", action_text_third_person = "uproots") -/turf/open/floor/grass/Airless +/turf/open/floor/grass/airless initial_gas_mix = AIRLESS_ATMOS /turf/open/floor/grass/proc/spawniconchange() diff --git a/code/game/turfs/open/floor/iron_floor.dm b/code/game/turfs/open/floor/iron_floor.dm index 16f74866a1c..904cefb4b15 100644 --- a/code/game/turfs/open/floor/iron_floor.dm +++ b/code/game/turfs/open/floor/iron_floor.dm @@ -310,7 +310,7 @@ base_icon_state = "recharge_floor" floor_tile = /obj/item/stack/tile/iron/recharge_floor -/turf/open/floor/iron/recharge_floor/Airless +/turf/open/floor/iron/recharge_floor/airless initial_gas_mix = AIRLESS_ATMOS /turf/open/floor/iron/recharge_floor/asteroid diff --git a/code/game/turfs/open/floor/mineral_floor.dm b/code/game/turfs/open/floor/mineral_floor.dm index a8cf2a6f37d..98cdf446c3c 100644 --- a/code/game/turfs/open/floor/mineral_floor.dm +++ b/code/game/turfs/open/floor/mineral_floor.dm @@ -178,7 +178,7 @@ //Used in SnowCabin.dm /turf/open/floor/mineral/plastitanium/red/snow_cabin - temperature = 180 + temperature = ICEBOX_MIN_TEMPERATURE //BANANIUM diff --git a/code/game/turfs/open/floor/misc_floor.dm b/code/game/turfs/open/floor/misc_floor.dm index 5346af1f3ab..13d29d4925f 100644 --- a/code/game/turfs/open/floor/misc_floor.dm +++ b/code/game/turfs/open/floor/misc_floor.dm @@ -4,7 +4,7 @@ /turf/open/floor/circuit icon = 'icons/turf/floors.dmi' icon_state = "bcircuit" - var/icon_normal = "bcircuit" + base_icon_state = "bcircuit" light_color = LIGHT_COLOR_BABY_BLUE floor_tile = /obj/item/stack/tile/circuit /// If we want to ignore our area's power status and just be always off @@ -40,7 +40,7 @@ set_light(2, 1.5) /turf/open/floor/circuit/update_icon_state() - icon_state = on ? (LAZYLEN(SSmapping.nuke_threats) ? "rcircuitanim" : icon_normal) : "[icon_normal]off" + icon_state = on ? (LAZYLEN(SSmapping.nuke_threats) ? "rcircuitanim" : initial(icon_state)) : "[base_icon_state]off" return ..() /turf/open/floor/circuit/on_change_area(area/old_area, area/new_area) @@ -88,7 +88,7 @@ /turf/open/floor/circuit/green icon_state = "gcircuit" - icon_normal = "gcircuit" + base_icon_state = "gcircuit" light_color = LIGHT_COLOR_VIVID_GREEN floor_tile = /obj/item/stack/tile/circuit/green @@ -98,7 +98,6 @@ /turf/open/floor/circuit/green/anim icon_state = "gcircuitanim" - icon_normal = "gcircuitanim" floor_tile = /obj/item/stack/tile/circuit/green/anim /turf/open/floor/circuit/green/airless @@ -112,7 +111,7 @@ /turf/open/floor/circuit/red icon_state = "rcircuit" - icon_normal = "rcircuit" + base_icon_state = "rcircuit" light_color = LIGHT_COLOR_INTENSE_RED floor_tile = /obj/item/stack/tile/circuit/red @@ -122,7 +121,6 @@ /turf/open/floor/circuit/red/anim icon_state = "rcircuitanim" - icon_normal = "rcircuitanim" floor_tile = /obj/item/stack/tile/circuit/red/anim /turf/open/floor/circuit/red/airless diff --git a/code/game/turfs/open/floor/plating/misc_plating.dm b/code/game/turfs/open/floor/plating/misc_plating.dm index 101376e73ae..2bb58f31b09 100644 --- a/code/game/turfs/open/floor/plating/misc_plating.dm +++ b/code/game/turfs/open/floor/plating/misc_plating.dm @@ -52,7 +52,7 @@ icon_state = "snowplating" base_icon_state = "snowplating" initial_gas_mix = FROZEN_ATMOS - temperature = 180 + temperature = ICEBOX_MIN_TEMPERATURE attachment_holes = FALSE planetary_atmos = TRUE footstep = FOOTSTEP_SAND @@ -91,7 +91,7 @@ //Used in SnowCabin.dm /turf/open/floor/plating/snowed/snow_cabin - temperature = 180 + temperature = ICEBOX_MIN_TEMPERATURE /turf/open/floor/plating/snowed/smoothed/icemoon initial_gas_mix = ICEMOON_DEFAULT_ATMOS diff --git a/code/game/turfs/open/ice.dm b/code/game/turfs/open/ice.dm index 7d0a37ff847..a966e8e4d7e 100644 --- a/code/game/turfs/open/ice.dm +++ b/code/game/turfs/open/ice.dm @@ -5,7 +5,7 @@ icon_state = "ice_turf-0" base_icon_state = "ice_turf-0" initial_gas_mix = FROZEN_ATMOS - temperature = 180 + temperature = ICEBOX_MIN_TEMPERATURE planetary_atmos = TRUE baseturfs = /turf/open/misc/ice slowdown = 1 diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 4705db14ccb..bcce677e15d 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -595,7 +595,7 @@ GLOBAL_LIST_EMPTY(station_turfs) SET_PLANE(I, GAME_PLANE, src) I.layer = OBJ_LAYER I.appearance = AM.appearance - I.appearance_flags = RESET_COLOR|RESET_ALPHA|RESET_TRANSFORM + I.appearance_flags = RESET_COLOR|RESET_ALPHA|RESET_TRANSFORM|KEEP_APART I.loc = src I.setDir(AM.dir) I.alpha = 128 @@ -795,9 +795,9 @@ GLOBAL_LIST_EMPTY(station_turfs) return TRUE /** - * the following are some hacky fishing-related optimizations to shave off + * the following are some fishing-related optimizations to shave off as much * time we spend implementing the fishing as possible, even if that means - * doing hackier code, because we've hundreds of turfs like lava, water etc every round, + * hackier code, because we've hundreds of turfs like lava, water etc every round, */ /turf/proc/add_lazy_fishing(fish_source_path) RegisterSignal(src, COMSIG_FISHING_ROD_CAST, PROC_REF(add_fishing_spot_comp)) @@ -831,7 +831,7 @@ GLOBAL_LIST_EMPTY(station_turfs) /turf/proc/on_fish_release_into(datum/source, obj/item/fish/fish, mob/living/releaser) SIGNAL_HANDLER - GLOB.preset_fish_sources[fish_source].readd_fish(fish, releaser) + GLOB.preset_fish_sources[fish_source].readd_fish(src, fish, releaser) /turf/examine(mob/user) . = ..() diff --git a/code/game/world.dm b/code/game/world.dm index c940d2bdef5..2485481fd79 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -177,7 +177,7 @@ GLOBAL_PROTECT(tracy_init_reason) SetupLogs() - load_admins() + load_admins(initial = TRUE) load_poll_data() diff --git a/code/ze_genesis_call/genesis_call.dm b/code/genesis_call.dme similarity index 94% rename from code/ze_genesis_call/genesis_call.dm rename to code/genesis_call.dme index f1fbed382d4..2466af786c1 100644 --- a/code/ze_genesis_call/genesis_call.dm +++ b/code/genesis_call.dme @@ -25,10 +25,10 @@ * THE GENESIS CALL * * THE VERY FIRST LINE OF DM CODE TO EXECUTE - * Ong this must be done after !!!EVERYTHING!!! else + * Ong this must be done before !!!EVERYTHING!!! else * NO IFS ANDS OR BUTS * it's a hack, not an example of any sort, and DEFINITELY should NOT be emulated - * IT JUST HAS TO BE LAST!!!!!! + * IT JUST HAS TO BE FIRST!!!!!! * If you want to do something in the initialization pipeline * FIRST RTFM IN /code/game/world.dm * AND THEN NEVER RETURN TO THIS PLACE diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 3b959d449cd..19810f5ab8f 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -211,7 +211,11 @@ GLOBAL_PROTECT(protected_ranks) /// (Re)Loads the admin list. /// returns TRUE if database admins had to be loaded from the backup json -/proc/load_admins(no_update) +/proc/load_admins(no_update, initial = FALSE) + if(!initial) + if(!global.config.PreConfigReload()) + return + var/dbfail if(!CONFIG_GET(flag/admin_legacy_system) && !SSdbcore.Connect()) message_admins("Failed to connect to database while loading admins. Loading from backup.") diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 1884116424c..42b528a2405 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -22,8 +22,7 @@ human.set_facial_hairstyle(random_facial_hairstyle(human.gender), update = FALSE) human.set_haircolor("#[random_color()]", update = FALSE) human.set_facial_haircolor(human.hair_color, update = FALSE) - human.eye_color_left = random_eye_color() - human.eye_color_right = human.eye_color_left + human.set_eye_color(random_eye_color()) human.skin_tone = pick(GLOB.skin_tones) human.dna.species.randomize_active_underwear_only(human) // Needs to be called towards the end to update all the UIs just set above @@ -47,8 +46,7 @@ human.physique = human.gender human.real_name = human.generate_random_mob_name() human.name = human.get_visible_name() - human.eye_color_left = random_eye_color() - human.eye_color_right = human.eye_color_left + human.set_eye_color(random_eye_color()) human.skin_tone = pick(GLOB.skin_tones) // No underwear generation handled here var/picked_color = random_hair_color() diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index df08496ec2a..020d03dbfc2 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -33,9 +33,10 @@ GLOBAL_PROTECT(href_token) var/datum/filter_editor/filteriffic var/datum/particle_editor/particle_test - var/datum/colorblind_tester/color_test = new + var/datum/colorblind_tester/color_test var/datum/plane_master_debug/plane_debug var/obj/machinery/computer/libraryconsole/admin_only_do_not_map_in_you_fucker/library_manager + var/datum/pathfind_debug/path_debug /// Whether or not the user tried to connect, but was blocked by 2FA var/blocked_by_2fa = FALSE @@ -78,7 +79,8 @@ GLOBAL_PROTECT(href_token) if(IsAdminAdvancedProcCall()) alert_to_permissions_elevation_attempt(usr) return QDEL_HINT_LETMELIVE - . = ..() + QDEL_NULL(path_debug) + return ..() /datum/admins/proc/activate() if(IsAdminAdvancedProcCall()) @@ -99,6 +101,7 @@ GLOBAL_PROTECT(href_token) GLOB.deadmins[target] = src GLOB.admin_datums -= target QDEL_NULL(plane_debug) + QDEL_NULL(path_debug) deadmined = TRUE var/client/client = owner || GLOB.directory[target] @@ -172,18 +175,18 @@ GLOBAL_PROTECT(href_token) return cached_feedback_link if (!SSdbcore.IsConnected()) - return FALSE + return null var/datum/db_query/feedback_query = SSdbcore.NewQuery("SELECT feedback FROM [format_table_name("admin")] WHERE ckey = '[owner.ckey]'") if(!feedback_query.Execute()) log_sql("Error retrieving feedback link for [src]") qdel(feedback_query) - return FALSE + return null if(!feedback_query.NextRow()) qdel(feedback_query) - return FALSE // no feedback link exists + return null // no feedback link exists cached_feedback_link = feedback_query.item[1] || NO_FEEDBACK_LINK qdel(feedback_query) diff --git a/code/modules/admin/permissionedit.dm b/code/modules/admin/permissionedit.dm index a4a4c525167..f0ffe85aa2d 100644 --- a/code/modules/admin/permissionedit.dm +++ b/code/modules/admin/permissionedit.dm @@ -471,7 +471,7 @@ ADMIN_VERB(edit_admin_permissions, R_PERMISSIONS, "Permissions Panel", "Edit adm admin_holder.rank_flags(), 350, 590, - allowed_edit_list = usr.client.holder.can_edit_rights_flags(), + allowed_edit_flags = usr.client.holder.can_edit_rights_flags(), ) admin_holder.disassociate() diff --git a/code/modules/admin/smites/_smite.dm b/code/modules/admin/smites/_smite.dm new file mode 100644 index 00000000000..ca66bedf2d5 --- /dev/null +++ b/code/modules/admin/smites/_smite.dm @@ -0,0 +1,38 @@ +/// A smite, used by admins to punish players, or for their own amusement +/datum/smite + /// The name of the smite, shown in the menu + var/name + /// Flags which modify how the smite fires + var/smite_flags = NONE + /// Should this smite write to logs? + var/should_log = TRUE + +/// Called once after either choosing the option to smite a player, or when selected in smite build mode. +/// Use this to prompt the user configuration options. +/// Return FALSE if the smite should not be used. +/datum/smite/proc/configure(client/user) + +/// Invoked externally to actually perform the smite +/datum/smite/proc/do_effect(client/user, mob/living/target) + if(smite_flags & SMITE_DIVINE) + playsound(target, 'sound/effects/pray.ogg', 50, FALSE, -1) + target.add_overlay(mutable_appearance('icons/mob/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER)) + target.apply_status_effect(/datum/status_effect/spotlight_light/divine) + + if(smite_flags & SMITE_STUN) + target.Stun(3 SECONDS, ignore_canstun = TRUE) + if(smite_flags & SMITE_DELAY) + addtimer(CALLBACK(src, PROC_REF(delayed_effect), user, target), 2 SECONDS, TIMER_UNIQUE) + else + effect(user, target) + +/// Called after a delay if the smite has the SMITE_DELAY flag +/datum/smite/proc/delayed_effect(client/user, mob/living/target) + if(QDELETED(target)) + return + effect(user, target) + +/// The effect of the smite, make sure to call this in your own smites +/datum/smite/proc/effect(client/user, mob/living/target) + if (should_log) + user.punish_log(target, name) diff --git a/code/modules/admin/smites/become_object.dm b/code/modules/admin/smites/become_object.dm index 5f1af4bee28..542d1666bda 100644 --- a/code/modules/admin/smites/become_object.dm +++ b/code/modules/admin/smites/become_object.dm @@ -40,3 +40,7 @@ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(objectify), target, transform_path), OBJECTIFY_TIME) #undef OBJECTIFY_TIME + +/datum/smite/objectify/divine + name = "Become Object (Divine)" + smite_flags = SMITE_DIVINE|SMITE_STUN diff --git a/code/modules/admin/smites/berforate.dm b/code/modules/admin/smites/berforate.dm index 3d05afd519d..6b5fffa38e6 100644 --- a/code/modules/admin/smites/berforate.dm +++ b/code/modules/admin/smites/berforate.dm @@ -51,3 +51,7 @@ shots_this_limb += 1 if (shots_this_limb > shots_per_limb_per_rep) break + +/datum/smite/berforate/divine + name = ":B:erforate (Divine)" + smite_flags = SMITE_DIVINE diff --git a/code/modules/admin/smites/dust.dm b/code/modules/admin/smites/dust.dm new file mode 100644 index 00000000000..22ca6c536cb --- /dev/null +++ b/code/modules/admin/smites/dust.dm @@ -0,0 +1,10 @@ +/datum/smite/dust + name = "Dust" + +/datum/smite/dust/effect(client/user, mob/living/target) + . = ..() + target.dust(just_ash = FALSE, drop_items = TRUE, force = TRUE) + +/datum/smite/dust/divine + name = "Dust (Divine)" + smite_flags = SMITE_DIVINE|SMITE_DELAY|SMITE_STUN diff --git a/code/modules/admin/smites/gib.dm b/code/modules/admin/smites/gib.dm index 4c7c4324823..02007582a8d 100644 --- a/code/modules/admin/smites/gib.dm +++ b/code/modules/admin/smites/gib.dm @@ -5,3 +5,7 @@ /datum/smite/gib/effect(client/user, mob/living/target) . = ..() target.gib(DROP_ORGANS|DROP_BODYPARTS) + +/datum/smite/gib/divine + name = "Gib (Divine)" + smite_flags = SMITE_DIVINE|SMITE_DELAY|SMITE_STUN diff --git a/code/modules/admin/smites/lightning.dm b/code/modules/admin/smites/lightning.dm index 6ffd8eb5869..99cb46bdaac 100644 --- a/code/modules/admin/smites/lightning.dm +++ b/code/modules/admin/smites/lightning.dm @@ -1,6 +1,6 @@ /// Strikes the target with a lightning bolt /datum/smite/lightning - name = "Lightning bolt" + name = "Lightning Bolt" /datum/smite/lightning/effect(client/user, mob/living/target) . = ..() @@ -16,3 +16,7 @@ if(ishuman(user)) var/mob/living/carbon/human/human_target = user human_target.electrocution_animation(LIGHTNING_BOLT_ELECTROCUTION_ANIMATION_LENGTH) + +/datum/smite/lightning/divine + name = "Lightning Bolt (Divine)" + smite_flags = SMITE_DIVINE diff --git a/code/modules/admin/smites/petrify.dm b/code/modules/admin/smites/petrify.dm index 5380b93d732..c03a197c518 100644 --- a/code/modules/admin/smites/petrify.dm +++ b/code/modules/admin/smites/petrify.dm @@ -10,3 +10,7 @@ return var/mob/living/carbon/human/human_target = target human_target.petrify(statue_timer = INFINITY, save_brain = FALSE) + +/datum/smite/petrify/divine + name = "Petrify (Divine)" + smite_flags = SMITE_DIVINE|SMITE_DELAY|SMITE_STUN diff --git a/code/modules/admin/smites/retcon.dm b/code/modules/admin/smites/retcon.dm new file mode 100644 index 00000000000..461b7b330bb --- /dev/null +++ b/code/modules/admin/smites/retcon.dm @@ -0,0 +1,39 @@ +/datum/smite/retcon + name = "Retcon" + /// how long until the thing attacked by this smite gets deleted + var/timer + /// the time it takes to actually do the fade out animation, the victim will always have some time still fully visible + var/fade_out_timer + +/datum/smite/retcon/configure(client/user) + timer = tgui_input_number(user, "How long should it take before the target disappears, in seconds?", "Retcon", 5) + + if (isnull(timer)) + return FALSE + + fade_out_timer = timer*3*0.2 + +/datum/smite/retcon/effect(client/user, mob/living/target) + . = ..() + target.fade_into_nothing(timer SECONDS,fade_out_timer SECONDS) + if(ishuman(target)) + delete_record(target) + delete_bank_account(target) + reopen_job_slot(target) + +/datum/smite/retcon/proc/delete_record(mob/living/target) + var/name = target.real_name + GLOB.manifest.remove(name) + +/datum/smite/retcon/proc/delete_bank_account(mob/living/target) + var/name = target.real_name + var/account_list = flatten_list(SSeconomy.bank_accounts_by_id) + for(var/datum/bank_account/account in account_list) + if(account.account_holder == name) + qdel(account) + return + +/datum/smite/retcon/proc/reopen_job_slot(mob/living/target) + var/datum/job/target_job = target.mind?.assigned_role + if(target_job) + target_job.total_positions += 1 diff --git a/code/modules/admin/smites/smite.dm b/code/modules/admin/smites/smite.dm deleted file mode 100644 index b767f47f8fe..00000000000 --- a/code/modules/admin/smites/smite.dm +++ /dev/null @@ -1,17 +0,0 @@ -/// A smite, used by admins to punish players, or for their own amusement -/datum/smite - /// The name of the smite, shown in the menu - var/name - - /// Should this smite write to logs? - var/should_log = TRUE - -/// Called once after either choosing the option to smite a player, or when selected in smite build mode. -/// Use this to prompt the user configuration options. -/// Return FALSE if the smite should not be used. -/datum/smite/proc/configure(client/user) - -/// The effect of the smite, make sure to call this in your own smites -/datum/smite/proc/effect(client/user, mob/living/target) - if (should_log) - user.punish_log(target, name) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm index 1305e5a660d..47dd4c05eab 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm @@ -64,6 +64,8 @@ return istype(object, type) /proc/_ispath(path, type) + if(isnull(type)) + return ispath(path) return ispath(path, type) /proc/_length(E) @@ -270,7 +272,7 @@ winset(player, control_id, params) /proc/_winget(player, control_id, params) - winget(player, control_id, params) + return winget(player, control_id, params) /proc/_text2path(text) return text2path(text) @@ -297,3 +299,6 @@ if(!filter_index || filter_index < 1 || filter_index > length(target.filters)) return animate(target.filters[filter_index], appearance = set_vars, time, loop, easing, flags) + +/proc/_is_type_in_typecache(thing_to_check, typecache) + return is_type_in_typecache(thing_to_check, typecache) diff --git a/code/modules/admin/verbs/adminfun.dm b/code/modules/admin/verbs/adminfun.dm index 87109dd01f9..4da149a9c18 100644 --- a/code/modules/admin/verbs/adminfun.dm +++ b/code/modules/admin/verbs/adminfun.dm @@ -76,6 +76,18 @@ ADMIN_VERB(gib_self, R_ADMIN, "Gibself", "Give yourself the same treatment you g if (istype(ourself)) ourself.gib() +ADMIN_VERB(dust_self, R_ADMIN, "Dustself", "Give yourself the same treatment you give others.", ADMIN_CATEGORY_FUN) + var/confirm = tgui_alert(user, "You sure?", "Confirm", list("Yes", "No")) + if(confirm != "Yes") + return + log_admin("[key_name(user)] used dustself.") + message_admins(span_adminnotice("[key_name_admin(user)] used dustself.")) + BLACKBOX_LOG_ADMIN_VERB("Dust Self") + + var/mob/living/ourself = user.mob + if (istype(ourself)) + ourself.dust(just_ash = FALSE, drop_items = FALSE, force = TRUE) + ADMIN_VERB(everyone_random, R_SERVER, "Make Everyone Random", "Make everyone have a random appearance.", ADMIN_CATEGORY_FUN) if(SSticker.HasRoundStarted()) to_chat(user, "Nope you can't do this, the game's already started. This only works before rounds!", confidential = TRUE) @@ -164,7 +176,7 @@ ADMIN_VERB_AND_CONTEXT_MENU(admin_smite, R_ADMIN|R_FUN, "Smite", "Smite a player var/configuration_success = smite.configure(user) if (configuration_success == FALSE) return - smite.effect(user, target) + smite.do_effect(user, target) /// "Turns" people into objects. Really, we just add them to the contents of the item. /proc/objectify(atom/movable/target, path_or_instance) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index fb50c1d9834..f23fbbd8629 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -552,6 +552,8 @@ ADMIN_VERB(init_log, R_DEBUG, "Display Initialize() Log", "Displays a list of th browser.open() ADMIN_VERB(debug_color_test, R_DEBUG, "Colorblind Testing", "Change your view to a budget version of colorblindness to test for usability.", ADMIN_CATEGORY_DEBUG) + if(!user.holder.color_test) + user.holder.color_test = new() user.holder.color_test.ui_interact(user.mob) ADMIN_VERB(debug_plane_masters, R_DEBUG, "Edit/Debug Planes", "Edit and visualize plane masters and their connections (relays).", ADMIN_CATEGORY_DEBUG) @@ -654,6 +656,14 @@ ADMIN_VERB(run_empty_query, R_DEBUG, "Run Empty Query", "Runs a specified number message_admins("[key_name_admin(user)] ran [val] empty queries.") +ADMIN_VERB(test_pathfinding, R_DEBUG, "Toggle Pathfind Testing", "Enables/Disables pathfinding testing action buttons", ADMIN_CATEGORY_DEBUG) + BLACKBOX_LOG_ADMIN_VERB("Toggle Pathfind Testing") + log_admin("[key_name(user)] [user.holder.path_debug ? "disabled" : "enabled"] their pathfinding debug tools") + if(!user.holder.path_debug) + user.holder.path_debug = new(user.holder) + else + QDEL_NULL(user.holder.path_debug) + ADMIN_VERB(clear_turf_reservations, R_DEBUG, "Clear Dynamic Turf Reservations", "Deallocates all reserved space, restoring it to round start conditions.", ADMIN_CATEGORY_DEBUG) var/answer = tgui_alert( user, diff --git a/code/modules/admin/verbs/light_debug.dm b/code/modules/admin/verbs/light_debug.dm index fddd043f4db..c4a96f759f1 100644 --- a/code/modules/admin/verbs/light_debug.dm +++ b/code/modules/admin/verbs/light_debug.dm @@ -1,12 +1,12 @@ -/proc/debug_sources() +/proc/debug_light_sources() GLOB.light_debug_enabled = TRUE var/list/sum = list() var/total = 0 for(var/datum/light_source/source) if(!source.source_atom) continue - source.source_atom.debug() + source.source_atom.debug_lights() sum[source.source_atom.type] += 1 total += 1 @@ -29,14 +29,14 @@ var/datum/action/spawn_light/let_there_be = new (new_lad.mob.mind || new_lad.mob) let_there_be.Grant(new_lad.mob) -/proc/undebug_sources() +/proc/undebug_light_sources() GLOB.light_debug_enabled = FALSE for(var/datum/weakref/button_ref as anything in GLOB.light_debugged_atoms) var/atom/button = button_ref.resolve() if(!button) GLOB.light_debugged_atoms -= button_ref continue - button.undebug() + button.undebug_lights() SEND_GLOBAL_SIGNAL(COMSIG_LIGHT_DEBUG_DISABLED) SSdcs.UnregisterSignal(SSdcs, COMSIG_GLOB_CLIENT_CONNECT) @@ -44,7 +44,7 @@ GLOBAL_LIST_EMPTY(light_debugged_atoms) /// Sets up this light source to be debugged, setting up in world buttons to control and move it /// Also freezes it, so it can't change in future -/atom/proc/debug() +/atom/proc/debug_lights() if(isturf(src) || HAS_TRAIT(src, TRAIT_LIGHTING_DEBUGGED)) return ADD_TRAIT(src, TRAIT_LIGHTING_DEBUGGED, LIGHT_DEBUG_TRAIT) @@ -65,7 +65,7 @@ GLOBAL_LIST_EMPTY(light_debugged_atoms) new /atom/movable/screen/light_button/move(src) /// Disables light debugging, so you can let a scene fall to what it visually should be, or just fix admin fuckups -/atom/proc/undebug() +/atom/proc/undebug_lights() // I don't really want to undebug a light if it's off rn // Loses control if we turn it back on again if(isturf(src) || !HAS_TRAIT(src, TRAIT_LIGHTING_DEBUGGED) || !light) diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 2617e5f3fcc..f0e0e002d2c 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -395,7 +395,7 @@ ADMIN_VERB(check_for_obstructed_atmospherics, R_DEBUG, "Check For Obstructed Atm ADMIN_VERB_VISIBILITY(modify_lights, ADMIN_VERB_VISIBLITY_FLAG_MAPPING_DEBUG) ADMIN_VERB(modify_lights, R_DEBUG, "Toggle Light Debug", "Toggles light debug mode.", ADMIN_CATEGORY_MAPPING) if(GLOB.light_debug_enabled) - undebug_sources() + undebug_light_sources() return for(var/obj/machinery/light/fix_up as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/light)) @@ -403,7 +403,7 @@ ADMIN_VERB(modify_lights, R_DEBUG, "Toggle Light Debug", "Toggles light debug mo if(initial(fix_up.status) == LIGHT_OK) fix_up.fix() CHECK_TICK - debug_sources() + debug_light_sources() ADMIN_VERB_VISIBILITY(visualize_lights, ADMIN_VERB_VISIBLITY_FLAG_MAPPING_DEBUG) ADMIN_VERB(visualize_lights, R_DEBUG, "Visualize Lighting Corners", "Visualizes the corners of all lights on the station.", ADMIN_CATEGORY_MAPPING) diff --git a/code/modules/admin/verbs/path_debugger.dm b/code/modules/admin/verbs/path_debugger.dm new file mode 100644 index 00000000000..bd6b6620828 --- /dev/null +++ b/code/modules/admin/verbs/path_debugger.dm @@ -0,0 +1,263 @@ +GLOBAL_DATUM_INIT(pathfind_dude, /obj/pathfind_guy, new()) + +/obj/pathfind_guy + +/// Enables testing/visualization of pathfinding work +/datum/pathfind_debug + var/datum/admins/owner + var/datum/action/innate/path_debug/jps/jps_debug + var/datum/action/innate/path_debug/sssp/sssp_debug + +/datum/pathfind_debug/New(datum/admins/owner) + src.owner = owner + hook_client() + +/datum/pathfind_debug/Destroy(force) + QDEL_NULL(jps_debug) + QDEL_NULL(sssp_debug) + return ..() + +/datum/pathfind_debug/proc/hook_client() + if(!owner.owner) + return + QDEL_NULL(jps_debug) + QDEL_NULL(sssp_debug) + jps_debug = new + jps_debug.Grant(owner.owner.mob) + sssp_debug = new() + sssp_debug.Grant(owner.owner.mob) + RegisterSignal(owner.owner.mob, COMSIG_MOB_LOGOUT, PROC_REF(on_logout)) + +/datum/pathfind_debug/proc/on_logout(mob/logging_out) + SIGNAL_HANDLER + UnregisterSignal(logging_out, COMSIG_MOB_LOGOUT) + var/mob/new_mob = owner.owner?.mob + if(!new_mob) + RegisterSignal(logging_out, COMSIG_MOB_LOGIN, PROC_REF(on_login)) + return + hook_client() + +/datum/pathfind_debug/proc/on_login(mob/logging_in) + SIGNAL_HANDLER + UnregisterSignal(logging_in, list(COMSIG_MOB_LOGOUT, COMSIG_MOB_LOGIN)) + hook_client() + +/datum/action/innate/path_debug + var/list/image/display_images = list() + +/datum/action/innate/path_debug/Activate() + . = ..() + RegisterSignal(owner, COMSIG_MOB_CLICKON, PROC_REF(clicked_somethin)) + active = TRUE + +/datum/action/innate/path_debug/Deactivate() + UnregisterSignal(owner, COMSIG_MOB_CLICKON) + clear_visuals() + active = FALSE + return ..() + +/datum/action/innate/path_debug/proc/clicked_somethin(datum/source, atom/clicked, list/modifiers) + SIGNAL_HANDLER + if(LAZYACCESS(modifiers, SHIFT_CLICK)) + return NONE + + var/turf/clunked = get_turf(clicked) + if(!clunked) + return NONE + + if(LAZYACCESS(modifiers, RIGHT_CLICK)) + right_clicked(clunked) + else + left_clicked(clunked) + + update_visuals() + if(path_ready()) + pathfind() + +/datum/action/innate/path_debug/proc/left_clicked(turf/clicked_on) + return + +/datum/action/innate/path_debug/proc/right_clicked(turf/clicked_on) + return + +/datum/action/innate/path_debug/proc/update_visuals() + clear_visuals() + build_visuals() + owner.client?.images += display_images + +/datum/action/innate/path_debug/proc/clear_visuals() + owner.client?.images -= display_images + display_images = list() + +/datum/action/innate/path_debug/proc/build_visuals() + return + +/datum/action/innate/path_debug/proc/path_ready() + return FALSE + +/datum/action/innate/path_debug/proc/pathfind() + INVOKE_ASYNC(src, PROC_REF(run_the_path), GLOB.pathfind_dude) + GLOB.pathfind_dude.moveToNullspace() + +/datum/action/innate/path_debug/proc/run_the_path(atom/movable/middle_man) + return + +/datum/action/innate/path_debug/proc/render_path(list/turf/draw_list) + if(!length(draw_list)) + return list() + + var/list/image/turf_images = list() + // Render everything but the first and last + for(var/i in 1 to (length(draw_list) - 1)) + var/turf/problem_child = draw_list[i] + var/turf/next = draw_list[i + 1] + turf_images += render_turf(problem_child, get_dir(problem_child, next)) + + return turf_images + +/datum/action/innate/path_debug/proc/render_turf(turf/draw, direction) + var/image/arrow = image('icons/turf/debug.dmi', draw, "arrow", PATH_ARROW_DEBUG_LAYER, direction) + SET_PLANE_EXPLICIT(arrow, BALLOON_CHAT_PLANE, draw) + return arrow + +/datum/action/innate/path_debug/jps + name = "JPS Test" + button_icon = 'icons/turf/debug.dmi' + button_icon_state = "jps" + + // Mirror vars for jps calls + var/turf/source_turf + var/turf/target_turf + var/max_distance + var/min_distance + var/allowed_on_space + var/turf/blacklisted_turf + var/diagonal_handling + /// List of turfs we are showing to our owner currently + var/list/turf/display_turfs + +/datum/action/innate/path_debug/jps/Activate() + . = ..() + max_distance = tgui_input_number(owner, "How far should we be allowed to try and path", "Max Distance", min_value = 1, default = 30) + min_distance = tgui_input_number(owner, "How close should we try and get to the target before stopping", "Min Distance", min_value = 0, default = 0) + allowed_on_space = tgui_alert(owner, "Are we allowed to path over space?", "Space Pathing", buttons = list("Yes", "No")) == "Yes" + var/text_blacklist = tgui_input_text(owner, "Enter any turf path you want to blacklist (You get one)", "Turf Blacklist") + if(text_blacklist) + blacklisted_turf = pick_closest_path(text_blacklist) + else + blacklisted_turf = null + diagonal_handling = DIAGONAL_DO_NOTHING + switch(tgui_input_list(owner, "Pick how you want to handle diagonal moves", "Diagonal Moves", list("Leave Them Be", "Drop All", "Drop Odd Ones"))) + if("Leave Them Be") + diagonal_handling = DIAGONAL_DO_NOTHING + if("Drop All") + diagonal_handling = DIAGONAL_REMOVE_ALL + if("Drop Odd Ones") + diagonal_handling = DIAGONAL_REMOVE_CLUNKY + +/datum/action/innate/path_debug/jps/Deactivate() + source_turf = null + target_turf = null + display_turfs = list() + return ..() + +/datum/action/innate/path_debug/jps/left_clicked(turf/clicked_on) + source_turf = clicked_on + display_turfs = list() + +/datum/action/innate/path_debug/jps/right_clicked(turf/clicked_on) + target_turf = clicked_on + display_turfs = list() + +/datum/action/innate/path_debug/jps/build_visuals() + . = ..() + if(source_turf) + var/image/start = image('icons/turf/debug.dmi', source_turf, "start", PATH_DEBUG_LAYER) + SET_PLANE_EXPLICIT(start, BALLOON_CHAT_PLANE, source_turf) + display_images += start + if(target_turf) + var/image/end = image('icons/turf/debug.dmi', target_turf, "end", PATH_DEBUG_LAYER) + SET_PLANE_EXPLICIT(end, BALLOON_CHAT_PLANE, target_turf) + display_images += end + + display_images += render_path(display_turfs) + +/datum/action/innate/path_debug/jps/path_ready() + return (source_turf && target_turf) + +/datum/action/innate/path_debug/jps/run_the_path(atom/movable/middle_man) + middle_man.forceMove(source_turf) + display_turfs = get_path_to(middle_man, target_turf, max_distance, min_distance, list(), allowed_on_space, blacklisted_turf, skip_first = FALSE, diagonal_handling = diagonal_handling) + update_visuals() + +/datum/action/innate/path_debug/sssp + name = "Pathmap Test" + button_icon = 'icons/turf/debug.dmi' + button_icon_state = "sssp" + + // Mirror vars for sssp calls + var/turf/source_turf + var/max_distance + var/allowed_on_space + var/turf/blacklisted_turf + // Turf to display the path to (optional) + var/turf/target_turf + /// List of turfs we are showing to our owner currently + var/datum/path_map/shown_map + +/datum/action/innate/path_debug/sssp/Activate() + . = ..() + max_distance = tgui_input_number(owner, "How far should we be allowed to try and path", "Max Distance", min_value = 1, default = 30) + allowed_on_space = tgui_alert(owner, "Are we allowed to path over space?", "Space Pathing", buttons = list("Yes", "No")) == "Yes" + var/text_blacklist = tgui_input_text(owner, "Enter any turf path you want to blacklist (You get one)", "Turf Blacklist") + if(text_blacklist) + blacklisted_turf = pick_closest_path(text_blacklist) + else + blacklisted_turf = null + +/datum/action/innate/path_debug/sssp/Deactivate() + source_turf = null + target_turf = null + shown_map = null + return ..() + +/datum/action/innate/path_debug/sssp/left_clicked(turf/clicked_on) + source_turf = clicked_on + shown_map = null + +/datum/action/innate/path_debug/sssp/right_clicked(turf/clicked_on) + if(clicked_on == target_turf) + target_turf = null + return + target_turf = clicked_on + +/datum/action/innate/path_debug/sssp/build_visuals() + . = ..() + if(source_turf) + var/image/start = image('icons/turf/debug.dmi', source_turf, "start", PATH_DEBUG_LAYER) + SET_PLANE_EXPLICIT(start, BALLOON_CHAT_PLANE, source_turf) + display_images += start + + if(target_turf) + var/image/end = image('icons/turf/debug.dmi', target_turf, "end", PATH_DEBUG_LAYER) + SET_PLANE_EXPLICIT(end, BALLOON_CHAT_PLANE, target_turf) + display_images += end + if(shown_map) + display_images += render_path(shown_map.get_path_to(target_turf)) + else + if(!shown_map) + return + var/list/turf/next_closest = shown_map.next_closest + var/turf/start = shown_map?.start + for(var/turf/next_dude as anything in next_closest) + if(next_dude == start) + continue + display_images += render_turf(next_dude, get_dir(next_dude, next_closest[next_dude])) + +/datum/action/innate/path_debug/sssp/path_ready() + return (source_turf && source_turf != shown_map?.start) + +/datum/action/innate/path_debug/sssp/run_the_path(atom/movable/middle_man) + middle_man.forceMove(source_turf) + shown_map = get_sssp(middle_man, max_distance, list(), allowed_on_space, blacklisted_turf) + update_visuals() diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 50b74d703c8..48788da7968 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -60,6 +60,8 @@ ADMIN_VERB(play_direct_mob_sound, R_SOUND, "Play Direct Mob Sound", "Play a soun SEND_SOUND(target, sound) BLACKBOX_LOG_ADMIN_VERB("Play Direct Mob Sound") +GLOBAL_VAR_INIT(web_sound_cooldown, 0) + ///Takes an input from either proc/play_web_sound or the request manager and runs it through yt-dlp and prompts the user before playing it to the server. /proc/web_sound(mob/user, input, credit) if(!check_rights(R_SOUND)) @@ -150,12 +152,15 @@ ADMIN_VERB(play_direct_mob_sound, R_SOUND, "Play Direct Mob Sound", "Play a soun var/mob/M = m var/client/C = M.client if(C.prefs.read_preference(/datum/preference/numeric/volume/sound_midi)) + // Stops playing lobby music and admin loaded music automatically. + SEND_SOUND(C, sound(null, channel = CHANNEL_LOBBYMUSIC)) + SEND_SOUND(C, sound(null, channel = CHANNEL_ADMIN)) if(!stop_web_sounds) C.tgui_panel?.play_music(web_sound_url, music_extra_data) else C.tgui_panel?.stop_music() - S_TIMER_COOLDOWN_START(SStimer, COOLDOWN_INTERNET_SOUND, duration) + CLIENT_COOLDOWN_START(GLOB, web_sound_cooldown, duration) BLACKBOX_LOG_ADMIN_VERB("Play Internet Sound") @@ -163,8 +168,8 @@ ADMIN_VERB_CUSTOM_EXIST_CHECK(play_web_sound) return !!CONFIG_GET(string/invoke_youtubedl) ADMIN_VERB(play_web_sound, R_SOUND, "Play Internet Sound", "Play a given internet sound to all players.", ADMIN_CATEGORY_FUN) - if(S_TIMER_COOLDOWN_TIMELEFT(SStimer, COOLDOWN_INTERNET_SOUND)) - if(tgui_alert(user, "Someone else is already playing an Internet sound! It has [DisplayTimeText(S_TIMER_COOLDOWN_TIMELEFT(SStimer, COOLDOWN_INTERNET_SOUND), 1)] remaining. \ + if(!CLIENT_COOLDOWN_FINISHED(GLOB, web_sound_cooldown)) + if(tgui_alert(user, "Someone else is already playing an Internet sound! It has [DisplayTimeText(CLIENT_COOLDOWN_TIMELEFT(GLOB, web_sound_cooldown), 1)] remaining. \ Would you like to override?", "Musicalis Interruptus", list("No","Yes")) != "Yes") return @@ -199,7 +204,7 @@ ADMIN_VERB(stop_sounds, R_NONE, "Stop All Playing Sounds", "Stops all playing so var/client/player_client = player.client player_client?.tgui_panel?.stop_music() - S_TIMER_COOLDOWN_RESET(SStimer, COOLDOWN_INTERNET_SOUND) + CLIENT_COOLDOWN_RESET(GLOB, web_sound_cooldown) BLACKBOX_LOG_ADMIN_VERB("Stop All Playing Sounds") //world/proc/shelleo diff --git a/code/modules/admin/verbs/server.dm b/code/modules/admin/verbs/server.dm index 92c88dc4c98..a4a45453d60 100644 --- a/code/modules/admin/verbs/server.dm +++ b/code/modules/admin/verbs/server.dm @@ -22,7 +22,12 @@ ADMIN_VERB(toggle_hub, R_SERVER, "Toggle Hub", "Toggles the server's visilibilit #define HARDEST_RESTART "Hardest Restart (No actions, just reboot)" #define TGS_RESTART "Server Restart (Kill and restart DD)" ADMIN_VERB(restart, R_SERVER, "Reboot World", "Restarts the world immediately.", ADMIN_CATEGORY_SERVER) - var/list/options = list(REGULAR_RESTART, REGULAR_RESTART_DELAYED, HARD_RESTART, HARDEST_RESTART) + var/list/options = list(REGULAR_RESTART, REGULAR_RESTART_DELAYED, HARD_RESTART) + + // this option runs a codepath that can leak db connections because it skips subsystem (specifically SSdbcore) shutdown + if(!SSdbcore.IsConnected()) + options += HARDEST_RESTART + if(world.TgsAvailable()) options += TGS_RESTART; diff --git a/code/modules/admin/view_variables/debug_variables.dm b/code/modules/admin/view_variables/debug_variables.dm index b776f1b5d79..34b34369299 100644 --- a/code/modules/admin/view_variables/debug_variables.dm +++ b/code/modules/admin/view_variables/debug_variables.dm @@ -86,21 +86,21 @@ items += debug_variable(key, val, level + 1, sanitize = sanitize) return "/list ([list_value.len])
    [items.Join()]
" - else - return "/list ([list_value.len])" + return "/list ([list_value.len])" - if(name in GLOB.bitfields) - var/list/flags = list() - for (var/i in GLOB.bitfields[name]) - if (value & GLOB.bitfields[name][i]) - flags += i - if(length(flags)) - return "[VV_HTML_ENCODE(jointext(flags, ", "))]" - else - return "NONE" - else + // if it's a number, is it a bitflag? + var/list/valid_bitflags = get_valid_bitflags(name) + if(!length(valid_bitflags)) return "[VV_HTML_ENCODE(value)]" + var/list/flags = list() + for (var/bit_name in valid_bitflags) + if (value & valid_bitflags[bit_name]) + flags += bit_name + if(length(flags)) + return "[VV_HTML_ENCODE(flags.Join(", "))]" + return "NONE" + /datum/proc/debug_variable_value(name, level, datum/owner, sanitize, display_flags) if("[src]" != "[type]") // If we have a name var, let's use it. return "[src] [type] [REF(src)]" diff --git a/code/modules/admin/view_variables/get_variables.dm b/code/modules/admin/view_variables/get_variables.dm index 3105e0d5933..194be18e2e6 100644 --- a/code/modules/admin/view_variables/get_variables.dm +++ b/code/modules/admin/view_variables/get_variables.dm @@ -3,7 +3,7 @@ . = VV_NULL else if(isnum(var_value)) - if(var_name in GLOB.bitfields) + if(length(get_valid_bitflags(var_name))) . = VV_BITFIELD else . = VV_NUM diff --git a/code/modules/admin/view_variables/modify_variables.dm b/code/modules/admin/view_variables/modify_variables.dm index d8255f8b397..13b3a2aa398 100644 --- a/code/modules/admin/view_variables/modify_variables.dm +++ b/code/modules/admin/view_variables/modify_variables.dm @@ -65,7 +65,6 @@ GLOBAL_PROTECT(VVpixelmovement) .["[D]([shorttype])[REF(D)]#[i]"] = D /client/proc/mod_list_add_ass(atom/O) //hehe - var/list/L = vv_get_value(restricted_classes = list(VV_RESTORE_DEFAULT)) var/class = L["class"] if (!class) diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm index 9b8dca4a0e2..313c1b3a485 100644 --- a/code/modules/antagonists/abductor/abductor.dm +++ b/code/modules/antagonists/abductor/abductor.dm @@ -99,6 +99,14 @@ new_abductor.real_name = "[team.name] [sub_role]" new_abductor.equipOutfit(outfit) + // If we have a team skincolor, apply it here. Applied by admins or 2% chance of natural occurance + if(!isnull(team.team_skincolor)) + for(var/obj/item/bodypart/part as anything in new_abductor.bodyparts) + part.should_draw_greyscale = TRUE + part.add_color_override(team.team_skincolor, LIMB_COLOR_AYYLMAO) + + new_abductor.update_body_parts(update_limb_data = TRUE) + // We require that the template be loaded here, so call it in a blocking manner, if its already done loading, this won't block SSmapping.lazy_load_template(LAZY_TEMPLATE_KEY_ABDUCTOR_SHIPS) //Teleport to ship @@ -119,9 +127,17 @@ var/list/current_teams = list() for(var/datum/team/abductor_team/T in GLOB.antagonist_teams) current_teams[T.name] = T - var/choice = input(admin,"Add to which team ?") as null|anything in (current_teams + "new team") + var/choice = tgui_input_list(admin,"Add to which team ?", "Abductor Teams", current_teams + "new team") if (choice == "new team") team = new + if(tgui_alert(admin, "Use a Custom Skin Color?", "Alien Spraypainter", list("Yes", "No")) == "Yes") + // Keep in mind the darker colors don't look all that great, but it's easier to just reference an existing color list than make a new one + var/colorchoice = tgui_input_list(admin, "Select Which Color?", "Alien Spraypainter", GLOB.color_list_ethereal + "Custom Color") + if(colorchoice == "Custom Color") + colorchoice = input(admin, "Pick new color", "Alien Spraypainter", COLOR_WHITE) as color|null + else + colorchoice = GLOB.color_list_ethereal[colorchoice] + team.team_skincolor = colorchoice else if(choice in current_teams) team = current_teams[choice] else @@ -152,12 +168,17 @@ var/static/team_count = 1 ///List of all brainwashed victims' minds var/list/datum/mind/abductees = list() + /// If we will recolor these aliens, this value gets changed. Has a really small chance to occur naturally, but admins can change this to anything they want. + var/team_skincolor = null /datum/team/abductor_team/New() ..() team_number = team_count++ name = "Mothership [pick(GLOB.greek_letters)]" //TODO Ensure unique and actual alieny names add_objective(new /datum/objective/experiment) + // Some aliens can be green as a treat + if(prob(check_holidays(APRIL_FOOLS) ? 50 : 2) && isnull(team_skincolor)) + team_skincolor = COLOR_EMERALD /datum/team/abductor_team/roundend_report() var/list/result = list() diff --git a/code/modules/antagonists/abductor/abductor_structures.dm b/code/modules/antagonists/abductor/abductor_structures.dm index da0ad5de9ea..3ca2fbacdc6 100644 --- a/code/modules/antagonists/abductor/abductor_structures.dm +++ b/code/modules/antagonists/abductor/abductor_structures.dm @@ -15,37 +15,11 @@ framestack = /obj/item/stack/sheet/mineral/abductor framestackamount = 1 -/obj/structure/table_frame/abductor/attackby(obj/item/attacking_item, mob/user, params) - if(attacking_item.tool_behaviour == TOOL_WRENCH) - to_chat(user, span_notice("You start disassembling [src]...")) - attacking_item.play_tool_sound(src) - if(attacking_item.use_tool(src, user, 30)) - playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) - for(var/i in 0 to framestackamount) - new framestack(get_turf(src)) - qdel(src) - return - if(istype(attacking_item, /obj/item/stack/sheet/mineral/abductor)) - var/obj/item/stack/sheet/stacked_sheets = attacking_item - if(stacked_sheets.get_amount() < 1) - to_chat(user, span_warning("You need one alien alloy sheet to do this!")) - return - to_chat(user, span_notice("You start adding [stacked_sheets] to [src]...")) - if(do_after(user, 5 SECONDS, target = src)) - stacked_sheets.use(1) - new /obj/structure/table/abductor(src.loc) - qdel(src) - return - if(istype(attacking_item, /obj/item/stack/sheet/mineral/silver)) - var/obj/item/stack/sheet/stacked_sheets = attacking_item - if(stacked_sheets.get_amount() < 1) - to_chat(user, span_warning("You need one sheet of silver to do this!")) - return - to_chat(user, span_notice("You start adding [stacked_sheets] to [src]...")) - if(do_after(user, 5 SECONDS, target = src)) - stacked_sheets.use(1) - new /obj/structure/table/optable/abductor(src.loc) - qdel(src) +/obj/structure/table_frame/abductor/get_table_type(obj/item/stack/our_stack) + if(istype(our_stack, /obj/item/stack/sheet/mineral/abductor)) + return /obj/structure/table/abductor + if(istype(our_stack, /obj/item/stack/sheet/mineral/silver)) + return /obj/structure/table/optable/abductor /obj/structure/table/abductor name = "alien table" @@ -79,7 +53,7 @@ var/static/list/injected_reagents = list(/datum/reagent/medicine/cordiolis_hepatico) -/obj/structure/table/optable/abductor/Initialize(mapload) +/obj/structure/table/optable/abductor/Initialize(mapload, obj/structure/table_frame/frame_used, obj/item/stack/stack_used) . = ..() var/static/list/loc_connections = list( COMSIG_ATOM_ENTERED = PROC_REF(on_entered), diff --git a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm index a4aa88b8da9..3480d20de4e 100644 --- a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm +++ b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm @@ -28,7 +28,7 @@ target.adjust_confusion(15 SECONDS) target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10, 160) if(3) - target.adjust_hallucinations(120 SECONDS) + target.adjust_hallucinations(150 SECONDS) /obj/item/organ/heart/gland/mindshock/mind_control(command, mob/living/user) if(!ownerCheck() || !mind_control_uses || active_mind_control) diff --git a/code/modules/antagonists/blob/blob_antag.dm b/code/modules/antagonists/blob/blob_antag.dm index c5dfa6a1e10..bf2c65d634f 100644 --- a/code/modules/antagonists/blob/blob_antag.dm +++ b/code/modules/antagonists/blob/blob_antag.dm @@ -7,6 +7,7 @@ job_rank = ROLE_BLOB ui_name = "AntagInfoBlob" stinger_sound = 'sound/music/antag/blobalert.ogg' + antag_hud_name = "blob" /// Action to release a blob infection var/datum/action/innate/blobpop/pop_action /// Initial points for a human blob diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm index 5b8d58e06aa..ac465e2a428 100644 --- a/code/modules/antagonists/blob/overmind.dm +++ b/code/modules/antagonists/blob/overmind.dm @@ -210,18 +210,17 @@ GLOBAL_LIST_EMPTY(blob_nodes) else live_guy.fully_heal() - for(var/area/check_area in GLOB.areas) - if(!is_type_in_list(check_area, GLOB.the_station_areas)) - continue - if(!(check_area.area_flags & BLOBS_ALLOWED)) - continue - check_area.color = blobstrain.color - check_area.name = "blob" - check_area.icon = 'icons/mob/nonhuman-player/blob.dmi' - check_area.icon_state = "blob_shield" - check_area.layer = BELOW_MOB_LAYER - check_area.SetInvisibility(INVISIBILITY_NONE) - check_area.blend_mode = 0 + for(var/area_type in GLOB.the_station_areas) + var/area/check_area = GLOB.areas_by_type[area_type] + if(!(check_area.area_flags & BLOBS_ALLOWED)) + continue + check_area.color = blobstrain.color + check_area.name = "blob" + check_area.icon = 'icons/mob/nonhuman-player/blob.dmi' + check_area.icon_state = "blob_shield" + check_area.layer = BELOW_MOB_LAYER + check_area.SetInvisibility(INVISIBILITY_NONE) + check_area.blend_mode = 0 var/datum/antagonist/blob/B = mind.has_antag_datum(/datum/antagonist/blob) if(B) diff --git a/code/modules/antagonists/changeling/powers/darkness_adaptation.dm b/code/modules/antagonists/changeling/powers/darkness_adaptation.dm index b687ca38a61..47fe31c215b 100644 --- a/code/modules/antagonists/changeling/powers/darkness_adaptation.dm +++ b/code/modules/antagonists/changeling/powers/darkness_adaptation.dm @@ -63,7 +63,7 @@ COOLDOWN_DECLARE(skip_tick_update) /datum/status_effect/darkness_adapted/on_apply() - RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(update_invis)) + RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) RegisterSignal(owner, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(eye_implanted)) RegisterSignal(owner, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(eye_removed)) RegisterSignal(owner, COMSIG_ATOM_EXAMINE, PROC_REF(examine_mob)) diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm index 4db331b715e..23658907cd2 100644 --- a/code/modules/antagonists/changeling/powers/headcrab.dm +++ b/code/modules/antagonists/changeling/powers/headcrab.dm @@ -4,7 +4,7 @@ helptext = "We will be placed in control of a small, fragile creature. We may attack a corpse like this to plant an egg which will slowly mature into a new form for us." button_icon_state = "last_resort" chemical_cost = 20 - dna_cost = 0 + dna_cost = 1 req_stat = DEAD ignores_fakedeath = TRUE disabled_by_fire = FALSE diff --git a/code/modules/antagonists/cult/cult_objectives.dm b/code/modules/antagonists/cult/cult_objectives.dm index 17957f88bca..7d3e8ccf128 100644 --- a/code/modules/antagonists/cult/cult_objectives.dm +++ b/code/modules/antagonists/cult/cult_objectives.dm @@ -24,7 +24,7 @@ if(SSticker.IsRoundInProgress() && istype(get_area(player), /area/centcom/interlink)) continue // SKYRAT EDIT END - if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && !is_convertable_to_cult(player) && player.stat != DEAD) + if(player.mind && !IS_CULTIST(player) && !is_convertable_to_cult(player) && player.stat != DEAD && is_station_level(player.loc.z)) target_candidates += player.mind if(target_candidates.len == 0) message_admins("Cult Sacrifice: Could not find unconvertible target, checking for convertible target.") @@ -33,7 +33,7 @@ if(SSticker.IsRoundInProgress() && istype(get_area(player), /area/centcom/interlink)) continue // SKYRAT EDIT END - if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && player.stat != DEAD) + if(player.mind && !IS_CULTIST(player) && player.stat != DEAD && is_station_level(player.loc.z)) target_candidates += player.mind list_clear_nulls(target_candidates) if(LAZYLEN(target_candidates)) diff --git a/code/modules/antagonists/cult/cult_other.dm b/code/modules/antagonists/cult/cult_other.dm index bbeec10ce17..0e286d75e81 100644 --- a/code/modules/antagonists/cult/cult_other.dm +++ b/code/modules/antagonists/cult/cult_other.dm @@ -8,8 +8,7 @@ r_hand = /obj/item/melee/blood_magic/stun /datum/outfit/cultist/post_equip(mob/living/carbon/human/equipped, visuals_only) - equipped.eye_color_left = BLOODCULT_EYE - equipped.eye_color_right = BLOODCULT_EYE + equipped.set_eye_color(BLOODCULT_EYE) equipped.update_body() ///Returns whether the given mob is convertable to the blood cult diff --git a/code/modules/antagonists/cult/datums/cult_team.dm b/code/modules/antagonists/cult/datums/cult_team.dm index 06a1c2ccf2e..1c9c62ca081 100644 --- a/code/modules/antagonists/cult/datums/cult_team.dm +++ b/code/modules/antagonists/cult/datums/cult_team.dm @@ -153,9 +153,9 @@ var/area/target_area = get_area(new_target) blood_target_image = image('icons/effects/mouse_pointers/cult_target.dmi', new_target, "glow", ABOVE_MOB_LAYER) - blood_target_image.appearance_flags = RESET_COLOR - blood_target_image.pixel_x = -new_target.pixel_x - blood_target_image.pixel_y = -new_target.pixel_y + blood_target_image.appearance_flags = RESET_COLOR|KEEP_APART + blood_target_image.pixel_w = -new_target.pixel_x + blood_target_image.pixel_z = -new_target.pixel_y for(var/datum/mind/cultist as anything in members) if(!cultist.current) diff --git a/code/modules/antagonists/fugitive/fugitive_outfits.dm b/code/modules/antagonists/fugitive/fugitive_outfits.dm index 5b73476a3af..a7a45fba7a1 100644 --- a/code/modules/antagonists/fugitive/fugitive_outfits.dm +++ b/code/modules/antagonists/fugitive/fugitive_outfits.dm @@ -36,8 +36,7 @@ if(visuals_only) return equipped_on.fully_replace_character_name(null, "Waldo") - equipped_on.eye_color_left = COLOR_BLACK - equipped_on.eye_color_right = COLOR_BLACK + equipped_on.set_eye_color(COLOR_BLACK) equipped_on.gender = MALE equipped_on.skin_tone = "caucasian3" equipped_on.hairstyle = "Business Hair 3" diff --git a/code/modules/antagonists/heretic/influences.dm b/code/modules/antagonists/heretic/influences.dm index 9dad4f20acf..c139ed3daa1 100644 --- a/code/modules/antagonists/heretic/influences.dm +++ b/code/modules/antagonists/heretic/influences.dm @@ -154,15 +154,15 @@ explosion.start(src) */ -/obj/effect/visible_heretic_influence/examine(mob/user) +/obj/effect/visible_heretic_influence/examine(mob/living/user) . = ..() + . += span_hypnophrase(pick_list(HERETIC_INFLUENCE_FILE, "examine")) if(IS_HERETIC(user) || !ishuman(user)) return - var/mob/living/carbon/human/human_user = user - to_chat(human_user, span_userdanger("Your mind burns as you stare at the tear!")) - human_user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10, 190) - // human_user.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus) Bubberstation change: Hugboxes heretics. + . += span_userdanger("Your mind burns as you stare at the tear!") + user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10, 190) + //user.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus) // BUBBER EDIT - Hugboxes /obj/effect/heretic_influence name = "reality smash" diff --git a/code/modules/antagonists/heretic/items/heretic_necks.dm b/code/modules/antagonists/heretic/items/heretic_necks.dm index 5e0ab46375a..2509b8d015e 100644 --- a/code/modules/antagonists/heretic/items/heretic_necks.dm +++ b/code/modules/antagonists/heretic/items/heretic_necks.dm @@ -162,19 +162,22 @@ if(!IS_HERETIC_OR_MONSTER(user)) user.balloon_alert(user, "you feel a presence watching you") user.add_mood_event("Moon Amulet Insanity", /datum/mood_event/amulet_insanity) - user.mob_mood.set_sanity(user.mob_mood.sanity - 50) + user.mob_mood.adjust_sanity(-50) return + if(hit.can_block_magic(MAGIC_RESISTANCE|MAGIC_RESISTANCE_MIND)) return + if(!hit.mob_mood) return if(hit.mob_mood.sanity_level > SANITY_LEVEL_UNSTABLE) user.balloon_alert(user, "their mind is too strong!") hit.add_mood_event("Moon Amulet Insanity", /datum/mood_event/amulet_insanity) - hit.mob_mood.set_sanity(hit.mob_mood.sanity - sanity_damage) - else - user.balloon_alert(user, "their mind bends to see the truth!") - hit.apply_status_effect(/datum/status_effect/moon_converted) - user.log_message("made [target] insane.", LOG_GAME) - hit.log_message("was driven insane by [user]") + hit.mob_mood.adjust_sanity(-sanity_damage) + return ..() + + user.balloon_alert(user, "their mind bends to see the truth!") + hit.apply_status_effect(/datum/status_effect/moon_converted) + user.log_message("made [target] insane.", LOG_GAME) + hit.log_message("was driven insane by [user]") . = ..() diff --git a/code/modules/antagonists/heretic/items/madness_mask.dm b/code/modules/antagonists/heretic/items/madness_mask.dm index 564715d7dd8..1be99d41012 100644 --- a/code/modules/antagonists/heretic/items/madness_mask.dm +++ b/code/modules/antagonists/heretic/items/madness_mask.dm @@ -62,7 +62,7 @@ human_in_range.mob_mood.direct_sanity_drain(rand(-2, -20) * seconds_per_tick) if(SPT_PROB(60, seconds_per_tick)) - human_in_range.adjust_hallucinations_up_to(10 SECONDS, 240 SECONDS) + human_in_range.adjust_hallucinations_up_to(10 SECONDS, 120 SECONDS) if(SPT_PROB(40, seconds_per_tick)) human_in_range.set_jitter_if_lower(10 SECONDS) diff --git a/code/modules/antagonists/heretic/knowledge/lock_lore.dm b/code/modules/antagonists/heretic/knowledge/lock_lore.dm index bde397a8048..573a151f991 100644 --- a/code/modules/antagonists/heretic/knowledge/lock_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/lock_lore.dm @@ -103,6 +103,18 @@ research_tree_icon_path = 'icons/obj/card.dmi' research_tree_icon_state = "card_gold" +/datum/heretic_knowledge/key_ring/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) + var/obj/item/card/id = locate(/obj/item/card/id/advanced) in selected_atoms + if(isnull(id)) + return FALSE + var/obj/item/card/id/advanced/heretic/result_item = new(loc) + if(!istype(result_item)) + return FALSE + selected_atoms -= id + result_item.eat_card(id) + result_item.shapeshift(id) + return TRUE + /datum/heretic_knowledge/mark/lock_mark name = "Mark of Lock" desc = "Your Mansus Grasp now applies the Mark of Lock. \ diff --git a/code/modules/antagonists/heretic/knowledge/moon_lore.dm b/code/modules/antagonists/heretic/knowledge/moon_lore.dm index c5a6930eab7..8ae742d9749 100644 --- a/code/modules/antagonists/heretic/knowledge/moon_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/moon_lore.dm @@ -62,7 +62,7 @@ var/mob/living/carbon/carbon_target = target to_chat(carbon_target, span_danger("You hear echoing laughter from above")) carbon_target.cause_hallucination(/datum/hallucination/delusion/preset/moon, "delusion/preset/moon hallucination caused by mansus grasp") - carbon_target.mob_mood.set_sanity(carbon_target.mob_mood.sanity-30) + carbon_target.mob_mood.adjust_sanity(-30) /datum/heretic_knowledge/spell/moon_smile name = "Smile of the moon" @@ -134,7 +134,7 @@ "upgraded path of moon blades", \ ) target.emote(pick("giggle", "laugh")) - target.mob_mood.set_sanity(target.mob_mood.sanity - 10) + target.mob_mood.adjust_sanity(-10) /datum/heretic_knowledge/spell/moon_ringleader name = "Ringleaders Rise" @@ -234,7 +234,6 @@ ) for(var/mob/living/carbon/carbon_view in view(5, source)) - var/carbon_sanity = carbon_view.mob_mood.sanity if(carbon_view.stat != CONSCIOUS) continue if(IS_HERETIC_OR_MONSTER(carbon_view)) @@ -243,11 +242,13 @@ continue new moon_effect(get_turf(carbon_view)) carbon_view.adjust_confusion(2 SECONDS) - carbon_view.mob_mood.set_sanity(carbon_sanity - 5) + carbon_view.mob_mood.adjust_sanity(-5) + var/carbon_sanity = carbon_view.mob_mood.sanity if(carbon_sanity < 30) if(SPT_PROB(20, seconds_per_tick)) to_chat(carbon_view, span_warning("you feel your mind beginning to rend!")) carbon_view.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5) + if(carbon_sanity < 10) if(SPT_PROB(20, seconds_per_tick)) to_chat(carbon_view, span_warning("it echoes through you!")) diff --git a/code/modules/antagonists/heretic/magic/ash_jaunt.dm b/code/modules/antagonists/heretic/magic/ash_jaunt.dm index 41242063a90..198f2f964e8 100644 --- a/code/modules/antagonists/heretic/magic/ash_jaunt.dm +++ b/code/modules/antagonists/heretic/magic/ash_jaunt.dm @@ -17,8 +17,7 @@ exit_jaunt_sound = null jaunt_duration = 1.1 SECONDS jaunt_in_time = 1.3 SECONDS - jaunt_out_time = 0.6 SECONDS - jaunt_in_type = /obj/effect/temp_visual/dir_setting/ash_shift + jaunt_type = /obj/effect/dummy/phased_mob/spell_jaunt/red jaunt_out_type = /obj/effect/temp_visual/dir_setting/ash_shift/out /datum/action/cooldown/spell/jaunt/ethereal_jaunt/ash/do_steam_effects() diff --git a/code/modules/antagonists/heretic/magic/moon_parade.dm b/code/modules/antagonists/heretic/magic/moon_parade.dm index 49f8c428082..d8873c816cc 100644 --- a/code/modules/antagonists/heretic/magic/moon_parade.dm +++ b/code/modules/antagonists/heretic/magic/moon_parade.dm @@ -85,7 +85,7 @@ victim.add_mood_event("Moon Insanity", /datum/mood_event/moon_insanity) victim.cause_hallucination(/datum/hallucination/delusion/preset/moon, name) - victim.mob_mood.set_sanity(victim.mob_mood.sanity - 20) + victim.mob_mood.adjust_sanity(-20) /obj/projectile/moon_parade/Destroy() for(var/mob/living/leftover_mob as anything in mobs_hit) diff --git a/code/modules/antagonists/heretic/magic/moon_ringleader.dm b/code/modules/antagonists/heretic/magic/moon_ringleader.dm index d79269dc269..beacd0f5afa 100644 --- a/code/modules/antagonists/heretic/magic/moon_ringleader.dm +++ b/code/modules/antagonists/heretic/magic/moon_ringleader.dm @@ -51,7 +51,7 @@ victim.apply_status_effect(/datum/status_effect/moon_converted) caster.log_message("made [victim] insane.", LOG_GAME) victim.log_message("was driven insane by [caster]") - victim.mob_mood.set_sanity(victim_sanity * 0.5) + victim.mob_mood.adjust_sanity(victim_sanity * -0.5) /obj/effect/temp_visual/moon_ringleader diff --git a/code/modules/antagonists/heretic/magic/moon_smile.dm b/code/modules/antagonists/heretic/magic/moon_smile.dm index 2ded0134a04..62e1fa6747e 100644 --- a/code/modules/antagonists/heretic/magic/moon_smile.dm +++ b/code/modules/antagonists/heretic/magic/moon_smile.dm @@ -51,5 +51,5 @@ if(cast_on.mob_mood.sanity < 40) cast_on.AdjustKnockdown(2 SECONDS) //Lowers sanity - cast_on.mob_mood.set_sanity(cast_on.mob_mood.sanity - 20) + cast_on.mob_mood.adjust_sanity(-20) return TRUE diff --git a/code/modules/antagonists/heretic/magic/space_crawl.dm b/code/modules/antagonists/heretic/magic/space_crawl.dm index 74b02c59c10..7c59f83e811 100644 --- a/code/modules/antagonists/heretic/magic/space_crawl.dm +++ b/code/modules/antagonists/heretic/magic/space_crawl.dm @@ -7,7 +7,7 @@ */ /datum/action/cooldown/spell/jaunt/space_crawl name = "Space Phase" - desc = "Allows you to phase in and out of existence while in space or misc tiles." + desc = "Allows you to phase in and out of existence while in space or a low-pressure, outdoor area." background_icon_state = "bg_heretic" overlay_icon_state = "bg_heretic_border" @@ -18,6 +18,8 @@ invocation_type = INVOCATION_NONE spell_requirements = NONE + + jaunt_type = /obj/effect/dummy/phased_mob/spell_jaunt/space ///List of traits that are added to the heretic while in space phase jaunt var/static/list/jaunting_traits = list(TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTCOLD, TRAIT_NOBREATH) @@ -33,10 +35,14 @@ . = ..() if(!.) return FALSE - if(isspaceturf(get_turf(owner)) || ismiscturf(get_turf(owner))) + var/turf/my_turf = get_turf(owner) + if(isspaceturf(my_turf)) + return TRUE + var/area/my_area = get_area(owner) + if (isopenturf(my_turf) && my_area.outdoors && lavaland_equipment_pressure_check(my_turf)) return TRUE if(feedback) - to_chat(owner, span_warning("You must stand on a space or misc turf!")) + to_chat(owner, span_warning("You must stand in space, or an outdoor area with low pressure!")) return FALSE /datum/action/cooldown/spell/jaunt/space_crawl/cast(mob/living/cast_on) @@ -138,4 +144,9 @@ . = ..() ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) +/// Different graphic for position indicator +/obj/effect/dummy/phased_mob/spell_jaunt/space + phased_mob_icon_state = "solarflare" + movespeed = 0 + #undef SPACE_PHASING diff --git a/code/modules/antagonists/heretic/status_effects/mark_effects.dm b/code/modules/antagonists/heretic/status_effects/mark_effects.dm index 65fb804991a..3fc632852fe 100644 --- a/code/modules/antagonists/heretic/status_effects/mark_effects.dm +++ b/code/modules/antagonists/heretic/status_effects/mark_effects.dm @@ -31,6 +31,10 @@ owner.update_icon(UPDATE_OVERLAYS) return ..() +// We WANT to call on_remove when replaced, else effects might not be cleaned up in the case where a mark is applied while a different mark is active. +/datum/status_effect/eldritch/be_replaced() + qdel(src) + /** * Signal proc for [COMSIG_ATOM_UPDATE_OVERLAYS]. * diff --git a/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm b/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm index da9df063c90..10544818967 100644 --- a/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm +++ b/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm @@ -367,7 +367,7 @@ ///there are still licing mobs inside that item. Stop, don't sell it ffs. if(locate(/mob/living) in item_on_pad.get_all_contents()) continue - export_item_and_contents(item_on_pad, apply_elastic = FALSE, dry_run = dry_run, delete_unsold = FALSE, external_report = report, ignore_typecache = nosell_typecache) + export_item_and_contents(item_on_pad, apply_elastic = FALSE, dry_run = dry_run, delete_unsold = FALSE, external_report = report, ignore_typecache = nosell_typecache, export_market = EXPORT_MARKET_PIRACY) return report /// Prepares to sell the items on the pad @@ -401,6 +401,9 @@ pad.icon_state = pad.idle_state deltimer(sending_timer) +/datum/export/pirate + sales_market = EXPORT_MARKET_PIRACY + /// Attempts to find the thing on station /datum/export/pirate/proc/find_loot() return diff --git a/code/modules/antagonists/spy/spy_uplink.dm b/code/modules/antagonists/spy/spy_uplink.dm index 8384dc129da..7131a0028ca 100644 --- a/code/modules/antagonists/spy/spy_uplink.dm +++ b/code/modules/antagonists/spy/spy_uplink.dm @@ -114,13 +114,13 @@ active_scan_cone = new(spy.loc) var/angle = round(get_angle(spy, stealing), 10) if(angle > 180 && angle < 360) - active_scan_cone.pixel_x -= 16 + active_scan_cone.pixel_w -= 16 else if(angle < 180 && angle > 0) - active_scan_cone.pixel_x += 16 + active_scan_cone.pixel_w += 16 if(angle > 90 && angle < 270) - active_scan_cone.pixel_y -= 16 + active_scan_cone.pixel_z -= 16 else if(angle < 90 || angle > 270) - active_scan_cone.pixel_y += 16 + active_scan_cone.pixel_z += 16 active_scan_cone.transform = active_scan_cone.transform.Turn(angle) active_scan_cone.alpha = 0 animate(active_scan_cone, time = 0.5 SECONDS, alpha = initial(active_scan_cone.alpha)) diff --git a/code/modules/antagonists/survivalist/survivalist.dm b/code/modules/antagonists/survivalist/survivalist.dm index b801076747f..01000da5908 100644 --- a/code/modules/antagonists/survivalist/survivalist.dm +++ b/code/modules/antagonists/survivalist/survivalist.dm @@ -78,7 +78,7 @@ Noncompliance and removal of this implant is not recommended, and remember to smile for the cameras!")) return ..() - + /datum/antagonist/survivalist/battle_royale/on_removal() if (isnull(owner.current)) return ..() @@ -86,7 +86,7 @@ if (owner.current.stat == DEAD) return ..() to_chat(owner, span_notice("Your body is flooded with relief. Against all the odds, you've made it out alive.")) - owner.current?.mob_mood.add_mood_event("battle_royale", /datum/mood_event/royale_survivor) + owner.current?.add_mood_event("battle_royale", /datum/mood_event/royale_survivor) return ..() /// Add an objective to go to a specific place. diff --git a/code/modules/art/paintings.dm b/code/modules/art/paintings.dm index e9e9e07fbbf..b3bcc4c8829 100644 --- a/code/modules/art/paintings.dm +++ b/code/modules/art/paintings.dm @@ -349,16 +349,16 @@ . = ..() if(icon_generated) var/mutable_appearance/detail = mutable_appearance(generated_icon) - detail.pixel_x = 1 - detail.pixel_y = 1 + detail.pixel_w = 1 + detail.pixel_z = 1 . += detail return if(!used) return var/mutable_appearance/detail = mutable_appearance(icon, "[icon_state]wip") - detail.pixel_x = 1 - detail.pixel_y = 1 + detail.pixel_w = 1 + detail.pixel_z = 1 . += detail /obj/item/canvas/proc/generate_proper_overlay() @@ -649,8 +649,8 @@ return var/mutable_appearance/painting = mutable_appearance(current_canvas.generated_icon) - painting.pixel_x = current_canvas.framed_offset_x - painting.pixel_y = current_canvas.framed_offset_y + painting.pixel_w = current_canvas.framed_offset_x + painting.pixel_z = current_canvas.framed_offset_y . += painting var/frame_type = current_canvas.painting_metadata.frame_type . += mutable_appearance(current_canvas.icon,"[current_canvas.icon_state]frame_[frame_type]") //add the frame diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 5e1467e41b0..5794720b0cf 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -54,9 +54,10 @@ connected = null if(!holder) return FALSE - forceMove(holder.drop_location()) - SEND_SIGNAL(src, COMSIG_ASSEMBLY_DETACHED, holder) + var/atom/was_holder = holder holder = null + forceMove(was_holder.drop_location()) + SEND_SIGNAL(src, COMSIG_ASSEMBLY_DETACHED, was_holder) return TRUE /** diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index b25d30e1b4b..b0dd20dec23 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -88,7 +88,7 @@ attached_overlays += "timer_timing" for (var/i in 1 to clamp(ceil(time / 10), 1, 3)) var/mutable_appearance/timer_light = mutable_appearance(icon, "timer_light", layer, src) - timer_light.pixel_x = (i - 1) * 2 + timer_light.pixel_w = (i - 1) * 2 . += timer_light /obj/item/assembly/timer/ui_status(mob/user, datum/ui_state/state) diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index f3877a1424d..d529d4357f2 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -28,7 +28,7 @@ ///Bitflag of the initialized directions (NORTH | SOUTH | EAST | WEST) var/initialize_directions = NONE ///The color of the pipe - var/pipe_color = COLOR_VERY_LIGHT_GRAY + var/pipe_color = ATMOS_COLOR_OMNI ///What layer the pipe is in (from 1 to 5, default 3) var/piping_layer = PIPING_LAYER_DEFAULT ///The flags of the pipe/component (PIPING_ALL_LAYER | PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY | PIPING_CARDINAL_AUTONORMALIZE) @@ -342,7 +342,7 @@ return FALSE //if the target does not have the same color and it does not have all color connection flag[which allows it to be connected regardless of color] & one of the pipes is not gray[allowing for connection regardless] then we are out - if(target.pipe_color != pipe_color && !((target.pipe_flags | pipe_flags) & PIPING_ALL_COLORS) && target.pipe_color != COLOR_VERY_LIGHT_GRAY && pipe_color != COLOR_VERY_LIGHT_GRAY) + if(target.pipe_color != pipe_color && !((target.pipe_flags | pipe_flags) & PIPING_ALL_COLORS) && target.pipe_color != ATMOS_COLOR_OMNI && pipe_color != ATMOS_COLOR_OMNI) return FALSE return TRUE @@ -523,7 +523,7 @@ * * piping_layer - the piping_layer the device is in, used inside PIPING_LAYER_SHIFT * * trinary - if TRUE we also use PIPING_FORWARD_SHIFT on layer 1 and 5 for trinary devices (filters and mixers) */ -/obj/machinery/atmospherics/proc/get_pipe_image(iconfile, iconstate, direction, color = COLOR_VERY_LIGHT_GRAY, piping_layer = 3, trinary = FALSE) +/obj/machinery/atmospherics/proc/get_pipe_image(iconfile, iconstate, direction, color = ATMOS_COLOR_OMNI, piping_layer = 3, trinary = FALSE) var/image/pipe_overlay = image(iconfile, iconstate, dir = direction) pipe_overlay.color = color PIPING_LAYER_SHIFT(pipe_overlay, piping_layer) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index 84237309374..58e1f619a73 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -29,6 +29,7 @@ cut_overlays() if(showpipe) var/image/cap = get_pipe_image(icon, "dpvent_cap", dir, pipe_color, piping_layer = piping_layer) + cap.appearance_flags |= RESET_COLOR|KEEP_APART add_overlay(cap) if(!on || !is_operational) diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index ded9110bdfd..6001042453b 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -78,14 +78,14 @@ continue var/obj/machinery/atmospherics/node = nodes[i] var/node_dir = get_dir(src, node) - var/mutable_appearance/pipe_appearance = mutable_appearance('icons/obj/pipes_n_cables/pipe_underlays.dmi', "intact_[node_dir]_[underlay_pipe_layer]") - pipe_appearance.color = node.pipe_color + var/mutable_appearance/pipe_appearance = mutable_appearance('icons/obj/pipes_n_cables/pipe_underlays.dmi', "intact_[node_dir]_[underlay_pipe_layer]", appearance_flags = RESET_COLOR|KEEP_APART) + pipe_appearance.color = (node.pipe_color == ATMOS_COLOR_OMNI || istype(node, /obj/machinery/atmospherics/pipe/color_adapter)) ? pipe_color : node.pipe_color underlays += pipe_appearance connected |= node_dir for(var/direction in GLOB.cardinals) if((initialize_directions & direction) && !(connected & direction)) - var/mutable_appearance/pipe_appearance = mutable_appearance('icons/obj/pipes_n_cables/pipe_underlays.dmi', "exposed_[direction]_[underlay_pipe_layer]") + var/mutable_appearance/pipe_appearance = mutable_appearance('icons/obj/pipes_n_cables/pipe_underlays.dmi', "exposed_[direction]_[underlay_pipe_layer]", appearance_flags = RESET_COLOR|KEEP_APART) pipe_appearance.color = pipe_color underlays += pipe_appearance @@ -330,7 +330,7 @@ connect_nodes() /obj/machinery/atmospherics/components/update_layer() - layer = (showpipe ? initial(layer) : ABOVE_OPEN_TURF_LAYER) + (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE + (GLOB.pipe_colors_ordered[pipe_color] * 0.001) + layer = (showpipe ? initial(layer) : BELOW_CATWALK_LAYER) + (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE + (GLOB.pipe_colors_ordered[pipe_color] * 0.001) /** * Handles air relocation to the pipenet/environment diff --git a/code/modules/atmospherics/machinery/components/tank.dm b/code/modules/atmospherics/machinery/components/tank.dm index 118e1444ad6..57960bc9ec2 100644 --- a/code/modules/atmospherics/machinery/components/tank.dm +++ b/code/modules/atmospherics/machinery/components/tank.dm @@ -2,7 +2,8 @@ /obj/machinery/atmospherics/components/tank icon = 'icons/obj/pipes_n_cables/stationary_canisters.dmi' - icon_state = "smooth" + icon_state = "canister-0" + base_icon_state = "canister" name = "pressure tank" desc = "A large vessel containing pressurized gas." @@ -20,13 +21,14 @@ initialize_directions = NONE custom_reconcilation = TRUE - smoothing_flags = SMOOTH_CORNERS | SMOOTH_OBJ + smoothing_flags = SMOOTH_BITMASK | SMOOTH_OBJ smoothing_groups = SMOOTH_GROUP_GAS_TANK canSmoothWith = SMOOTH_GROUP_GAS_TANK appearance_flags = KEEP_TOGETHER|LONG_GLIDE greyscale_config = /datum/greyscale_config/stationary_canister greyscale_colors = "#ffffff" + var/overlay_greyscale_config = /datum/greyscale_config/stationary_canister_overlays ///The image showing the gases inside of the tank var/image/window @@ -69,7 +71,7 @@ if(!knob_overlays) knob_overlays = list() for(var/dir in GLOB.cardinals) - knob_overlays["[dir]"] = image('icons/obj/pipes_n_cables/stationary_canisters.dmi', icon_state = "knob", dir = dir, layer = FLOAT_LAYER) + knob_overlays["[dir]"] = image('icons/obj/pipes_n_cables/stationary_canisters_misc.dmi', icon_state = "knob", dir = dir, layer = FLOAT_LAYER) if(!crack_states) crack_states = list() @@ -81,7 +83,7 @@ AddComponent(/datum/component/gas_leaker, leak_rate = 0.05) AddElement(/datum/element/volatile_gas_storage) - AddElement(/datum/element/crackable, 'icons/obj/pipes_n_cables/stationary_canisters.dmi', crack_states) + AddElement(/datum/element/crackable, 'icons/obj/pipes_n_cables/stationary_canisters_misc.dmi', crack_states) RegisterSignal(src, COMSIG_MERGER_ADDING, PROC_REF(merger_adding)) RegisterSignal(src, COMSIG_MERGER_REMOVING, PROC_REF(merger_removing)) @@ -318,12 +320,13 @@ if(!air_contents) window = null return + var/icon/greyscaled_icon = SSgreyscale.GetColoredIconByType(overlay_greyscale_config, greyscale_colors) - window = image(icon, icon_state = "window-bg", layer = FLOAT_LAYER) + window = image(greyscaled_icon, icon_state = "window-bg", layer = FLOAT_LAYER) var/static/alpha_filter if(!alpha_filter) // Gotta do this separate since the icon may not be correct at world init - alpha_filter = filter(type="alpha", icon = icon('icons/obj/pipes_n_cables/stationary_canisters.dmi', "window-bg")) + alpha_filter = filter(type="alpha", icon = icon('icons/obj/pipes_n_cables/stationary_canisters_misc.dmi', "window-bg")) var/list/new_underlays = list() for(var/obj/effect/overlay/gas/gas as anything in air_contents.return_visuals(get_turf(src))) @@ -331,7 +334,7 @@ new_underlay.filters = alpha_filter new_underlays += new_underlay - var/image/foreground = image(icon, icon_state = "window-fg", layer = FLOAT_LAYER) + var/image/foreground = image(greyscaled_icon, icon_state = "window-fg", layer = FLOAT_LAYER) foreground.underlays = new_underlays window.overlays = list(foreground) @@ -500,7 +503,7 @@ // Tank Frame Structure /obj/structure/tank_frame - icon = 'icons/obj/pipes_n_cables/stationary_canisters.dmi' + icon = 'icons/obj/pipes_n_cables/stationary_canisters_misc.dmi' icon_state = "frame" anchored = FALSE density = TRUE diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index 8f7aa4a2d57..41fb240c846 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -52,7 +52,9 @@ if(!(direction & initialize_directions)) continue - . += get_pipe_image(icon, "cap", direction, pipe_color, piping_layer, TRUE) + var/image/cap = get_pipe_image(icon, "cap", direction, pipe_color, piping_layer, TRUE) + cap.appearance_flags |= RESET_COLOR|KEEP_APART + . += cap /obj/machinery/atmospherics/components/trinary/mixer/update_icon_nopipes() var/on_state = on && nodes[1] && nodes[2] && nodes[3] && is_operational diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index c0b584d9029..95a2a47b931 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -77,7 +77,9 @@ cut_overlays() if(showpipe) // everything is already shifted so don't shift the cap - add_overlay(get_pipe_image(icon, "inje_cap", initialize_directions, pipe_color)) + var/image/cap = get_pipe_image(icon, "inje_cap", initialize_directions, pipe_color) + cap.appearance_flags |= RESET_COLOR|KEEP_APART + add_overlay(cap) else PIPING_LAYER_SHIFT(src, PIPING_LAYER_DEFAULT) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm index 4ac0e959e40..a68876b797f 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/passive_vent.dm @@ -19,6 +19,7 @@ cut_overlays() if(showpipe) var/image/cap = get_pipe_image(icon, "vent_cap", initialize_directions, pipe_color) + cap.appearance_flags |= RESET_COLOR|KEEP_APART add_overlay(cap) else PIPING_LAYER_SHIFT(src, PIPING_LAYER_DEFAULT) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm index f47d6d5b069..e14d010ab4b 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm @@ -34,6 +34,7 @@ cut_overlays() if(showpipe) var/image/cap = get_pipe_image(icon, "connector_cap", initialize_directions, pipe_color) + cap.appearance_flags |= RESET_COLOR|KEEP_APART add_overlay(cap) else PIPING_LAYER_SHIFT(src, PIPING_LAYER_DEFAULT) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index cb49e572fd1..df4bfd21af8 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -129,7 +129,9 @@ if(!initial(icon)) return var/mutable_appearance/thermo_overlay = new(initial(icon)) - . += get_pipe_image(thermo_overlay, "pipe", dir, pipe_color, piping_layer) + var/image/pipe = get_pipe_image(thermo_overlay, "pipe", dir, pipe_color, piping_layer) + pipe.appearance_flags |= RESET_COLOR|KEEP_APART + . += pipe /obj/machinery/atmospherics/components/unary/thermomachine/examine(mob/user) . = ..() diff --git a/code/modules/atmospherics/machinery/pipes/bridge_pipe.dm b/code/modules/atmospherics/machinery/pipes/bridge_pipe.dm index 4c1cd63016c..a15cc335aef 100644 --- a/code/modules/atmospherics/machinery/pipes/bridge_pipe.dm +++ b/code/modules/atmospherics/machinery/pipes/bridge_pipe.dm @@ -30,4 +30,4 @@ . += center /obj/machinery/atmospherics/pipe/bridge_pipe/update_layer() - layer = (HAS_TRAIT(src, TRAIT_UNDERFLOOR) ? ABOVE_OPEN_TURF_LAYER + 1 : initial(layer)) + layer = (HAS_TRAIT(src, TRAIT_UNDERFLOOR) ? BELOW_CATWALK_LAYER + 1 : initial(layer)) diff --git a/code/modules/atmospherics/machinery/pipes/color_adapter.dm b/code/modules/atmospherics/machinery/pipes/color_adapter.dm index 06812aaa649..a33376c16cc 100644 --- a/code/modules/atmospherics/machinery/pipes/color_adapter.dm +++ b/code/modules/atmospherics/machinery/pipes/color_adapter.dm @@ -47,7 +47,12 @@ for(var/i in 1 to device_type) if(!nodes[i]) continue - var/image/pipe = get_pipe_image('icons/obj/pipes_n_cables/manifold.dmi', "pipe-3", get_dir(src, nodes[i]), nodes[i].pipe_color) + var/applied_color = nodes[i].pipe_color + var/node_dir = get_dir(src, nodes[i]) + if (istype(nodes[i], /obj/machinery/atmospherics/pipe/color_adapter) && ((node_dir & (SOUTH|EAST)) || nodes[i].pipe_color == ATMOS_COLOR_OMNI) && pipe_color != ATMOS_COLOR_OMNI) + applied_color = pipe_color + var/image/pipe = get_pipe_image('icons/obj/pipes_n_cables/manifold.dmi', "pipe-3", node_dir, applied_color) + pipe.appearance_flags |= RESET_COLOR|KEEP_APART PIPING_LAYER_DOUBLE_SHIFT(pipe, piping_layer) pipe.layer = layer + 0.01 . += pipe diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index 9e6666172fa..135d222a92e 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -41,7 +41,7 @@ nodes = list() /obj/machinery/atmospherics/pipe/layer_manifold/update_layer() - layer = (HAS_TRAIT(src, TRAIT_UNDERFLOOR) ? ABOVE_OPEN_TURF_LAYER : initial(layer)) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE) //This is above everything else. + layer = (HAS_TRAIT(src, TRAIT_UNDERFLOOR) ? BELOW_CATWALK_LAYER : initial(layer)) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE) //This is above everything else. /obj/machinery/atmospherics/pipe/layer_manifold/update_overlays() . = ..() @@ -63,17 +63,20 @@ if(istype(machine_check, /obj/machinery/atmospherics/pipe/layer_manifold)) for(var/i in PIPING_LAYER_MIN to PIPING_LAYER_MAX) - . += get_attached_image(get_dir(src, machine_check), i, COLOR_VERY_LIGHT_GRAY) + . += get_attached_image(get_dir(src, machine_check), i, machine_check.pipe_color == pipe_color ? pipe_color : ATMOS_COLOR_OMNI) return if(istype(machine_check, /obj/machinery/atmospherics/components/unary/airlock_pump)) . += get_attached_image(get_dir(src, machine_check), 4, COLOR_BLUE) //. += get_attached_image(get_dir(src, machine_check), 2, COLOR_RED) // Only the distro node is added currently to the pipenet, it doesn't merge the pipenet with the waste node return - . += get_attached_image(get_dir(src, machine_check), machine_check.piping_layer, machine_check.pipe_color) + var/passed_color = machine_check.pipe_color + if(istype(machine_check, /obj/machinery/atmospherics/pipe/color_adapter) || machine_check.pipe_color == ATMOS_COLOR_OMNI) + passed_color = pipe_color + . += get_attached_image(get_dir(src, machine_check), machine_check.piping_layer, passed_color) /obj/machinery/atmospherics/pipe/layer_manifold/proc/get_attached_image(p_dir, p_layer, p_color) var/working_layer = FLOAT_LAYER - HAS_TRAIT(src, TRAIT_UNDERFLOOR) ? 1 : 0.01 - var/mutable_appearance/muta = mutable_appearance('icons/obj/pipes_n_cables/layer_manifold_underlays.dmi', "intact_[p_dir]_[p_layer]", layer = working_layer, appearance_flags = RESET_COLOR) + var/mutable_appearance/muta = mutable_appearance('icons/obj/pipes_n_cables/layer_manifold_underlays.dmi', "intact_[p_dir]_[p_layer]", layer = working_layer, appearance_flags = RESET_COLOR|KEEP_APART) muta.color = p_color return muta diff --git a/code/modules/atmospherics/machinery/pipes/mapping.dm b/code/modules/atmospherics/machinery/pipes/mapping.dm index dce09be9092..35f5e521ec5 100644 --- a/code/modules/atmospherics/machinery/pipes/mapping.dm +++ b/code/modules/atmospherics/machinery/pipes/mapping.dm @@ -80,7 +80,7 @@ HELPER_PARTIAL_NAMED(/obj/machinery/atmospherics/pipe/multiz/##Type, "adapter", Name, Color) \ HELPER(yellow, COLOR_YELLOW) -HELPER(general, COLOR_VERY_LIGHT_GRAY) +HELPER(general, ATMOS_COLOR_OMNI) HELPER(cyan, COLOR_CYAN) HELPER(green, COLOR_VIBRANT_LIME) HELPER(orange, COLOR_ENGINEERING_ORANGE) diff --git a/code/modules/atmospherics/machinery/pipes/multiz.dm b/code/modules/atmospherics/machinery/pipes/multiz.dm index ebe29531316..0d82afa3972 100644 --- a/code/modules/atmospherics/machinery/pipes/multiz.dm +++ b/code/modules/atmospherics/machinery/pipes/multiz.dm @@ -42,10 +42,11 @@ /obj/machinery/atmospherics/pipe/multiz/update_overlays() . = ..() - pipe.color = front_node ? front_node.pipe_color : rgb(255, 255, 255) + pipe.appearance_flags |= RESET_COLOR|KEEP_APART + pipe.color = front_node ? front_node.pipe_color : ATMOS_COLOR_OMNI pipe.icon_state = "pipe-[piping_layer]" . += pipe - center.pixel_x = PIPING_LAYER_P_X * (piping_layer - PIPING_LAYER_DEFAULT) + center.pixel_w = PIPING_LAYER_P_X * (piping_layer - PIPING_LAYER_DEFAULT) . += center ///Attempts to locate a multiz pipe that's above us, if it finds one it merges us into its pipenet diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index b7090644f24..efba5d2d344 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -139,4 +139,4 @@ current_node.update_icon() /obj/machinery/atmospherics/pipe/update_layer() - layer = (HAS_TRAIT(src, TRAIT_UNDERFLOOR) ? ABOVE_OPEN_TURF_LAYER : initial(layer)) + (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE + (GLOB.pipe_colors_ordered[pipe_color] * 0.0001) + layer = (HAS_TRAIT(src, TRAIT_UNDERFLOOR) ? BELOW_CATWALK_LAYER : initial(layer)) + (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE + (GLOB.pipe_colors_ordered[pipe_color] * 0.0001) diff --git a/code/modules/autowiki/pages/fishing.dm b/code/modules/autowiki/pages/fishing.dm index ce2872235bb..57ce95712fd 100644 --- a/code/modules/autowiki/pages/fishing.dm +++ b/code/modules/autowiki/pages/fishing.dm @@ -118,7 +118,6 @@ "name" = escape_value(trait.name), "description" = escape_value(trait.catalog_description), "inheritability" = trait.inheritability, - "inheritability_diff" = trait.diff_traits_inheritability, )) diff --git a/code/modules/awaymissions/away_props.dm b/code/modules/awaymissions/away_props.dm index 90fc3031088..64d6acbd373 100644 --- a/code/modules/awaymissions/away_props.dm +++ b/code/modules/awaymissions/away_props.dm @@ -56,7 +56,7 @@ name = "pit grate" icon = 'icons/obj/smooth_structures/lattice.dmi' icon_state = "lattice-255" - layer = ABOVE_OPEN_TURF_LAYER + layer = BELOW_CATWALK_LAYER plane = FLOOR_PLANE anchored = TRUE obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP @@ -108,7 +108,7 @@ /obj/structure/pitgrate/proc/reset_plane() SET_PLANE_IMPLICIT(src, FLOOR_PLANE) - layer = ABOVE_OPEN_TURF_LAYER + layer = BELOW_CATWALK_LAYER /obj/structure/pitgrate/Destroy() if(hidden) diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index db48b1b31d1..927b608ada8 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -156,7 +156,7 @@ /turf/open/floor/iron/dark/snowdin initial_gas_mix = FROZEN_ATMOS planetary_atmos = TRUE - temperature = 180 + temperature = ICEBOX_MIN_TEMPERATURE /////////// papers diff --git a/code/modules/basketball/basketball_map_loading.dm b/code/modules/basketball/basketball_map_loading.dm index 5ed18997dde..1dac2043668 100644 --- a/code/modules/basketball/basketball_map_loading.dm +++ b/code/modules/basketball/basketball_map_loading.dm @@ -1,9 +1,6 @@ /obj/effect/landmark/basketball name = "Basketball Map Spawner" -/obj/effect/landmark/basketball/game_area - name = "Basketball Game Location" - /obj/effect/landmark/basketball/team_spawn name = "Basketball Team Spawner" var/game_id = "basketball" @@ -35,66 +32,79 @@ flags_1 = NONE area_flags = UNIQUE_AREA | NOTELEPORT | NO_DEATH_MESSAGE | BLOCK_SUICIDE -/datum/map_template/basketball - should_place_on_top = FALSE +/datum/lazy_template/basketball + map_dir = "_maps/minigame/basketball" + place_on_top = TRUE + turf_reservation_type = /datum/turf_reservation/turf_not_baseturf + /// Map UI Name + var/name + /// Map Description var/description = "" /// The name of the basketball team var/team_name /// The basketball teams home stadium uniform var/home_team_uniform -/datum/map_template/basketball/stadium +/datum/lazy_template/basketball/stadium name = "Stadium" description = "The homecourt for the Nanotrasen Basketball Department." - mappath = "_maps/map_files/basketball/stadium.dmm" + map_name = "stadium" + key = "stadium" team_name = "Nanotrasen Basketball Department" home_team_uniform = /datum/outfit/basketball/nanotrasen -/datum/map_template/basketball/lusty_xenomorphs +/datum/lazy_template/basketball/lusty_xenomorphs name = "Lusty Xenomorphs Stadium" description = "The homecourt of the Lusty Xenomorphs." - mappath = "_maps/map_files/basketball/lusty_xenomorphs.dmm" + map_name = "lusty_xenomorphs" + key = "lusty_xenomorphs" team_name = "Lusty Xenomorphs" home_team_uniform = /datum/outfit/basketball/lusty_xenomorphs -/datum/map_template/basketball/space_surfers +/datum/lazy_template/basketball/space_surfers name = "Space Surfers Stadium" description = "The homecourt of the Space Surfers." - mappath = "_maps/map_files/basketball/space_surfers.dmm" + map_name = "space_surfers" + key = "space_surfers" team_name = "Space Surfers" home_team_uniform = /datum/outfit/basketball/space_surfers -/datum/map_template/basketball/greytide_worldwide +/datum/lazy_template/basketball/greytide_worldwide name = "Greytide Worldwide Stadium" description = "The homecourt of the Greytide Worldwide." - mappath = "_maps/map_files/basketball/greytide_worldwide.dmm" + map_name = "greytide_worldwide" + key = "greytide_worldwide" team_name = "Greytide Worldwide" home_team_uniform = /datum/outfit/basketball/greytide_worldwide -/datum/map_template/basketball/ass_blast_usa +/datum/lazy_template/basketball/ass_blast_usa name = "Ass Blast USA Stadium" description = "The homecourt of the Ass Blast USA." - mappath = "_maps/map_files/basketball/ass_blast_usa.dmm" + map_name = "ass_blast_usa" + key = "ass_blast_usa" team_name = "Ass Blast USA" home_team_uniform = /datum/outfit/basketball/ass_blast_usa -/datum/map_template/basketball/soviet_bears +/datum/lazy_template/basketball/soviet_bears name = "Soviet Bears Stadium" description = "The homecourt of the Soviet Bears." - mappath = "_maps/map_files/basketball/soviet_bears.dmm" + map_name = "soviet_bear" + key = "soviet_bear" team_name = "Soviet Bears" home_team_uniform = /datum/outfit/basketball/soviet_bears -/datum/map_template/basketball/ash_gladiators +/datum/lazy_template/basketball/ash_gladiators name = "Ash Gladiators Stadium" description = "The homecourt of the Ash Gladiators." - mappath = "_maps/map_files/basketball/ash_gladiators.dmm" + map_name = "ash_gladiators" + key = "ash_gladiators" team_name = "Ash Gladiators" home_team_uniform = /datum/outfit/basketball/ash_gladiators -/datum/map_template/basketball/beach_bums +/datum/lazy_template/basketball/beach_bums name = "Beach Bums Stadium" description = "The homecourt of the Beach Bums." - mappath = "_maps/map_files/basketball/beach_bums.dmm" + map_name = "beach_bums" + key = "beach_bums" team_name = "Beach Bums" home_team_uniform = /datum/outfit/basketball/beach_bums diff --git a/code/modules/basketball/controller.dm b/code/modules/basketball/controller.dm index d7f58f11903..de32aa766bb 100644 --- a/code/modules/basketball/controller.dm +++ b/code/modules/basketball/controller.dm @@ -18,26 +18,29 @@ GLOBAL_VAR(basketball_game) */ /datum/basketball_controller /// Template picked when the game starts. used for the name and desc reading - var/datum/map_template/basketball/current_map - /// Map generation tool that deletes the current map after the game finishes - var/datum/map_generator/massdelete/map_deleter + var/datum/lazy_template/basketball/current_map + /// Our turf reservation AKA where the arena is + var/datum/turf_reservation/location /// Total amount of time basketball is played for var/game_duration = 3 MINUTES /// List of all players ckeys involved in the minigame - var/list/minigame_players = list() + var/list/minigame_players_ckeys = list() + /// List of all player mobs involved in the minigame + var/list/minigame_basketball_mobs = list() /// Spawn points for home team players var/list/home_team_landmarks = list() /// List of home team players ckeys - var/list/home_team_players = list() + var/list/home_team_ckeys = list() + /// The basketball hoop used by home team var/obj/structure/hoop/minigame/home_hoop /// Spawn points for away team players var/list/away_team_landmarks = list() /// List of away team players ckeys - var/list/away_team_players = list() + var/list/away_team_ckeys = list() /// The basketball hoop used by away team var/obj/structure/hoop/minigame/away_hoop @@ -46,14 +49,17 @@ GLOBAL_VAR(basketball_game) /datum/basketball_controller/New() . = ..() + if(GLOB.basketball_game) + qdel(src) + CRASH("A basketball controller already exists.") GLOB.basketball_game = src - map_deleter = new /datum/basketball_controller/Destroy(force) . = ..() GLOB.basketball_game = null + current_map = null + location = null end_game() - qdel(map_deleter) /** * Triggers at beginning of the game when there is a confirmed list of valid, ready players. @@ -68,18 +74,13 @@ GLOBAL_VAR(basketball_game) * * ready_players: list of filtered, sane players (so not playing or disconnected) for the game to put into roles */ /datum/basketball_controller/proc/prepare_game(ready_players) - var/list/possible_maps = subtypesof(/datum/map_template/basketball) - var/turf/spawn_area = get_turf(locate(/obj/effect/landmark/basketball/game_area) in GLOB.landmarks_list) + var/list/possible_maps = subtypesof(/datum/lazy_template/basketball) current_map = pick(possible_maps) current_map = new current_map - - if(!spawn_area) - CRASH("No spawn area detected for Basketball Minigame!") - var/list/bounds = current_map.load(spawn_area) - if(!bounds) + location = current_map.lazy_load() + if(!location) CRASH("Loading basketball map failed!") - map_deleter.defineRegion(spawn_area, locate(spawn_area.x + 23, spawn_area.y + 25, spawn_area.z), replace = TRUE) //so we're ready to mass delete when round ends var/turf/home_hoop_turf = get_turf(locate(/obj/effect/landmark/basketball/team_spawn/home_hoop) in GLOB.landmarks_list) if(!home_hoop_turf) @@ -134,9 +135,8 @@ GLOBAL_VAR(basketball_game) * Called when the game is setting up, AFTER map is loaded but BEFORE the game start. Creates and places each body and gives the correct player key */ /datum/basketball_controller/proc/create_bodies(ready_players) - var/list/possible_away_teams = subtypesof(/datum/map_template/basketball) - current_map.type - var/datum/map_template/basketball/away_map = pick(possible_away_teams) - away_map = new away_map + var/list/possible_away_teams = subtypesof(/datum/lazy_template/basketball) - current_map.type + var/datum/lazy_template/basketball/away_map = pick(possible_away_teams) var/list/home_spawnpoints = home_team_landmarks.Copy() var/list/away_spawnpoints = away_team_landmarks.Copy() @@ -148,7 +148,7 @@ GLOBAL_VAR(basketball_game) // rename the hoops to their appropriate teams names home_hoop.name = current_map.team_name - away_hoop.name = away_map.team_name + away_hoop.name = away_map::team_name var/player_count = 0 // if total players is odd number then the odd man out is a referee @@ -156,7 +156,7 @@ GLOBAL_VAR(basketball_game) for(var/player_key in ready_players) player_count++ - minigame_players |= player_key + minigame_players_ckeys |= player_key var/is_player_referee = (player_count == length(ready_players) && minigame_has_referee) @@ -165,16 +165,16 @@ GLOBAL_VAR(basketball_game) team_uniform = /datum/outfit/basketball/referee else if(player_count % 2) // odd is home team spawn_landmark = pick_n_take(home_spawnpoints) - home_team_players |= player_key + home_team_ckeys |= player_key away_hoop.team_ckeys |= player_key // to restrict scoring on opponents hoop rapidly team_uniform = current_map.home_team_uniform team_name = current_map.team_name else // even is away team spawn_landmark = pick_n_take(away_spawnpoints) - away_team_players |= player_key + away_team_ckeys |= player_key home_hoop.team_ckeys |= player_key // to restrict scoring on opponents hoop rapidly - team_uniform = away_map.home_team_uniform - team_name = away_map.team_name + team_uniform = away_map::home_team_uniform + team_name = away_map::team_name var/mob/living/carbon/human/baller = new(get_turf(spawn_landmark)) @@ -199,6 +199,7 @@ GLOBAL_VAR(basketball_game) old_body = player_client.mob.mind.current, \ ) baller.PossessByPlayer(player_key) + minigame_basketball_mobs |= baller SEND_SOUND(baller, sound('sound/items/whistle/whistle.ogg', volume=30)) if(is_player_referee) @@ -221,34 +222,31 @@ GLOBAL_VAR(basketball_game) if(home_hoop.total_score == away_hoop.total_score) is_game_draw = TRUE - winner_team_ckeys |= home_team_players - winner_team_ckeys |= away_team_players + winner_team_ckeys |= home_team_ckeys + winner_team_ckeys |= away_team_ckeys else if(home_hoop.total_score > away_hoop.total_score) - winner_team_ckeys = away_team_players + winner_team_ckeys = away_team_ckeys winner_team_name = away_hoop.name - loser_team_ckeys = home_team_players + loser_team_ckeys = home_team_ckeys else if(home_hoop.total_score < away_hoop.total_score) - winner_team_ckeys = home_team_players + winner_team_ckeys = home_team_ckeys winner_team_name = home_hoop.name - loser_team_ckeys = away_team_players + loser_team_ckeys = away_team_ckeys if(is_game_draw) for(var/ckey in winner_team_ckeys) var/mob/living/competitor = get_mob_by_ckey(ckey) - var/area/mob_area = get_area(competitor) - if(istype(competitor) && istype(mob_area, /area/centcom/basketball)) + if(competitor in minigame_basketball_mobs) to_chat(competitor, span_hypnophrase("The game resulted in a draw!")) else for(var/ckey in winner_team_ckeys) var/mob/living/competitor = get_mob_by_ckey(ckey) - var/area/mob_area = get_area(competitor) - if(istype(competitor) && istype(mob_area, /area/centcom/basketball)) + if(competitor in minigame_basketball_mobs) to_chat(competitor, span_hypnophrase("[winner_team_name] team wins!")) for(var/ckey in loser_team_ckeys) var/mob/living/competitor = get_mob_by_ckey(ckey) - var/area/mob_area = get_area(competitor) - if(istype(competitor) && istype(mob_area, /area/centcom/basketball)) + if(competitor in minigame_basketball_mobs) to_chat(competitor, span_hypnophrase("[winner_team_name] team wins!")) competitor.dust() @@ -258,19 +256,20 @@ GLOBAL_VAR(basketball_game) * Cleans up the game, resetting variables back to the beginning and removing the map with the generator. */ /datum/basketball_controller/proc/end_game() - for(var/ckey in minigame_players) - var/mob/living/competitor = get_mob_by_ckey(ckey) - var/area/mob_area = get_area(competitor) - if(istype(competitor) && istype(mob_area, /area/centcom/basketball)) - QDEL_NULL(competitor) - - map_deleter.generate() //remove the map, it will be loaded at the start of the next one - QDEL_NULL(current_map) - - //map gen does not deal with landmarks + for(var/mob/living/living in minigame_basketball_mobs) + living.ghostize(can_reenter_corpse = FALSE) // avoids runtimes when a cliented mob is qdel'd + QDEL_LIST(minigame_basketball_mobs) QDEL_LIST(home_team_landmarks) QDEL_LIST(away_team_landmarks) QDEL_LIST(referee_landmark) + for(var/obj/effect/landmark/basketball/team_spawn/hoop in GLOB.landmarks_list) + qdel(hoop) + + for(var/turf/victimized_turf as anything in location.reserved_turfs) //remove this once clearing turf reservations is actually reliable + victimized_turf.empty() + current_map.reservations -= location + current_map = null + QDEL_NULL(location) /** * Called when enough players have signed up to fill a setup. DOESN'T NECESSARILY MEAN THE GAME WILL START. diff --git a/code/modules/basketball/hoop.dm b/code/modules/basketball/hoop.dm index 82eaee9a8ac..ad4d7ff48f1 100644 --- a/code/modules/basketball/hoop.dm +++ b/code/modules/basketball/hoop.dm @@ -54,38 +54,38 @@ /obj/structure/hoop/update_overlays() . = ..() - var/dir_offset_x = 0 - var/dir_offset_y = 0 + var/dir_offset_w = 0 + var/dir_offset_z = 0 switch(dir) if(NORTH) - dir_offset_y = -32 + dir_offset_z = -32 if(SOUTH) - dir_offset_y = 32 + dir_offset_z = 32 if(EAST) - dir_offset_x = -32 + dir_offset_w = -32 if(WEST) - dir_offset_x = 32 + dir_offset_w = 32 var/mutable_appearance/scoreboard = mutable_appearance('icons/obj/signs.dmi', "basketball_scorecard") - scoreboard.pixel_x = dir_offset_x - scoreboard.pixel_y = dir_offset_y + scoreboard.pixel_w = dir_offset_w + scoreboard.pixel_z = dir_offset_z . += scoreboard var/ones = total_score % 10 var/mutable_appearance/ones_overlay = mutable_appearance('icons/obj/signs.dmi', "days_[ones]", layer + 0.01) - ones_overlay.pixel_x = 4 + ones_overlay.pixel_w = 4 var/mutable_appearance/emissive_ones_overlay = emissive_appearance('icons/obj/signs.dmi', "days_[ones]", src, alpha = src.alpha) - emissive_ones_overlay.pixel_x = 4 + emissive_ones_overlay.pixel_w = 4 scoreboard.add_overlay(ones_overlay) scoreboard.add_overlay(emissive_ones_overlay) var/tens = (total_score / 10) % 10 var/mutable_appearance/tens_overlay = mutable_appearance('icons/obj/signs.dmi', "days_[tens]", layer + 0.01) - tens_overlay.pixel_x = -5 + tens_overlay.pixel_w = -5 var/mutable_appearance/emissive_tens_overlay = emissive_appearance('icons/obj/signs.dmi', "days_[tens]", src, alpha = src.alpha) - emissive_tens_overlay.pixel_x = -5 + emissive_tens_overlay.pixel_w = -5 scoreboard.add_overlay(tens_overlay) scoreboard.add_overlay(emissive_tens_overlay) diff --git a/code/modules/bitrunning/antagonists/cyber_police.dm b/code/modules/bitrunning/antagonists/cyber_police.dm index 2ec8e042572..3e335475ac6 100644 --- a/code/modules/bitrunning/antagonists/cyber_police.dm +++ b/code/modules/bitrunning/antagonists/cyber_police.dm @@ -11,7 +11,7 @@ convert_agent() - var/datum/martial_art/the_sleeping_carp/carp = new() + var/datum/martial_art/the_sleeping_carp/carp = new(src) carp.teach(owner.current) /datum/outfit/cyber_police @@ -37,4 +37,3 @@ officer_uniform.has_sensor = NO_SENSORS officer_uniform.sensor_mode = SENSOR_OFF user.update_suit_sensors() - diff --git a/code/modules/bitrunning/components/avatar_connection.dm b/code/modules/bitrunning/components/avatar_connection.dm index 5280f803ef7..3615ee37b8e 100644 --- a/code/modules/bitrunning/components/avatar_connection.dm +++ b/code/modules/bitrunning/components/avatar_connection.dm @@ -222,7 +222,7 @@ //if your bitrunning avatar somehow manages to acquire and consume a red pill, they will be ejected from the Matrix -/datum/component/avatar_connection/proc/disconnect_if_red_pill(datum/source, obj/item/reagent_containers/pill/pill, mob/feeder) +/datum/component/avatar_connection/proc/disconnect_if_red_pill(datum/source, obj/item/reagent_containers/applicator/pill/pill, mob/feeder) SIGNAL_HANDLER if(pill.icon_state == "pill4") full_avatar_disconnect() diff --git a/code/modules/bitrunning/components/bitrunning_points.dm b/code/modules/bitrunning/components/bitrunning_points.dm index ae20ec41fb4..b800d586e94 100644 --- a/code/modules/bitrunning/components/bitrunning_points.dm +++ b/code/modules/bitrunning/components/bitrunning_points.dm @@ -7,7 +7,6 @@ /datum/component/bitrunning_points/Initialize(datum/lazy_template/virtual_domain/domain) - . = ..() if(!isturf(parent)) return COMPONENT_INCOMPATIBLE diff --git a/code/modules/bitrunning/components/virtual_entity.dm b/code/modules/bitrunning/components/virtual_entity.dm index dba5e9db34e..52a259a6d04 100644 --- a/code/modules/bitrunning/components/virtual_entity.dm +++ b/code/modules/bitrunning/components/virtual_entity.dm @@ -1,19 +1,35 @@ /// Handles all special considerations for "virtual entities" such as bitrunning ghost roles or digital anomaly antagonists. /datum/component/virtual_entity - ///The cooldown for balloon alerts, so the player isn't spammed while trying to enter a restricted area. + /// The cooldown for balloon alerts, so the player isn't spammed while trying to enter a restricted area. COOLDOWN_DECLARE(OOB_cooldown) -/datum/component/virtual_entity/Initialize(obj/machinery/quantum_server) - . = ..() +/datum/component/virtual_entity/Initialize(obj/machinery/quantum_server) if(quantum_server.obj_flags & EMAGGED) - jailbreak_mobs() //This just sends a message and self-deletes, a bit messy but it works. - return + jailbreak_mobs() + return COMPONENT_REDUNDANT RegisterSignal(parent, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(on_parent_pre_move)) - RegisterSignal(quantum_server, COMSIG_ATOM_EMAG_ACT, PROC_REF(jailbreak_mobs)) + RegisterSignal(quantum_server, COMSIG_ATOM_EMAG_ACT, PROC_REF(on_emagged)) -///Prevents entry to a certain area if it has flags preventing virtual entities from entering. + +/// Self-destructs the component, allowing free-roam by all entities with this restriction. +/datum/component/virtual_entity/proc/jailbreak_mobs() + to_chat(parent, span_bolddanger("You shiver for a moment with a sense of clarity you haven't felt before.")) + to_chat(parent, span_notice("You could go anywhere, do anything! You could leave this simulation right now if you wanted!")) + to_chat(parent, span_danger("But be warned, quantum entanglement will interfere with any previous lives.")) + to_chat(parent, span_notice("You'll have just one chance to go nova, and there's no turning back.")) + + +/// Remove any restrictions AFTER the mob has spawned +/datum/component/virtual_entity/proc/on_emagged(datum/source) + SIGNAL_HANDLER + + jailbreak_mobs() + qdel(src) + + +/// Prevents entry to a certain area if it has flags preventing virtual entities from entering. /datum/component/virtual_entity/proc/on_parent_pre_move(atom/movable/source, atom/new_location) SIGNAL_HANDLER @@ -27,12 +43,3 @@ COOLDOWN_START(src, OOB_cooldown, 2 SECONDS) return COMPONENT_MOVABLE_BLOCK_PRE_MOVE -///Self-destructs the component, allowing free-roam by all entities with this restriction. -/datum/component/virtual_entity/proc/jailbreak_mobs() - SIGNAL_HANDLER - - to_chat(parent, span_bolddanger("You shiver for a moment with a sense of clarity you haven't felt before.")) - to_chat(parent, span_notice("You could go anywhere, do anything! You could leave this simulation right now if you wanted!")) - to_chat(parent, span_danger("But be warned, quantum entanglement will interfere with any previous lives.")) - to_chat(parent, span_notice("You'll have just one chance to go nova, and there's no turning back.")) - qdel(src) diff --git a/code/modules/bitrunning/objects/vendor.dm b/code/modules/bitrunning/objects/vendor.dm index 96c415b9bfe..c42a954b978 100644 --- a/code/modules/bitrunning/objects/vendor.dm +++ b/code/modules/bitrunning/objects/vendor.dm @@ -77,6 +77,7 @@ hidden = TRUE crate_name = "bitrunning delivery crate" access = list(ACCESS_BIT_DEN) + test_ignored = TRUE /datum/supply_pack/bitrunning/New(purchaser, cost, list/contains) . = ..() diff --git a/code/modules/bitrunning/server/_parent.dm b/code/modules/bitrunning/server/_parent.dm index f166a82c817..38e6efc76eb 100644 --- a/code/modules/bitrunning/server/_parent.dm +++ b/code/modules/bitrunning/server/_parent.dm @@ -49,20 +49,21 @@ /// Cooldown between being able to toggle broadcasting COOLDOWN_DECLARE(broadcast_toggle_cd) + /obj/machinery/quantum_server/post_machine_initialize() . = ..() RegisterSignals(src, list(COMSIG_MACHINERY_BROKEN, COMSIG_MACHINERY_POWER_LOST), PROC_REF(on_broken)) RegisterSignal(src, COMSIG_QDELETING, PROC_REF(on_delete)) -/obj/machinery/quantum_server/Destroy(force) - . = ..() +/obj/machinery/quantum_server/Destroy(force) mutation_candidate_refs.Cut() avatar_connection_refs.Cut() spawned_threat_refs.Cut() - QDEL_NULL(exit_turfs) + exit_turfs.Cut() QDEL_NULL(generated_domain) + return ..() /obj/machinery/quantum_server/examine(mob/user) . = ..() @@ -88,6 +89,7 @@ if(isobserver(user) && (obj_flags & EMAGGED)) . += span_notice("Ominous warning lights are blinking red. This server has been tampered with.") + /obj/machinery/quantum_server/emag_act(mob/user, obj/item/card/emag/emag_card) . = ..() @@ -102,6 +104,7 @@ balloon_alert(user, "system jailbroken...") playsound(src, 'sound/effects/sparks/sparks1.ogg', 35, vary = TRUE) + /obj/machinery/quantum_server/update_appearance(updates) if(isnull(generated_domain) || !is_operational) set_light(l_on = FALSE) @@ -110,6 +113,7 @@ set_light(l_range = 2, l_power = 1.5, l_color = is_ready ? LIGHT_COLOR_BABY_BLUE : LIGHT_COLOR_FIRE, l_on = TRUE) return ..() + /obj/machinery/quantum_server/update_icon_state() if(isnull(generated_domain) || !is_operational) icon_state = base_icon_state @@ -118,6 +122,7 @@ icon_state = "[base_icon_state]_[is_ready ? "on" : "off"]" return ..() + /obj/machinery/quantum_server/attackby(obj/item/weapon, mob/user, params) . = ..() @@ -129,6 +134,7 @@ capacitor_coefficient = 0.1 points = 100 + /obj/machinery/quantum_server/crowbar_act(mob/living/user, obj/item/crowbar) . = ..() @@ -142,6 +148,7 @@ return TRUE return FALSE + /obj/machinery/quantum_server/screwdriver_act(mob/living/user, obj/item/screwdriver) . = ..() @@ -152,6 +159,7 @@ return TRUE return FALSE + /obj/machinery/quantum_server/RefreshParts() var/capacitor_rating = 1.15 var/datum/stock_part/capacitor/cap = locate() in component_parts diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm index 57d805e59ec..c9e2e01f681 100644 --- a/code/modules/bitrunning/server/obj_generation.dm +++ b/code/modules/bitrunning/server/obj_generation.dm @@ -21,7 +21,7 @@ if(!length(possible_turfs)) // Out of turfs to place a curiosity return FALSE - if(generated_domain.secondary_loot_generated >= assoc_value_sum(generated_domain.secondary_loot)) // Out of curiosities to place + if(generated_domain.secondary_loot_generated >= counterlist_sum(generated_domain.secondary_loot)) // Out of curiosities to place return FALSE shuffle_inplace(possible_turfs) diff --git a/code/modules/buildmode/submodes/smite.dm b/code/modules/buildmode/submodes/smite.dm index 7e382926c59..39fa7d150ad 100644 --- a/code/modules/buildmode/submodes/smite.dm +++ b/code/modules/buildmode/submodes/smite.dm @@ -37,4 +37,4 @@ to_chat(user, span_notice("No smite selected.")) return - selected_smite.effect(user, object) + selected_smite.do_effect(user, object) diff --git a/code/modules/capture_the_flag/ctf_map_loading.dm b/code/modules/capture_the_flag/ctf_map_loading.dm index 9e23d617473..502e8cfe3bd 100644 --- a/code/modules/capture_the_flag/ctf_map_loading.dm +++ b/code/modules/capture_the_flag/ctf_map_loading.dm @@ -67,30 +67,30 @@ GLOBAL_DATUM(ctf_spawner, /obj/effect/landmark/ctf) /datum/map_template/ctf/classic name = "Classic" description = "The original CTF map." - mappath = "_maps/map_files/CTF/classic.dmm" + mappath = "_maps/minigame/CTF/classic.dmm" /datum/map_template/ctf/four_side name = "Four Side" description = "A CTF map created to demonstrate 4 team CTF, features a single centred flag rather than one per team." - mappath = "_maps/map_files/CTF/fourSide.dmm" + mappath = "_maps/minigame/CTF/fourSide.dmm" /datum/map_template/ctf/downtown name = "Downtown" description = "A CTF map that takes place in a terrestrial city." - mappath = "_maps/map_files/CTF/downtown.dmm" + mappath = "_maps/minigame/CTF/downtown.dmm" /datum/map_template/ctf/limbo name = "Limbo" description = "A KOTH map that takes place in a wizard den with looping hallways" - mappath = "_maps/map_files/CTF/limbo.dmm" + mappath = "_maps/minigame/CTF/limbo.dmm" points_to_win = 180 /datum/map_template/ctf/cruiser name = "Crusier" description = "A CTF map that takes place across multiple space ships, one carrying a powerful device that can accelerate those who obtain it" - mappath = "_maps/map_files/CTF/cruiser.dmm" + mappath = "_maps/minigame/CTF/cruiser.dmm" /datum/map_template/ctf/turbine name = "Turbine" description = "A CTF map that takes place in a familiar facility. Don't try to hold out mid- There's no sentries in this version." - mappath = "_maps/map_files/CTF/turbine.dmm" + mappath = "_maps/minigame/CTF/turbine.dmm" diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index 84be661e27c..b12ee087494 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -194,7 +194,7 @@ return ..() && shipped_ammount >= required_ammount /datum/bounty/pill/applies_to(obj/shipped) - if(!istype(shipped, /obj/item/reagent_containers/pill)) + if(!istype(shipped, /obj/item/reagent_containers/applicator/pill)) return FALSE if(shipped?.reagents.get_reagent_amount(wanted_reagent.type) >= wanted_vol) return TRUE diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm index 5239ebceae2..f2de2cfa8fe 100644 --- a/code/modules/cargo/exports.dm +++ b/code/modules/cargo/exports.dm @@ -46,8 +46,9 @@ Then the player gets the profit from selling his own wasted time. ** dry_run: if the item should be actually sold, or if it's just a pirce test ** external_report: works as "transaction" object, pass same one in if you're doing more than one export in single go ** ignore_typecache: typecache containing types that should be completely ignored + ** export_market: Defines the market that the items are being sold to. */ -/proc/export_item_and_contents(atom/movable/exported_atom, apply_elastic = TRUE, delete_unsold = TRUE, dry_run = FALSE, datum/export_report/external_report, list/ignore_typecache) +/proc/export_item_and_contents(atom/movable/exported_atom, apply_elastic = TRUE, delete_unsold = TRUE, dry_run = FALSE, datum/export_report/external_report, list/ignore_typecache, export_market = EXPORT_MARKET_STATION) external_report = init_export(external_report) var/list/contents = exported_atom.get_all_contents_ignoring(ignore_typecache) @@ -55,7 +56,7 @@ Then the player gets the profit from selling his own wasted time. // We go backwards, so it'll be innermost objects sold first. We also make sure nothing is accidentally delete before everything is sold. var/list/to_delete = list() for(var/atom/movable/thing as anything in reverse_range(contents)) - var/sold = _export_loop(thing, apply_elastic, dry_run, external_report) + var/sold = _export_loop(thing, apply_elastic, dry_run, external_report, export_market) if(!dry_run && (sold || delete_unsold) && sold != EXPORT_SOLD_DONT_DELETE) if(ismob(thing)) thing.investigate_log("deleted through cargo export", INVESTIGATE_CARGO) @@ -68,10 +69,10 @@ Then the player gets the profit from selling his own wasted time. return external_report /// It works like export_item_and_contents(), however it ignores the contents. Meaning only `exported_atom` will be valued. -/proc/export_single_item(atom/movable/exported_atom, apply_elastic = TRUE, delete_unsold = TRUE, dry_run = FALSE, datum/export_report/external_report) +/proc/export_single_item(atom/movable/exported_atom, apply_elastic = TRUE, delete_unsold = TRUE, dry_run = FALSE, datum/export_report/external_report, export_market = EXPORT_MARKET_STATION) external_report = init_export(external_report) - var/sold = _export_loop(exported_atom, apply_elastic, dry_run, external_report) + var/sold = _export_loop(exported_atom, apply_elastic, dry_run, external_report, export_market) if(!dry_run && (sold || delete_unsold) && sold != EXPORT_SOLD_DONT_DELETE) if(ismob(exported_atom)) exported_atom.investigate_log("deleted through cargo export", INVESTIGATE_CARGO) @@ -80,10 +81,10 @@ Then the player gets the profit from selling his own wasted time. return external_report /// The main bit responsible for selling the item. Shared by export_single_item() and export_item_and_contents() -/proc/_export_loop(atom/movable/exported_atom, apply_elastic = TRUE, dry_run = FALSE, datum/export_report/external_report) +/proc/_export_loop(atom/movable/exported_atom, apply_elastic = TRUE, dry_run = FALSE, datum/export_report/external_report, export_market) var/sold = EXPORT_NOT_SOLD for(var/datum/export/export as anything in GLOB.exports_list) - if(export.applies_to(exported_atom, apply_elastic)) + if(export.applies_to(exported_atom, apply_elastic, export_market)) if(!dry_run && (SEND_SIGNAL(exported_atom, COMSIG_ITEM_PRE_EXPORT) & COMPONENT_STOP_EXPORT)) break //Don't add value of unscannable items for a dry run report @@ -106,6 +107,8 @@ Then the player gets the profit from selling his own wasted time. var/allow_negative_cost = FALSE /// coefficient used in marginal price calculation that roughly corresponds to the inverse of price elasticity, or "quantity elasticity" var/k_elasticity = 1/30 + /// Coefficient used in the recovery of elastic price calculation. See Process, this value and k_elasticity are multiplied together to form the exponent that returns the price to normal. + var/k_recovery_elasticity = 1/30 /// The multiplier of the amount sold shown on the report. Useful for exports, such as material, which costs are not strictly per single units sold. var/amount_report_multiplier = 1 /// Type of the exported object. If none, the export datum is considered base type. @@ -116,6 +119,8 @@ Then the player gets the profit from selling his own wasted time. var/list/exclude_types = list() /// Set to false if the cost shouldn't be determinable by an export scanner var/scannable = TRUE + /// Export market that this export applies to. Defaults to EXPORT_MARKET_STATION for items sold to the standard supply shuttle, replacements exist for pirates, etc. + var/sales_market = EXPORT_MARKET_STATION /// cost includes elasticity, this does not. var/init_cost @@ -134,7 +139,8 @@ Then the player gets the profit from selling his own wasted time. return ..() /datum/export/process() - cost *= NUM_E**(k_elasticity * (1/30)) + cost *= NUM_E**(k_elasticity * k_recovery_elasticity) + // A little note here based on the standard values for k_recovery_elasticity: 1/30 will result in a price that started at 20% to go back to 100% in around 20 minutes, ramping up over time. if(cost > init_cost) cost = init_cost @@ -157,13 +163,15 @@ Then the player gets the profit from selling his own wasted time. return 1 /// Checks if the item is fit for export datum. -/datum/export/proc/applies_to(obj/exported_item, apply_elastic = TRUE) +/datum/export/proc/applies_to(obj/exported_item, apply_elastic = TRUE, export_market) if(!is_type_in_typecache(exported_item, export_types)) return FALSE if(include_subtypes && is_type_in_typecache(exported_item, exclude_types)) return FALSE if(!get_cost(exported_item, apply_elastic)) return FALSE + if(export_market != sales_market) + return FALSE if(exported_item.flags_1 & HOLOGRAM_1) return FALSE return TRUE diff --git a/code/modules/cargo/exports/food_and_drink.dm b/code/modules/cargo/exports/food_and_drink.dm index 6a8b326dd15..b44c05f0c78 100644 --- a/code/modules/cargo/exports/food_and_drink.dm +++ b/code/modules/cargo/exports/food_and_drink.dm @@ -9,16 +9,14 @@ export_types = list(/obj/item/food) include_subtypes = TRUE exclude_types = list(/obj/item/food/grown) - /// Have we already set the cost of this export? Necessary to avoid the cost being constantly reset. - var/cost_obtained_from_venue_value = FALSE -/datum/export/food/get_cost(obj/object, allowed_categories, apply_elastic) +/datum/export/food/get_cost(obj/item/food/object, allowed_categories, apply_elastic) if(HAS_TRAIT(object, TRAIT_FOOD_SILVER)) return FOOD_PRICE_WORTHLESS - var/obj/item/food/sold_food = object - if(!cost_obtained_from_venue_value) - cost = sold_food.venue_value - cost_obtained_from_venue_value = TRUE + var/elastic_cost = ..() + if(object.venue_value) + var/elastic_percent = elastic_cost / init_cost + return round(object.venue_value * elastic_percent) - return ..() + return elastic_cost diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index 87817987b60..983cf8937a7 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -77,6 +77,70 @@ export_types = /obj/item/stack/sheet/mineral/metal_hydrogen /datum/export/material/market + cost = 1 + k_recovery_elasticity = 1/10 //Modeled such that a stack of materials, selling to drop the cost to ~20%, will recover fully in 8 minutes instead of 20. + export_types = list( + /obj/item/stack/sheet/mineral, + /obj/item/stack/tile/mineral, + /obj/item/stack/ore, + /obj/item/coin, + /obj/item/stock_block, + ) + +/datum/export/material/market/applies_to(obj/exported_obj, apply_elastic) + . = ..() + if(istype(exported_obj, /obj/item/stock_block)) + var/obj/item/stock_block/block = exported_obj + if(!block.export_mat) + return FALSE + if(block.export_mat == material_id) + return TRUE + return FALSE + +/datum/export/material/market/get_amount(obj/exported_obj) + if(istype(exported_obj, /obj/item/stock_block)) + var/obj/item/stock_block/block = exported_obj + return block.quantity + return ..() + +/datum/export/material/market/get_cost(obj/exported_obj, apply_elastic = TRUE) + . = ..() + if(!material_id) + return 0 + + var/obj/item/exported_item = exported_obj + var/amount = get_amount(exported_item) + if(!amount) + return 0 + + var/obj/item/stock_block/block + if(istype(exported_item, /obj/item/stock_block)) + block = exported_item + if(block.export_mat != material_id) + return 0 + + var/material_value = 0 + if(block) + if(block.fluid) + material_value = SSstock_market.materials_prices[block.export_mat] * amount + else + material_value = block.export_value + else + material_value = SSstock_market.materials_prices[material_id] * amount + return cost * material_value // Cost in this case is only serving as the elastic modifier, where material value is the raw value of the sheets sold. + +/datum/export/material/market/sell_object(obj/sold_item, datum/export_report/report, dry_run, apply_elastic) + . = ..() + var/amount = get_amount(sold_item) + if(!amount) + return + + //This formula should impact lower quantity materials greater, and higher quantity materials less. Still, it's a bit rough. Tweaking may be needed. + if(!dry_run) + //decrease the market price + SSstock_market.adjust_material_price(material_id, -SSstock_market.materials_prices[material_id] * (amount / (amount + SSstock_market.materials_quantity[material_id]))) + //increase the stock + SSstock_market.adjust_material_quantity(material_id, amount) /datum/export/material/market/diamond material_id = /datum/material/diamond @@ -101,7 +165,11 @@ /datum/export/material/market/bscrystal message = "of bluespace crystals" material_id = /datum/material/bluespace - export_types = list(/obj/item/stack/sheet/bluespace_crystal, /obj/item/stack/ore) //For whatever reason, bluespace crystals are not a mineral + export_types = list( + /obj/item/stack/sheet/bluespace_crystal, + /obj/item/stack/ore/bluespace_crystal, + /obj/item/stock_block, + ) //For whatever reason, bluespace crystals are not a mineral /datum/export/material/market/iron message = "cm3 of iron" @@ -111,7 +179,8 @@ /obj/item/stack/tile/iron, /obj/item/stack/rods, /obj/item/stack/ore, - /obj/item/coin + /obj/item/coin, + /obj/item/stock_block, ) /datum/export/material/market/glass @@ -120,48 +189,6 @@ export_types = list( /obj/item/stack/sheet/glass, /obj/item/stack/ore, - /obj/item/shard + /obj/item/shard, + /obj/item/stock_block, ) - -/datum/export/material/market/get_cost(obj/O, apply_elastic = FALSE) - var/obj/item/I = O - var/amount = get_amount(I) - if(!amount) - return 0 - var/material_value = (SSstock_market.materials_prices[material_id]) * amount * MARKET_PROFIT_MODIFIER - return round(material_value) - -/datum/export/material/market/sell_object(obj/sold_item, datum/export_report/report, dry_run, apply_elastic) - . = ..() - var/amount = get_amount(sold_item) - if(!amount) - return - - //This formula should impact lower quantity materials greater, and higher quantity materials less. Still, it's a bit rough. Tweaking may be needed. - if(!dry_run) - //decrease the market price - SSstock_market.adjust_material_price(material_id, -SSstock_market.materials_prices[material_id] * (amount / (amount + SSstock_market.materials_quantity[material_id]))) - - //increase the stock - SSstock_market.adjust_material_quantity(material_id, amount) - - -// Stock blocks are a special type of export that can be used to sell a quantity of materials at a specific price on the market. -/datum/export/stock_block - cost = 0 - message = "stock block" - export_types = list(/obj/item/stock_block) - -/datum/export/stock_block/get_cost(obj/O, apply_elastic = FALSE) - var/obj/item/stock_block/block = O - return block.export_value - -/datum/export/stock_block/sell_object(obj/sold_item, datum/export_report/report, dry_run, apply_elastic) - . = ..() - if(dry_run) - return - var/obj/item/stock_block/sold_block = sold_item - var/sale_value = sold_block.export_value - SSstock_market.materials_quantity[sold_block.export_mat] += sold_block.quantity - SSstock_market.materials_prices[sold_block.export_mat] -= round((sale_value) * (sold_block.quantity / (sold_block.quantity + SSstock_market.materials_quantity[sold_block.export_mat]))) - SSstock_market.materials_prices[sold_block.export_mat] = round(clamp(SSstock_market.materials_prices[sold_block.export_mat], initial(sold_block.export_mat.value_per_unit) * SHEET_MATERIAL_AMOUNT * 0.5 , initial(sold_block.export_mat.value_per_unit) * SHEET_MATERIAL_AMOUNT * 3)) diff --git a/code/modules/cargo/exports/tools.dm b/code/modules/cargo/exports/tools.dm index 94e9c264365..eea9afe94a0 100644 --- a/code/modules/cargo/exports/tools.dm +++ b/code/modules/cargo/exports/tools.dm @@ -153,6 +153,6 @@ export_types = list(/obj/item/soap/omega) /datum/export/candle - cost = CARGO_CRATE_VALUE * 0.125 + cost = CARGO_CRATE_VALUE * 0.06125 unit_name = "candle" export_types = list(/obj/item/flashlight/flare/candle) diff --git a/code/modules/cargo/goodies.dm b/code/modules/cargo/goodies.dm index 3b3aec6680c..3d321b6cc23 100644 --- a/code/modules/cargo/goodies.dm +++ b/code/modules/cargo/goodies.dm @@ -3,6 +3,7 @@ access = NONE group = "Goodies" goody = TRUE + crate_type = null discountable = SUPPLY_PACK_STD_DISCOUNTABLE /datum/supply_pack/goody/clear_pda @@ -238,7 +239,7 @@ name = "Emergency Mutadone Pill Single-Pack" desc = "A single pill for curing genetic defects. Useful for when you can't procure one from medbay." cost = PAYCHECK_CREW * 2.5 - contains = list(/obj/item/reagent_containers/pill/mutadone) + contains = list(/obj/item/reagent_containers/applicator/pill/mutadone) /datum/supply_pack/goody/rapid_lighting_device name = "Rapid Lighting Device (RLD) Single-Pack" @@ -312,6 +313,12 @@ cost = PAYCHECK_LOWER contains = list(/obj/item/book/manual/fish_catalog) +/datum/supply_pack/goody/aquarium_props + name = "Aquarium Props Single-Pack" + desc = "A box containing generic aquarium props. You'll still need an aquarium or fish tank for these." + cost = PAYCHECK_LOWER + contains = list(/obj/item/storage/box/aquarium_props) + /datum/supply_pack/goody/coffee_mug name = "Coffee Mug Single-Pack" desc = "A bog standard coffee mug, for drinking coffee." diff --git a/code/modules/cargo/markets/market_items/consumables.dm b/code/modules/cargo/markets/market_items/consumables.dm index b7eed89a195..a8c7c72cd45 100644 --- a/code/modules/cargo/markets/market_items/consumables.dm +++ b/code/modules/cargo/markets/market_items/consumables.dm @@ -57,7 +57,7 @@ /datum/market_item/consumable/floor_pill name = "Strange Pill" desc = "The Russian Roulette of the Maintenance Tunnels." - item = /obj/item/reagent_containers/pill/maintenance + item = /obj/item/reagent_containers/applicator/pill/maintenance stock_min = 5 stock_max = 35 diff --git a/code/modules/cargo/materials_market.dm b/code/modules/cargo/materials_market.dm index dd3093a0aaf..c5ce00ccdd2 100644 --- a/code/modules/cargo/materials_market.dm +++ b/code/modules/cargo/materials_market.dm @@ -15,6 +15,8 @@ icon_state = "mat_market" base_icon_state = "mat_market" idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION + light_power = 3 + light_range = MINIMUM_USEFUL_LIGHT_RANGE /// What items can be converted into a stock block? Must be a stack subtype based on current implementation. var/static/list/exportable_material_items = list( /obj/item/stack/sheet/iron, //God why are we like this @@ -53,34 +55,51 @@ if(default_deconstruction_crowbar(tool)) return ITEM_INTERACT_SUCCESS -/obj/machinery/materials_market/attackby(obj/item/O, mob/user, params) - if(is_type_in_list(O, exportable_material_items)) - var/amount = 0 - var/value = 0 +/obj/machinery/materials_market/attackby(obj/item/markable_object, mob/user, params) + if(is_type_in_list(markable_object, exportable_material_items)) + if(machine_stat & NOPOWER) + balloon_alert(user, "no power!") + return FALSE var/material_to_export - var/obj/item/stack/exportable = O + var/obj/item/stack/exportable = markable_object for(var/datum/material/mat as anything in SSstock_market.materials_prices) if(exportable.has_material_type(mat)) - amount = exportable.amount - value = SSstock_market.materials_prices[mat] material_to_export = mat break //This is only for trading non-alloys, so we can break here - if(!amount) - say("Not enough material. Aborting.") - playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE) - return TRUE - qdel(exportable) + var/datum/export_report/report = export_item_and_contents(exportable, apply_elastic = FALSE, dry_run = TRUE) // We'll apply elastic price reduction when fully sold. + var/price = 0 + var/amount = 0 + for(var/exported_datum in report.total_amount) + price += report.total_value[exported_datum] + amount += report.total_amount[exported_datum] + + if(amount <= 1) + balloon_alert(user, "stack too small!") + return FALSE + + if(price <= 0) + balloon_alert(user, "not valuable enough to sell!") + return FALSE + + qdel(markable_object) var/obj/item/stock_block/new_block = new /obj/item/stock_block(drop_location()) - new_block.export_value = amount * value * MARKET_PROFIT_MODIFIER + new_block.export_value = price new_block.export_mat = material_to_export - new_block.quantity = amount + new_block.quantity = amount / SHEET_MATERIAL_AMOUNT to_chat(user, span_notice("You have created a stock block worth [new_block.export_value] cr! Sell it before it becomes liquid!")) playsound(src, 'sound/machines/synth/synth_yes.ogg', 50, FALSE) return TRUE return ..() +/obj/machinery/materials_market/power_change() + . = ..() + if(machine_stat & NOPOWER) + set_light(0, 0) + else + set_light(initial(light_range), initial(light_power)) + /** * Find the order purchased either privately or by cargo budget * Arguments @@ -368,14 +387,13 @@ update_appearance(UPDATE_ICON_STATE) /obj/item/stock_block/proc/update_value() - if(!export_mat) - return if(!SSstock_market.materials_prices[export_mat]) return - export_value = quantity * SSstock_market.materials_prices[export_mat] * MARKET_PROFIT_MODIFIER + export_value = quantity * SSstock_market.materials_prices[export_mat] icon_state = "stock_block_liquid" update_appearance(UPDATE_ICON_STATE) visible_message(span_warning("\The [src] becomes liquid!")) + fluid = TRUE #undef MAX_STACK_LIMIT #undef GALATIC_MATERIAL_ORDER diff --git a/code/modules/cargo/packs/_packs.dm b/code/modules/cargo/packs/_packs.dm index 94f71245882..44d3cb46aea 100644 --- a/code/modules/cargo/packs/_packs.dm +++ b/code/modules/cargo/packs/_packs.dm @@ -37,10 +37,12 @@ var/special_pod /// Was this spawned through an admin proc? var/admin_spawned = FALSE - /// Goodies can only be purchased by private accounts and can have coupons apply to them. They also come in a lockbox instead of a full crate, so the 700 min doesn't apply + /// Goodies can only be purchased by private accounts and can have coupons apply to them. They also come in a lockbox instead of a full crate, so the crate price min doesn't apply var/goody = FALSE /// Can coupons target this pack? If so, how rarely? var/discountable = SUPPLY_PACK_NOT_DISCOUNTABLE + /// Is this supply pack considered unpredictable for the purposes of testing unit testing? Examples include the stock market, or miner supply crates. If true, exempts from unit testing + var/test_ignored = FALSE /datum/supply_pack/New() id = type @@ -59,6 +61,12 @@ return data +/** + * Proc that takes a given supply_pack, and attempts to create a crate containing the pack's contents as determined by fill() + * + * @ atom/A: The location or turf that the pack is being generated onto. Cargo shuttle provides an empty turf, other generate()s call this either null or otherwise. + * @ datum/bank_account/paying_account: The account to associate the supply pack with when going and generating the crate. Only the paying account can open said secure crate/case. + */ /datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account) var/obj/structure/closet/crate/C if(paying_account) @@ -121,6 +129,7 @@ hidden = TRUE crate_name = "shaft mining delivery crate" access = ACCESS_MINING + test_ignored = TRUE /datum/supply_pack/custom/New(purchaser, cost, list/contains) . = ..() diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index 588353b34fe..47021007a1c 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -31,6 +31,13 @@ crate_name = "collectable hats crate" crate_type = /obj/structure/closet/crate/wooden discountable = SUPPLY_PACK_RARE_DISCOUNTABLE + test_ignored = TRUE + +/datum/supply_pack/costumes_toys/randomised/fill(obj/structure/closet/crate/C) + var/list/L = contains.Copy() + for(var/i in 1 to num_contained) + var/item = pick_n_take(L) + new item(C) /datum/supply_pack/costumes_toys/formalwear name = "Formalwear Crate" @@ -199,12 +206,6 @@ crate_name = "wizard costume crate" crate_type = /obj/structure/closet/crate/wooden -/datum/supply_pack/costumes_toys/randomised/fill(obj/structure/closet/crate/C) - var/list/L = contains.Copy() - for(var/i in 1 to num_contained) - var/item = pick_n_take(L) - new item(C) - /datum/supply_pack/costumes_toys/trekkie name = "Trekkie Costume Crate" desc = "Wear the scrapped concepts for twelve of Nanotrasen's jumpsuits, based off popular \ diff --git a/code/modules/cargo/packs/general.dm b/code/modules/cargo/packs/general.dm index 5f3a4645933..c7498f781bb 100644 --- a/code/modules/cargo/packs/general.dm +++ b/code/modules/cargo/packs/general.dm @@ -178,7 +178,7 @@ /datum/supply_pack/misc/candles_bulk name = "Candle Box Crate" desc = "Keep your local chapel lit with three candle boxes!" - cost = CARGO_CRATE_VALUE * 1.5 + cost = CARGO_CRATE_VALUE * 2 contains = list(/obj/item/storage/fancy/candle_box = 3) crate_name = "candle box crate" @@ -214,6 +214,7 @@ contains = list() crate_name = "syndicate gear crate" crate_type = /obj/structure/closet/crate + test_ignored = TRUE ///Total TC worth of contained uplink items var/crate_value = 30 ///What uplink the contents are pulled from diff --git a/code/modules/cargo/packs/imports.dm b/code/modules/cargo/packs/imports.dm index b7bf22e589a..61f9a820fcc 100644 --- a/code/modules/cargo/packs/imports.dm +++ b/code/modules/cargo/packs/imports.dm @@ -96,6 +96,7 @@ ) crate_name = "putrid dumpster" crate_type = /obj/structure/closet/crate/trashcart + test_ignored = TRUE /datum/supply_pack/imports/shells name = "Lethal Shotgun Shell Box Crate" @@ -145,6 +146,7 @@ /obj/effect/spawner/random/contraband = 5, ) crate_name = "crate" + test_ignored = TRUE /datum/supply_pack/imports/wt550 name = "Smuggled WT-550 Autorifle Crate" @@ -293,6 +295,7 @@ cost = CARGO_CRATE_VALUE * 30 contains = list(/obj/effect/spawner/random/animalhide = 5) crate_name = "animal hide crate" + test_ignored = TRUE /datum/supply_pack/imports/dreadnog name = "Dreadnog Carton Crate" diff --git a/code/modules/cargo/packs/livestock.dm b/code/modules/cargo/packs/livestock.dm index da51ee497f6..f9fa142ceb0 100644 --- a/code/modules/cargo/packs/livestock.dm +++ b/code/modules/cargo/packs/livestock.dm @@ -230,7 +230,7 @@ new /mob/living/basic/garden_gnome(.) /datum/supply_pack/critter/fish - crate_type = /obj/structure/closet/crate + test_ignored = TRUE // However, we should be wary of how possible it is to get more valuable fish out of this on average, depending on sample size. /datum/supply_pack/critter/fish/aquarium_fish name = "Aquarium Fish Case" diff --git a/code/modules/cargo/packs/materials.dm b/code/modules/cargo/packs/materials.dm index bfda2f7f9b1..127fb54d4b5 100644 --- a/code/modules/cargo/packs/materials.dm +++ b/code/modules/cargo/packs/materials.dm @@ -75,6 +75,7 @@ cost = CARGO_CRATE_VALUE * 0.05 contains = list(/obj/machinery/portable_atmospherics/canister) crate_type = /obj/structure/closet/crate/large + test_ignored = TRUE /datum/supply_pack/materials/gas_canisters/generate_supply_packs() var/list/canister_packs = list() @@ -100,6 +101,8 @@ pack.cost = cost + moleCount * initial(gas.base_value) * 1.6 pack.cost = CEILING(pack.cost, 10) + pack.test_ignored = FALSE + pack.contains = list(GLOB.gas_id_to_canister[initial(gas.id)]) pack.crate_type = crate_type diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm index 935fed39dcc..575224c6b6d 100644 --- a/code/modules/cargo/packs/medical.dm +++ b/code/modules/cargo/packs/medical.dm @@ -92,7 +92,7 @@ /obj/item/reagent_containers/cup/bottle/morphine, /obj/item/reagent_containers/cup/bottle/toxin, /obj/item/reagent_containers/cup/beaker/large, - /obj/item/reagent_containers/pill/insulin, + /obj/item/reagent_containers/applicator/pill/insulin, /obj/item/stack/medical/gauze, /obj/item/storage/box/bandages, /obj/item/storage/box/beakers, @@ -107,13 +107,14 @@ /obj/item/defibrillator/loaded, /obj/item/reagent_containers/blood/o_minus, /obj/item/storage/pill_bottle/mining, - /obj/item/reagent_containers/pill/neurine, + /obj/item/reagent_containers/applicator/pill/neurine, /obj/item/stack/medical/bone_gel = 2, /obj/item/vending_refill/medical, /obj/item/vending_refill/drugs, ) crate_name = "medical supplies crate" crate_type = /obj/structure/closet/crate/medical + test_ignored = TRUE /datum/supply_pack/medical/supplies/fill(obj/structure/closet/crate/C) for(var/i in 1 to 10) diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm index 8227305f743..a6f762b568f 100644 --- a/code/modules/cargo/packs/security.dm +++ b/code/modules/cargo/packs/security.dm @@ -20,7 +20,7 @@ /datum/supply_pack/security/armor name = "Armor Crate" desc = "Three vests of well-rounded, decently-protective armor." - cost = CARGO_CRATE_VALUE * 2 + cost = CARGO_CRATE_VALUE * 3 access_view = ACCESS_SECURITY contains = list(/obj/item/clothing/suit/armor/vest = 3) crate_name = "armor crate" @@ -53,7 +53,7 @@ /datum/supply_pack/security/helmets name = "Helmets Crate" desc = "Contains three standard-issue brain buckets." - cost = CARGO_CRATE_VALUE * 2 + cost = CARGO_CRATE_VALUE * 3 contains = list(/obj/item/clothing/head/helmet/sec = 3) crate_name = "helmet crate" @@ -154,7 +154,7 @@ /datum/supply_pack/security/baton name = "Stun Batons Crate" desc = "Arm the Civil Protection Forces with three stun batons. Batteries included." - cost = CARGO_CRATE_VALUE * 2 + cost = CARGO_CRATE_VALUE * 3 access_view = ACCESS_SECURITY contains = list(/obj/item/melee/baton/security/loaded = 3) crate_name = "stun baton crate" diff --git a/code/modules/client/client_colour.dm b/code/modules/client/client_colour.dm index 08e79c305a4..2bee4dda956 100644 --- a/code/modules/client/client_colour.dm +++ b/code/modules/client/client_colour.dm @@ -1,35 +1,21 @@ -#define PRIORITY_ABSOLUTE 1 -#define PRIORITY_HIGH 10 -#define PRIORITY_NORMAL 100 -#define PRIORITY_LOW 1000 +#define CLIENT_COLOR_VALUE_INDEX 1 +#define CLIENT_COLOR_PRIORITY_INDEX 2 -/** - * Client Colour Priority System By RemieRichards (then refactored by another contributor) - * A System that gives finer control over which client.colour value to display on screen - * so that the "highest priority" one is always displayed as opposed to the default of - * "whichever was set last is displayed". - * - * Refactored to allow multiple overlapping client colours - * (e.g. wearing blue glasses under a yellow visor, even though the result is a little unsatured.) - * As well as some support for animated colour transitions. - * - * Define subtypes of this datum - */ /datum/client_colour - ///The color we want to give to the client. This has to be either a hexadecimal color or a color matrix. - var/colour - ///The mob that owns this client_colour. + /// Color given to the client, can be a hex color, color matrix or a filter + var/color + /// The mob that owns this client_colour var/mob/owner - /** - * We prioritize colours with higher priority (lower numbers), so they don't get overriden by less important ones: - * eg: "Bloody screen" > "goggles colour" as the former is much more important - */ - var/priority = PRIORITY_NORMAL - ///Will this client_colour prevent ones of lower priority from being applied? + /// Priority of this color, higher values are rendered above lower ones + var/priority = CLIENT_COLOR_FILTER_PRIORITY + /// Will this client_colour prevent ones of lower priority from being applied? var/override = FALSE - ///IF non-zero, 'animate_client_colour(fade_in)' will be called instead of 'update_client_colour' when added. + /// If set to TRUE, all colors below and above this one will be rendered in separate filters + /// If color is a filter, forced to TRUE + var/split_filters = FALSE + /// If non-zero, 'animate_client_colour(fade_in)' will be called instead of 'update_client_colour' when added. var/fade_in = 0 - ///Same as above, but on removal. + /// If non-zero, 'animate_client_colour(fade_out)' will be called instead of 'update_client_colour' when removed. var/fade_out = 0 /datum/client_colour/New(mob/owner) @@ -42,229 +28,248 @@ owner = null return ..() -///Sets a new colour, then updates the owner's screen colour. -/datum/client_colour/proc/update_colour(new_colour, anim_time, easing = 0) - colour = new_colour +///Sets a new color, then updates the owner's screen color. +/datum/client_colour/proc/update_color(new_color, anim_time, easing = 0) + color = new_color owner.animate_client_colour(anim_time, easing) /** - * Adds an instance of colour_type to the mob's client_colours list - * colour_type - a typepath (subtyped from /datum/client_colour) + * Add a color filter to the client + * new_color - client_colour datum or typepath to be added + * source - associated source for the client color + * force - if TRUE, colors of the same source will be replaced even if it is of the same type */ -/mob/proc/add_client_colour(colour_type_or_datum) - if(QDELING(src)) +/mob/proc/add_client_colour(datum/client_colour/new_color, source, force = FALSE) + if (QDELING(src)) return - var/datum/client_colour/colour - if(istype(colour_type_or_datum, /datum/client_colour)) - colour = colour_type_or_datum - else if(ispath(colour_type_or_datum, /datum/client_colour)) - colour = new colour_type_or_datum(src) - else - CRASH("Invalid colour type or datum for add_client_color: [colour_type_or_datum || "null"]") - BINARY_INSERT(colour, client_colours, /datum/client_colour, colour, priority, COMPARE_KEY) - animate_client_colour(colour.fade_in) - return colour + if (ispath(new_color)) + new_color = new new_color(src) + + if (!istype(new_color)) + CRASH("Invalid color type or datum for add_client_colour: [new_color ? "[new_color] ([new_color.type])" : "null"]") + + // Ensure that if a color with this source is already present, we either abort or get rid of it + var/datum/client_colour/existing_color = get_client_colour(source) + if (existing_color) + if (existing_color.type == new_color.type && !force) + return existing_color + qdel(existing_color) + client_colours[new_color] = source + animate_client_colour(new_color.fade_in) + return new_color /** - * Removes an instance of colour_type from the mob's client_colours list - * colour_type - a typepath (subtyped from /datum/client_colour) - */ -/mob/proc/remove_client_colour(colour_type) - if(!ispath(colour_type, /datum/client_colour)) - return + * Removes a color type from a specific source from mob's client_colours list + * source - color source to remove +*/ - for(var/datum/client_colour/colour as anything in client_colours) - if(colour.type == colour_type) - qdel(colour) +/mob/proc/remove_client_colour(source) + var/datum/client_colour/existing_color = get_client_colour(source) + if (!existing_color) + return FALSE + qdel(existing_color) + return TRUE + +/mob/proc/get_client_colour(source) + for(var/datum/client_colour/color as anything in client_colours) + if (client_colours[color] == source) + return color + +/mob/proc/get_client_colour_filters() + . = list() + // sortTim sorts the passed list instead of making the copy, and so does reverse_range + var/list/used_colors = reverse_range(sortTim(client_colours.Copy(), GLOBAL_PROC_REF(cmp_client_colours))) + var/current_color = null + var/color_num = 0 + var/color_prio = 1 + + for (var/datum/client_colour/client_color as anything in used_colors) + color_num += 1 + + var/list/filter_color = null + if (islist(client_color.color)) + filter_color = client_color.color + // If our list has "type" in it then its a filter + if (!filter_color["type"]) + filter_color = null + + if (client_color.split_filters || filter_color) + if (current_color) + . += list(list(color_matrix_filter(current_color), color_prio)) + color_prio += 1 + current_color = null + + . += list(list(filter_color || color_matrix_filter(client_color.color), color_prio)) + color_prio += 1 + continue + + if (!current_color) + current_color = client_color.color + if (client_color.override) + break + continue + + var/list/color_list = current_color + if (!islist(color_list)) + color_list = color_to_full_rgba_matrix(color_list) + var/list/cur_list = color_to_full_rgba_matrix(client_color.color) + + for (var/i in 1 to 20) + color_list[i] = (color_list[i] * (color_num - 1) + cur_list[i]) / color_num + current_color = color_list + + if (client_color.override) break -/** - * Gets the resulting colour/tone from client_colours. - * In the case of multiple colours, they'll be converted to RGBA matrices for compatibility, - * summed together, and then each element divided by the number of matrices. (except we do this with lists because byond) - * target is the target variable. - */ -#define MIX_CLIENT_COLOUR(target)\ - var/_our_colour;\ - var/_number_colours = 0;\ - var/_pool_closed = INFINITY;\ - for(var/_c in client_colours){\ - var/datum/client_colour/_colour = _c;\ - if(_pool_closed < _colour.priority){\ - break\ - };\ - _number_colours++;\ - if(_colour.override){\ - _pool_closed = _colour.priority\ - };\ - if(!_our_colour){\ - _our_colour = _colour.colour;\ - continue\ - };\ - if(_number_colours == 2){\ - _our_colour = color_to_full_rgba_matrix(_our_colour)\ - };\ - var/list/_colour_matrix = color_to_full_rgba_matrix(_colour.colour);\ - var/list/_L = _our_colour;\ - for(var/_i in 1 to 20){\ - _L[_i] += _colour_matrix[_i]\ - };\ - };\ - if(_number_colours > 1){\ - var/list/_L = _our_colour;\ - for(var/_i in 1 to 20){\ - _L[_i] /= _number_colours\ - };\ - };\ - target = _our_colour\ + if (current_color) + . += list(list(color_matrix_filter(current_color), color_prio)) -#define CLIENT_COLOR_FILTER_KEY "fake_client_color" - -/** - * Resets the mob's client.color to null, and then reapplies a new color based - * on the client_colour datums it currently has. - */ /mob/proc/update_client_colour() - if(isnull(hud_used)) + if (isnull(hud_used)) return - var/new_color = "" - if(length(client_colours)) - MIX_CLIENT_COLOUR(new_color) + for (var/atom/movable/screen/plane_master/game_plane as anything in hud_used.get_true_plane_masters(RENDER_PLANE_GAME)) + for (var/filter_id in color_filter_store) + game_plane.remove_filter(filter_id) - for(var/atom/movable/screen/plane_master/game_plane as anything in hud_used.get_true_plane_masters(RENDER_PLANE_GAME)) - if(new_color) - game_plane.add_filter(CLIENT_COLOR_FILTER_KEY, 2, color_matrix_filter(new_color)) - else - game_plane.remove_filter(CLIENT_COLOR_FILTER_KEY) + color_filter_store.Cut() + var/list/applied_filters = get_client_colour_filters() -///Works similarly to 'update_client_colour', but animated. -/mob/proc/animate_client_colour(anim_time = 2 SECONDS, anim_easing = NONE) - if(anim_time <= 0) + for (var/list/color_filter as anything in applied_filters) + var/added_color = color_filter[CLIENT_COLOR_VALUE_INDEX] + var/filter_priority = color_filter[CLIENT_COLOR_PRIORITY_INDEX] + for (var/atom/movable/screen/plane_master/game_plane as anything in hud_used.get_true_plane_masters(RENDER_PLANE_GAME)) + var/filter_id = "client_colour_[filter_priority]" + game_plane.add_filter(filter_id, filter_priority, added_color) + color_filter_store |= filter_id + +/// Works similarly to 'update_client_colour', but animated. +/mob/proc/animate_client_colour(anim_time = 1 SECONDS, anim_easing = NONE) + if (isnull(hud_used)) + return + + if(anim_time <= -1) return update_client_colour() - if(isnull(hud_used)) - return - var/anim_color = "" - if(length(client_colours)) - MIX_CLIENT_COLOUR(anim_color) + for (var/atom/movable/screen/plane_master/game_plane as anything in hud_used.get_true_plane_masters(RENDER_PLANE_GAME)) + for (var/filter_id in color_filter_store) + game_plane.remove_filter(filter_id) - for(var/atom/movable/screen/plane_master/game_plane as anything in hud_used.get_true_plane_masters(RENDER_PLANE_GAME)) - if(anim_color) - game_plane.add_filter(CLIENT_COLOR_FILTER_KEY, 2, color_matrix_filter()) - game_plane.transition_filter(CLIENT_COLOR_FILTER_KEY, color_matrix_filter(anim_color), anim_time, anim_easing) - else - game_plane.transition_filter(CLIENT_COLOR_FILTER_KEY, color_matrix_filter(), anim_time, anim_easing) - // This leaves a blank color filter on the hud which is, fine I guess? + color_filter_store.Cut() + var/list/applied_filters = get_client_colour_filters() -#undef MIX_CLIENT_COLOUR + for (var/list/color_filter as anything in applied_filters) + var/added_color = color_filter[CLIENT_COLOR_VALUE_INDEX] + var/filter_priority = color_filter[CLIENT_COLOR_PRIORITY_INDEX] + for (var/atom/movable/screen/plane_master/game_plane as anything in hud_used.get_true_plane_masters(RENDER_PLANE_GAME)) + var/filter_id = "client_colour_[filter_priority]" + game_plane.add_filter(filter_id, filter_priority, color_matrix_filter()) + game_plane.transition_filter(filter_id, added_color, anim_time, anim_easing) + color_filter_store |= filter_id -#undef CLIENT_COLOR_FILTER_KEY +// Color types -/datum/client_colour/glass_colour - priority = PRIORITY_LOW - -/datum/client_colour/glass_colour/green - colour = "#aaffaa" - -/datum/client_colour/glass_colour/lightgreen - colour = "#ccffcc" - -/datum/client_colour/glass_colour/blue - colour = "#aaaaff" - -/datum/client_colour/glass_colour/lightblue - colour = "#ccccff" - -/datum/client_colour/glass_colour/yellow - colour = "#ffff66" - -/datum/client_colour/glass_colour/lightyellow - colour = "#ffffaa" - -/datum/client_colour/glass_colour/red - colour = "#ffaaaa" - -/datum/client_colour/glass_colour/lightred - colour = "#ffcccc" - -/datum/client_colour/glass_colour/darkred - colour = "#bb5555" - -/datum/client_colour/glass_colour/orange - colour = "#ffbb99" - -/datum/client_colour/glass_colour/lightorange - colour = "#ffddaa" - -/datum/client_colour/glass_colour/purple - colour = "#ff99ff" - -/datum/client_colour/glass_colour/lightpurple - colour = "#ffccff" - -/datum/client_colour/glass_colour/gray - colour = "#cccccc" - -///A client colour that makes the screen look a bit more grungy, halloweenesque even. +///A client color that makes the screen look a bit more grungy, halloweenesque even. /datum/client_colour/halloween_helmet - colour = list(0.75,0.13,0.13,0, 0.13,0.7,0.13,0, 0.13,0.13,0.75,0, -0.06,-0.09,-0.08,1, 0,0,0,0) + priority = CLIENT_COLOR_HELMET_PRIORITY + color = list(/*R*/ 0.75,0.13,0.13,0, /*G*/ 0.13,0.7,0.13,0, /*B*/ 0.13,0.13,0.75,0, /*A*/ -0.06,-0.09,-0.08,1, /*C*/ 0,0,0,0) /datum/client_colour/flash_hood - colour = COLOR_MATRIX_POLAROID - -/datum/client_colour/glass_colour/nightmare - colour = list(255,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, -130,0,0,0) //every color is either red or black - -/datum/client_colour/malfunction - colour = list(/*R*/ 0,0,0,0, /*G*/ 0,175,0,0, /*B*/ 0,0,0,0, /*A*/ 0,0,0,1, /*C*/0,-130,0,0) // Matrix colors + priority = CLIENT_COLOR_HELMET_PRIORITY + color = COLOR_MATRIX_POLAROID /datum/client_colour/perceptomatrix - colour = list(/*R*/ 1,0,0,0, /*G*/ 0,1,0,0, /*B*/ 0,0,1,0, /*A*/ 0,0,0,1, /*C*/0,-0.02,-0.02,0) // veeery slightly pink + priority = CLIENT_COLOR_HELMET_PRIORITY + color = list(/*R*/ 1,0,0,0, /*G*/ 0,1,0,0, /*B*/ 0,0,1,0, /*A*/ 0,0,0,1, /*C*/ 0,-0.02,-0.02,0) // veeery slightly pink + +/datum/client_colour/rave + priority = CLIENT_COLOR_HELMET_PRIORITY + +/datum/client_colour/malfunction + priority = CLIENT_COLOR_ORGAN_PRIORITY + color = list(/*R*/ 0,0,0,0, /*G*/ 0,175,0,0, /*B*/ 0,0,0,0, /*A*/ 0,0,0,1, /*C*/ 0,-130,0,0) // Matrix colors /datum/client_colour/monochrome - colour = COLOR_MATRIX_GRAYSCALE - priority = PRIORITY_HIGH //we can't see colors anyway! - override = TRUE - fade_in = 20 - fade_out = 20 + color = COLOR_MATRIX_GRAYSCALE + priority = CLIENT_COLOR_FILTER_PRIORITY + split_filters = TRUE + fade_in = 2 SECONDS + fade_out = 2 SECONDS -/datum/client_colour/monochrome/colorblind - priority = PRIORITY_HIGH - -/datum/client_colour/monochrome/trance - priority = PRIORITY_NORMAL - -/datum/client_colour/monochrome/blind - priority = PRIORITY_NORMAL +/datum/client_colour/monochrome/glasses + priority = CLIENT_COLOR_GLASSES_PRIORITY /datum/client_colour/bloodlust - priority = PRIORITY_ABSOLUTE // Only anger. - colour = list(0,0,0,0,0,0,0,0,0,1,0,0) //pure red. - fade_out = 10 + priority = CLIENT_COLOR_IMPORTANT_PRIORITY + color = list(0,0,0,0,0,0,0,0,0,1,0,0) // pure red + fade_out = 1 SECONDS /datum/client_colour/bloodlust/New(mob/owner) ..() if(owner) - addtimer(CALLBACK(src, PROC_REF(update_colour), list(1,0,0,0.8,0.2,0, 0.8,0,0.2,0.1,0,0), 10, SINE_EASING|EASE_OUT), 0.1 SECONDS) - -/datum/client_colour/rave - priority = PRIORITY_LOW - -/datum/client_colour/psyker - priority = PRIORITY_ABSOLUTE - override = TRUE - colour = list(0.8,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,1, 0,0,0,0) + addtimer(CALLBACK(src, PROC_REF(update_color), list(/*R*/ 1,0,0, /*G*/ 0.8,0.2,0, /*B*/ 0.8,0,0.2, /*C*/ 0.1,0,0), 10, SINE_EASING|EASE_OUT), 0.1 SECONDS) /datum/client_colour/manual_heart_blood - priority = PRIORITY_ABSOLUTE - colour = COLOR_RED + priority = CLIENT_COLOR_IMPORTANT_PRIORITY + color = COLOR_RED + +/datum/client_colour/psyker + priority = CLIENT_COLOR_OVERRIDE_PRIORITY + color = list(0.8,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,1, 0,0,0,0) + override = TRUE /datum/client_colour/temp - priority = PRIORITY_HIGH + priority = CLIENT_COLOR_TEMPORARY_PRIORITY -#undef PRIORITY_ABSOLUTE -#undef PRIORITY_HIGH -#undef PRIORITY_NORMAL -#undef PRIORITY_LOW +/datum/client_colour/glass_colour + priority = CLIENT_COLOR_GLASSES_PRIORITY + +/datum/client_colour/glass_colour/green + color = "#aaffaa" + +/datum/client_colour/glass_colour/lightgreen + color = "#ccffcc" + +/datum/client_colour/glass_colour/blue + color = "#aaaaff" + +/datum/client_colour/glass_colour/lightblue + color = "#ccccff" + +/datum/client_colour/glass_colour/yellow + color = "#ffff66" + +/datum/client_colour/glass_colour/lightyellow + color = "#ffffaa" + +/datum/client_colour/glass_colour/red + color = "#ffaaaa" + +/datum/client_colour/glass_colour/lightred + color = "#ffcccc" + +/datum/client_colour/glass_colour/darkred + color = "#bb5555" + +/datum/client_colour/glass_colour/orange + color = "#ffbb99" + +/datum/client_colour/glass_colour/lightorange + color = "#ffddaa" + +/datum/client_colour/glass_colour/purple + color = "#ff99ff" + +/datum/client_colour/glass_colour/lightpurple + color = "#ffccff" + +/datum/client_colour/glass_colour/gray + color = "#cccccc" + +/datum/client_colour/glass_colour/nightmare + color = list(/*R*/ 255,0,0,0, /*G*/ 0,0,0,0, /*B*/ 0,0,0,0, /*A*/ 0,0,0,1, /*C*/ -130,0,0,0) //every color is either red or black + split_filters = TRUE + +#undef CLIENT_COLOR_VALUE_INDEX +#undef CLIENT_COLOR_PRIORITY_INDEX diff --git a/code/modules/client/preferences/_preference.dm b/code/modules/client/preferences/_preference.dm index 37e40c80bb9..6b0693340de 100644 --- a/code/modules/client/preferences/_preference.dm +++ b/code/modules/client/preferences/_preference.dm @@ -333,7 +333,7 @@ GLOBAL_LIST_INIT(preference_entries_by_key, init_preference_entries_by_key()) /// Checks if this preference is relevant and thus visible to the passed preferences object. /datum/preference/proc/has_relevant_feature(datum/preferences/preferences) - if(isnull(relevant_inherent_trait) && isnull(relevant_external_organ) && isnull(relevant_head_flag) && isnull(relevant_body_markings) && isnull(relevant_mutant_bodypart)) // BUBBER EDIT ADDITION - Original: if(isnull(relevant_inherent_trait) && isnull(relevant_external_organ) && isnull(relevant_head_flag) && isnull(relevant_body_markings)) + if(isnull(relevant_inherent_trait) && isnull(relevant_external_organ) && isnull(relevant_head_flag) && isnull(relevant_body_markings && isnull(relevant_mutant_bodypart)) // BUBBER EDIT ADDITION return TRUE return current_species_has_savekey(preferences) diff --git a/code/modules/client/preferences/rds_limit.dm b/code/modules/client/preferences/rds_limit.dm new file mode 100644 index 00000000000..d035791bbb8 --- /dev/null +++ b/code/modules/client/preferences/rds_limit.dm @@ -0,0 +1,11 @@ +/datum/preference/toggle/rds_limit + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_key = "rds_limit" + savefile_identifier = PREFERENCE_CHARACTER + default_value = FALSE + +/datum/preference/toggle/rds_limit/apply_to_human(mob/living/carbon/human/target, value) + return + +/datum/preference/toggle/rds_limit/is_accessible(datum/preferences/preferences) + return ..() && (/datum/quirk/insanity::name in preferences.all_quirks) diff --git a/code/modules/client/preferences/tgui.dm b/code/modules/client/preferences/tgui.dm index c09bba9740a..94cb68067f8 100644 --- a/code/modules/client/preferences/tgui.dm +++ b/code/modules/client/preferences/tgui.dm @@ -39,25 +39,29 @@ /// Changes layout in some UI's, like Vending, Smartfridge etc. Making it list or grid /datum/preference/choiced/tgui_layout - category = PREFERENCE_CATEGORY_GAME_PREFERENCES savefile_key = "tgui_layout" savefile_identifier = PREFERENCE_PLAYER /datum/preference/choiced/tgui_layout/init_possible_values() return list( - TGUI_LAYOUT_DEFAULT, TGUI_LAYOUT_GRID, TGUI_LAYOUT_LIST, ) /datum/preference/choiced/tgui_layout/create_default_value() - return TGUI_LAYOUT_DEFAULT + return TGUI_LAYOUT_LIST /datum/preference/choiced/tgui_layout/apply_to_client(client/client, value) for (var/datum/tgui/tgui as anything in client.mob?.tgui_open_uis) // Force it to reload either way tgui.update_static_data(client.mob) +/datum/preference/choiced/tgui_layout/smartfridge + savefile_key = "tgui_layout_smartfridge" + +/datum/preference/choiced/tgui_layout/create_default_value() + return TGUI_LAYOUT_GRID + /datum/preference/toggle/tgui_lock category = PREFERENCE_CATEGORY_GAME_PREFERENCES savefile_key = "tgui_lock" diff --git a/code/modules/clothing/belts/polymorph_belt.dm b/code/modules/clothing/belts/polymorph_belt.dm index 3bf7a8f7735..302743ce773 100644 --- a/code/modules/clothing/belts/polymorph_belt.dm +++ b/code/modules/clothing/belts/polymorph_belt.dm @@ -36,17 +36,30 @@ worn_icon_state = base_icon_state + (active ? "" : "_inactive") return ..() -/obj/item/polymorph_belt/attackby(obj/item/weapon, mob/user, params) - if (!istype(weapon, /obj/item/assembly/signaler/anomaly/bioscrambler)) - return ..() +/obj/item/polymorph_belt/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if (!istype(tool, /obj/item/assembly/signaler/anomaly/bioscrambler)) + return NONE + + if (active) + balloon_alert(user, "core already inserted!") + return ITEM_INTERACT_BLOCKING + balloon_alert(user, "inserting...") + if (!do_after(user, delay = 3 SECONDS, target = src)) - return - qdel(weapon) + balloon_alert(user, "interrupted!") + return ITEM_INTERACT_BLOCKING + + if (active) + balloon_alert(user, "core already inserted!") + return ITEM_INTERACT_BLOCKING + active = TRUE update_appearance(UPDATE_ICON_STATE) update_transform_action() playsound(src, 'sound/machines/crate/crate_open.ogg', 50, FALSE) + qdel(tool) + return ITEM_INTERACT_SUCCESS /obj/item/polymorph_belt/attack(mob/living/target_mob, mob/living/user, params) . = ..() diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 20345bee899..6c7c43fac58 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -30,7 +30,7 @@ /obj/item/clothing/glasses/Initialize(mapload) . = ..() if(glass_colour_type) - AddElement(/datum/element/wearable_client_colour, glass_colour_type, ITEM_SLOT_EYES, forced = forced_glass_color) + AddElement(/datum/element/wearable_client_colour, glass_colour_type, ITEM_SLOT_EYES, GLASSES_TRAIT, forced = forced_glass_color) /obj/item/clothing/glasses/suicide_act(mob/living/carbon/user) user.visible_message(span_suicide("[user] is stabbing \the [src] into [user.p_their()] eyes! It looks like [user.p_theyre()] trying to commit suicide!")) @@ -64,10 +64,10 @@ /obj/item/clothing/glasses/proc/change_glass_color(new_color_type) if(glass_colour_type) - RemoveElement(/datum/element/wearable_client_colour, glass_colour_type, ITEM_SLOT_EYES, forced = forced_glass_color) + RemoveElement(/datum/element/wearable_client_colour, glass_colour_type, ITEM_SLOT_EYES, GLASSES_TRAIT, forced = forced_glass_color) glass_colour_type = new_color_type if(glass_colour_type) - AddElement(/datum/element/wearable_client_colour, glass_colour_type, ITEM_SLOT_EYES, forced = forced_glass_color) + AddElement(/datum/element/wearable_client_colour, glass_colour_type, ITEM_SLOT_EYES, GLASSES_TRAIT, forced = forced_glass_color) /obj/item/clothing/glasses/meson name = "optical meson scanner" @@ -442,7 +442,7 @@ /obj/item/clothing/glasses/sunglasses/noir name = "noir glasses" desc = "A pair of sleek, futuristic glasses that allow the wearer to see the world in a different light." - glass_colour_type = /datum/client_colour/monochrome + glass_colour_type = /datum/client_colour/monochrome/glasses forced_glass_color = TRUE ///Syndicate item that upgrades the flash protection of your eyes. diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index 7d990e1ace5..1c9a0c169a6 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -47,9 +47,13 @@ . = ..() if(isinhands) return - if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves") + +/obj/item/clothing/gloves/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) + . = ..() + if(isinhands) + return if(GET_ATOM_BLOOD_DNA_LENGTH(src)) . += mutable_appearance('icons/effects/blood.dmi', "gloveblood") diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index e4ae1b981cb..a8690c1f10c 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -54,16 +54,17 @@ R.visible_message(span_notice("[src] lands neatly on top of [R]!"), span_notice("[src] lands perfectly on top of you.")) R.place_on_head(src) //hats aren't designed to snugly fit borg heads or w/e so they'll always manage to knock eachother off - - - /obj/item/clothing/head/worn_overlays(mutable_appearance/standing, isinhands = FALSE) . = ..() if(isinhands) return - if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet") + +/obj/item/clothing/head/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) + . = ..() + if(isinhands) + return if(GET_ATOM_BLOOD_DNA_LENGTH(src)) if(clothing_flags & LARGE_WORN_ICON) . += mutable_appearance('icons/effects/64x64.dmi', "helmetblood_large") diff --git a/code/modules/clothing/head/fedora.dm b/code/modules/clothing/head/fedora.dm index 51c5afa2eba..ff192c96f7a 100644 --- a/code/modules/clothing/head/fedora.dm +++ b/code/modules/clothing/head/fedora.dm @@ -1,10 +1,10 @@ /obj/item/clothing/head/fedora name = "fedora" + desc = "A really cool hat if you're a mobster. A really lame hat if you're not." + icon_state = "fedora" icon = 'icons/obj/clothing/head/hats.dmi' worn_icon = 'icons/mob/clothing/head/hats.dmi' - icon_state = "fedora" - inhand_icon_state = "fedora" - desc = "A really cool hat if you're a mobster. A really lame hat if you're not." + hair_mask = HAIR_MASK_HIDE_ABOVE_45_DEG_LOW /obj/item/clothing/head/fedora/Initialize(mapload) . = ..() @@ -45,3 +45,11 @@ desc = "A beige fedora with a piece of paper saying \"PRESS\" stuck in its rim." icon_state = "fedora_press" inhand_icon_state = null + +/obj/item/clothing/head/fedora/greyscale + icon_state = "fedora_greyscale" + inhand_icon_state = null + greyscale_colors = "#F0DAB4#794D2E" + greyscale_config = /datum/greyscale_config/fedora + greyscale_config_worn = /datum/greyscale_config/fedora/worn + flags_1 = IS_PLAYER_COLORABLE_1 diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 9d735df4da0..89c78252b00 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -250,9 +250,9 @@ if(isnull(.)) return if(new_value) - AddElement(/datum/element/wearable_client_colour, /datum/client_colour/halloween_helmet, ITEM_SLOT_HEAD, forced = TRUE) + AddElement(/datum/element/wearable_client_colour, /datum/client_colour/halloween_helmet, ITEM_SLOT_HEAD, HELMET_TRAIT, forced = TRUE) else - RemoveElement(/datum/element/wearable_client_colour, /datum/client_colour/halloween_helmet, ITEM_SLOT_HEAD, forced = TRUE) + RemoveElement(/datum/element/wearable_client_colour, /datum/client_colour/halloween_helmet, ITEM_SLOT_HEAD, HELMET_TRAIT, forced = TRUE) update_icon(UPDATE_OVERLAYS) /obj/item/clothing/head/utility/hardhat/pumpkinhead/update_overlays() diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index a0d7dafcfd7..0e78e4859bd 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -175,7 +175,6 @@ desc = "There's only one man who can sniff out the dirty stench of crime, and he's likely wearing this hat." armor_type = /datum/armor/fedora_det_hat icon_state = "detective" - inhand_icon_state = "det_hat" interaction_flags_click = NEED_DEXTERITY|NEED_HANDS|ALLOW_RESTING dog_fashion = /datum/dog_fashion/head/detective /// Path for the flask that spawns inside their hat roundstart @@ -242,7 +241,6 @@ desc = "There's only one man can try to stop an evil villain." armor_type = /datum/armor/fedora_det_hat icon_state = "detective" - inhand_icon_state = "det_hat" dog_fashion = /datum/dog_fashion/head/detective interaction_flags_click = FORBID_TELEKINESIS_REACH|ALLOW_RESTING ///prefix our phrases must begin with diff --git a/code/modules/clothing/head/perceptomatrix.dm b/code/modules/clothing/head/perceptomatrix.dm index f3be4abd459..9e31361e0c9 100644 --- a/code/modules/clothing/head/perceptomatrix.dm +++ b/code/modules/clothing/head/perceptomatrix.dm @@ -64,7 +64,6 @@ /obj/item/clothing/head/helmet/perceptomatrix/Initialize(mapload) . = ..() - update_appearance(UPDATE_ICON_STATE) update_anomaly_state() AddComponent(/datum/component/adjust_fishing_difficulty, -7) // PSYCHIC FISHING @@ -74,9 +73,11 @@ . = ..() if(slot & ITEM_SLOT_HEAD) RegisterSignal(user, COMSIG_MOB_BEFORE_SPELL_CAST, PROC_REF(pre_cast_core_check)) + user.update_sight() /obj/item/clothing/head/helmet/perceptomatrix/dropped(mob/living/user, silent) UnregisterSignal(user, COMSIG_MOB_BEFORE_SPELL_CAST) + user.update_sight() ..() // Prevent casting the spell w/o the core. @@ -93,7 +94,7 @@ clothing_flags = PERCEPTOMATRIX_INACTIVE_FLAGS detach_clothing_traits(additional_clothing_traits) QDEL_LIST(active_components) - RemoveElement(/datum/element/wearable_client_colour, /datum/client_colour/perceptomatrix, ITEM_SLOT_HEAD, forced = TRUE) + RemoveElement(/datum/element/wearable_client_colour, /datum/client_colour/perceptomatrix, ITEM_SLOT_HEAD, HELMET_TRAIT, forced = TRUE) return clothing_flags = PERCEPTOMATRIX_ACTIVE_FLAGS @@ -107,7 +108,7 @@ antimagic_flags = MAGIC_RESISTANCE_MIND, \ inventory_flags = ITEM_SLOT_HEAD, \ ) - AddElement(/datum/element/wearable_client_colour, /datum/client_colour/perceptomatrix, ITEM_SLOT_HEAD, forced = TRUE) + AddElement(/datum/element/wearable_client_colour, /datum/client_colour/perceptomatrix, ITEM_SLOT_HEAD, HELMET_TRAIT, forced = TRUE) update_icon_state() @@ -239,10 +240,7 @@ cast_on.emote("scream") cast_on.set_eye_blur_if_lower(eye_blur_duration) cast_on.adjust_staggered(stagger_duration) - cast_on.apply_status_effect(/datum/status_effect/hallucination, hallucination_duration, \ - hallucination_duration * 0.2, hallucination_duration) // lower/upper hallucination freq. bound - - return + cast_on.apply_status_effect(/datum/status_effect/hallucination/perceptomatrix, hallucination_duration, HALLUCINATION_TIER_RARE) #undef PERCEPTOMATRIX_INACTIVE_FLAGS #undef PERCEPTOMATRIX_ACTIVE_FLAGS diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index a25a8eb3ca9..2b7913b42c2 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -83,15 +83,6 @@ soft_type = "grey" dog_fashion = null -/* A grey baseball cap that grants TRAIT_JOLLY when it's on your head. - * Used for testing that gaining and losing the JOLLY trait behaves properly. - * Also a perfectly valid weird admin reward. - */ -/obj/item/clothing/head/soft/grey/jolly - name = "jolly grey cap" - desc = "It's a baseball hat in a sublime grey colour. Why, wearing this alone would boost a person's spirits!" - clothing_traits = list(TRAIT_JOLLY) - /obj/item/clothing/head/soft/orange name = "orange cap" desc = "It's a baseball hat in a tasteless orange colour." diff --git a/code/modules/clothing/head/wig.dm b/code/modules/clothing/head/wig.dm index 4280540b19f..3312d3fbd5f 100644 --- a/code/modules/clothing/head/wig.dm +++ b/code/modules/clothing/head/wig.dm @@ -43,7 +43,7 @@ var/mutable_appearance/hair_overlay = mutable_appearance(hair.icon, hair.icon_state, layer = -HAIR_LAYER, appearance_flags = RESET_COLOR) hair_overlay.color = color - hair_overlay.pixel_y = hair.y_offset + hair_overlay.pixel_z = hair.y_offset . += hair_overlay // So that the wig actually blocks emissives. diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index cb6112bffd2..35675909f17 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -28,14 +28,17 @@ /obj/item/clothing/mask/worn_overlays(mutable_appearance/standing, isinhands = FALSE) . = ..() - if(isinhands) + if(isinhands || !(body_parts_covered & HEAD)) return + if(damaged_clothes) + . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - if(body_parts_covered & HEAD) - if(damaged_clothes) - . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - if(GET_ATOM_BLOOD_DNA_LENGTH(src)) - . += mutable_appearance('icons/effects/blood.dmi', "maskblood") +/obj/item/clothing/mask/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) + . = ..() + if(isinhands || !(body_parts_covered & HEAD)) + return + if(GET_ATOM_BLOOD_DNA_LENGTH(src)) + . += mutable_appearance('icons/effects/blood.dmi', "maskblood") /obj/item/clothing/mask/update_clothes_damaged_state(damaged_state = CLOTHING_DAMAGED) ..() diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 105f36e780f..219dcba9690 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -55,7 +55,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list( LAZYADD(gas_filters, inserted_filter) has_filter = TRUE -/obj/item/clothing/mask/gas/worn_overlays(mutable_appearance/standing, isinhands) +/obj/item/clothing/mask/gas/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) . = ..() if(!isinhands && cig) . += cig.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/clothing/mask.dmi') diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 486823453d5..ba87f1a76a1 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -9,14 +9,17 @@ /obj/item/clothing/neck/worn_overlays(mutable_appearance/standing, isinhands = FALSE) . = ..() - if(isinhands) + if(isinhands || !(body_parts_covered & HEAD)) return + if(damaged_clothes) + . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - if(body_parts_covered & HEAD) - if(damaged_clothes) - . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask") - if(GET_ATOM_BLOOD_DNA_LENGTH(src)) - . += mutable_appearance('icons/effects/blood.dmi', "maskblood") +/obj/item/clothing/neck/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands, icon_file) + . = ..() + if(isinhands || !(body_parts_covered & HEAD)) + return + if(GET_ATOM_BLOOD_DNA_LENGTH(src)) + . += mutable_appearance('icons/effects/blood.dmi', "maskblood") /obj/item/clothing/neck/bowtie name = "bow tie" diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index 1d5171d6114..7bf084af0fa 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -173,10 +173,10 @@ if(visuals_only) return - var/obj/item/modular_computer/pda/heads/pda = H.r_store - pda.imprint_id(H.real_name, "CentCom Official") - var/obj/item/card/id/W = H.wear_id + var/obj/item/modular_computer/pda/heads/pda = H.r_store + pda.imprint_id(H.real_name, "CentCom Official", W) + W.registered_name = H.real_name W.update_label() W.update_icon() diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 9f7c10bc646..cd66f831020 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -58,9 +58,13 @@ . = ..() if(isinhands) return - if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") + +/obj/item/clothing/shoes/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) + . = ..() + if(isinhands) + return if(GET_ATOM_BLOOD_DNA_LENGTH(src)) if(clothing_flags & LARGE_WORN_ICON) . += mutable_appearance('icons/effects/64x64.dmi', "shoeblood_large") @@ -82,7 +86,7 @@ /obj/item/clothing/shoes/visual_equipped(mob/user, slot) ..() if(offset && (slot_flags & slot)) - user.pixel_y += offset + user.pixel_z += offset worn_y_dimension -= (offset * 2) user.update_worn_shoes() equipped_before_drop = TRUE @@ -95,7 +99,7 @@ /obj/item/clothing/shoes/proc/restore_offsets(mob/user) equipped_before_drop = FALSE - user.pixel_y -= offset + user.pixel_z -= offset worn_y_dimension = ICON_SIZE_Y /obj/item/clothing/shoes/dropped(mob/user) @@ -173,12 +177,8 @@ to_chat(user, span_warning("You're already interacting with [src]!")) return user.visible_message(span_notice("[user] begins [tied ? "unknotting" : "[fastening_verb()]"] the [fastening_type] of [user.p_their()] [src.name]."), span_notice("You begin [tied ? "unknotting" : "[fastening_verb()]"] the [fastening_type] of your [src.name]...")) - // BUBBER EDIT START - var/tie_time = lace_time - if(HAS_TRAIT(user, TRAIT_STICKY_FINGERS)) - tie_time *= 0.5 - if(do_after(user, tie_time, target = our_guy, extra_checks = CALLBACK(src, PROC_REF(still_shoed), our_guy))) - // BUBBER EDIT END + + if(do_after(user, lace_time, target = our_guy, extra_checks = CALLBACK(src, PROC_REF(still_shoed), our_guy))) to_chat(user, span_notice("You [tied ? "unknot" : "[fasten_verb()]"] the [fastening_type] of your [src.name].")) if(tied == SHOES_UNTIED) adjust_laces(SHOES_TIED, user) @@ -286,13 +286,9 @@ return to_chat(user, span_notice("You begin [tied ? "un" : ""][fastening_verb()] the [fastening_type] on [src]...")) - // BUBBER EDIT START - var/tie_time = lace_time - if(HAS_TRAIT(user, TRAIT_STICKY_FINGERS)) - tie_time *= 0.5 - if(do_after(user, tie_time, target = src,extra_checks = CALLBACK(src, PROC_REF(still_shoed), user))) - // BUBBER EDIT END - to_chat(user, span_notice("You [tied ? "untie" : "tie"] the laces on [src].")) + + if(do_after(user, lace_time, target = src,extra_checks = CALLBACK(src, PROC_REF(still_shoed), user))) + to_chat(user, span_notice("You [tied ? "un" : ""][fasten_verb()] the [fastening_type] on [src].")) adjust_laces(tied ? SHOES_UNTIED : SHOES_TIED, user) /obj/item/clothing/shoes/apply_fantasy_bonuses(bonus) @@ -310,7 +306,7 @@ return ..() /// Returns appropriate description for unfastened shoes -/obj/item/clothing/shoes/verb/untied_adjective() +/obj/item/clothing/shoes/proc/untied_adjective() switch(fastening_type) if (SHOES_LACED) return "untied" @@ -320,7 +316,7 @@ return "nonexistant" /// Returns appropriate verb for how to fasten shoes -/obj/item/clothing/shoes/verb/fasten_verb() +/obj/item/clothing/shoes/proc/fasten_verb() switch(fastening_type) if (SHOES_LACED) return "tie" @@ -330,7 +326,7 @@ return "do something mysterious to" /// Returns appropriate verb for fastening shoes -/obj/item/clothing/shoes/verb/fastening_verb() +/obj/item/clothing/shoes/proc/fastening_verb() switch(fastening_type) if (SHOES_LACED) return "tying" diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 59af4d1c5f6..0ccdfb5430b 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -180,15 +180,16 @@ ///By the by, helmets have the update_icon_updates_onmob element, so we don't have to call mob.update_worn_head() /obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(mutable_appearance/standing, isinhands) + . = ..() + if(!isinhands && !up) + . += mutable_appearance('icons/mob/clothing/head/plasmaman_head.dmi', visor_icon) + +/obj/item/clothing/head/helmet/space/plasmaman/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) . = ..() if(!isinhands && smile) var/mutable_appearance/smiley = mutable_appearance('icons/mob/clothing/head/plasmaman_head.dmi', smile_state) smiley.color = smile_color . += smiley - if(!isinhands && !up) - . += mutable_appearance('icons/mob/clothing/head/plasmaman_head.dmi', visor_icon) - else - cut_overlays() /obj/item/clothing/head/helmet/space/plasmaman/wash(clean_types) . = ..() diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index dfde1eb2e05..5932e16063f 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -46,6 +46,13 @@ if(displayed.above_suit) . += undershirt.modify_accessory_overlay() // SKYRAT EDIT CHANGE - ORIGINAL: . += undershirt.accessory_overlay +/obj/item/clothing/suit/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) + . = ..() + if(isinhands) + return + if(GET_ATOM_BLOOD_DNA_LENGTH(src)) + . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood") + /obj/item/clothing/suit/update_clothes_damaged_state(damaged_state = CLOTHING_DAMAGED) ..() if(ismob(loc)) diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm index a91523d6d11..a9a515ced48 100644 --- a/code/modules/clothing/suits/costume.dm +++ b/code/modules/clothing/suits/costume.dm @@ -23,7 +23,7 @@ /obj/item/clothing/head/hooded/flashsuit/Initialize(mapload) . = ..() - AddElement(/datum/element/wearable_client_colour, /datum/client_colour/flash_hood, ITEM_SLOT_HEAD, forced = TRUE) + AddElement(/datum/element/wearable_client_colour, /datum/client_colour/flash_hood, ITEM_SLOT_HEAD, HELMET_TRAIT, forced = TRUE) /obj/item/clothing/suit/costume/pirate name = "pirate coat" diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index affe103e307..80ef39e0496 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -26,6 +26,7 @@ /obj/item/secateurs, /obj/item/seeds, /obj/item/storage/bag/plants, + /obj/item/tank/internals/emergency_oxygen, ) species_exception = list(/datum/species/golem) armor_type = /datum/armor/suit_apron diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 35fb7dcb2a6..15b9a4e5a8b 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -19,7 +19,7 @@ /obj/item/reagent_containers/cup/bottle, /obj/item/reagent_containers/cup/tube, /obj/item/reagent_containers/hypospray, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator, /obj/item/reagent_containers/syringe, /obj/item/gun/syringe, /obj/item/sensor_device, diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm index eaa997607f0..813f296506f 100644 --- a/code/modules/clothing/suits/reactive_armour.dm +++ b/code/modules/clothing/suits/reactive_armour.dm @@ -349,7 +349,7 @@ /obj/item/clothing/suit/armor/reactive/hallucinating/emp_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) owner.visible_message(span_danger("[src] blocks [attack_text], but pulls a massive charge of mental energy into [owner] from the surrounding environment!")) - owner.adjust_hallucinations_up_to(50 SECONDS, 300 SECONDS) + owner.adjust_hallucinations_up_to(50 SECONDS, 240 SECONDS) reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration return TRUE diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index ca0cdc5cef1..4e497ccbffa 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -301,7 +301,7 @@ /obj/item/reagent_containers/cup/bottle, /obj/item/reagent_containers/cup/tube, /obj/item/reagent_containers/hypospray, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator, /obj/item/reagent_containers/syringe, /obj/item/sensor_device, /obj/item/storage/pill_bottle, @@ -431,7 +431,7 @@ /obj/item/reagent_containers/cup/bottle, /obj/item/reagent_containers/cup/tube, /obj/item/reagent_containers/hypospray, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator/pill, /obj/item/reagent_containers/syringe, /obj/item/storage/bag/xeno, /obj/item/storage/pill_bottle, diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 24a7379edbd..edf57c85f18 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -100,11 +100,16 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") - if(GET_ATOM_BLOOD_DNA_LENGTH(src)) - . += mutable_appearance('icons/effects/blood.dmi', "uniformblood") if(accessory_overlay) . += modify_accessory_overlay() // SKYRAT EDIT CHANGE - ORIGINAL: . += accessory_overlay +/obj/item/clothing/under/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) + . = ..() + if(isinhands) + return + if(GET_ATOM_BLOOD_DNA_LENGTH(src)) + . += mutable_appearance('icons/effects/blood.dmi', "uniformblood") + /obj/item/clothing/under/attackby(obj/item/attacking_item, mob/user, params) if(repair_sensors(attacking_item, user)) return TRUE diff --git a/code/modules/clothing/under/accessories/_accessories.dm b/code/modules/clothing/under/accessories/_accessories.dm index 5b25418838a..19ad5bc9d71 100644 --- a/code/modules/clothing/under/accessories/_accessories.dm +++ b/code/modules/clothing/under/accessories/_accessories.dm @@ -97,8 +97,8 @@ if(minimize_when_attached) transform *= 0.5 - pixel_x += 8 - pixel_y += (-8 + LAZYLEN(attach_to.attached_accessories) * 2) + pixel_w += 8 + pixel_z += (-8 + LAZYLEN(attach_to.attached_accessories) * 2) RegisterSignal(attach_to, COMSIG_ITEM_EQUIPPED, PROC_REF(on_uniform_equipped)) RegisterSignal(attach_to, COMSIG_ITEM_DROPPED, PROC_REF(on_uniform_dropped)) diff --git a/code/modules/deathmatch/deathmatch_maps.dm b/code/modules/deathmatch/deathmatch_maps.dm index e0f86ccc923..f2822cf331a 100644 --- a/code/modules/deathmatch/deathmatch_maps.dm +++ b/code/modules/deathmatch/deathmatch_maps.dm @@ -1,5 +1,5 @@ /datum/lazy_template/deathmatch - map_dir = "_maps/deathmatch" + map_dir = "_maps/minigame/deathmatch" place_on_top = TRUE turf_reservation_type = /datum/turf_reservation/turf_not_baseturf /// Map UI Name diff --git a/code/modules/deathmatch/deathmatch_modifier.dm b/code/modules/deathmatch/deathmatch_modifier.dm index ad2ab6adb62..5bf03105acb 100644 --- a/code/modules/deathmatch/deathmatch_modifier.dm +++ b/code/modules/deathmatch/deathmatch_modifier.dm @@ -590,7 +590,7 @@ . = ..() var/datum/martial_art/picked_art_path = pick_weight(weighted_martial_arts) - var/datum/martial_art/instantiated_art = new picked_art_path() + var/datum/martial_art/instantiated_art = new picked_art_path(player) if (istype(instantiated_art, /datum/martial_art/boxing)) player.mind.adjust_experience(/datum/skill/athletics, SKILL_EXP_LEGENDARY) diff --git a/code/modules/escape_menu/home_page.dm b/code/modules/escape_menu/home_page.dm index 933f905cc80..5f29926d6c3 100644 --- a/code/modules/escape_menu/home_page.dm +++ b/code/modules/escape_menu/home_page.dm @@ -2,7 +2,7 @@ page_holder.give_screen_object( new /atom/movable/screen/escape_menu/home_button( null, - /* hud_owner = */ src, + /* hud_owner = */ null, src, "Resume", /* offset = */ 1, @@ -35,7 +35,7 @@ page_holder.give_screen_object( new /atom/movable/screen/escape_menu/home_button/admin_help( null, - /* hud_owner = */ src, + /* hud_owner = */ null, src, "Admin Help", /* offset = */ 4, @@ -46,7 +46,7 @@ page_holder.give_screen_object( new /atom/movable/screen/escape_menu/home_button/leave_body( null, - /* hud_owner = */ src, + /* hud_owner = */ null, src, "Leave Body", /* offset = */ 5, @@ -169,6 +169,7 @@ /atom/movable/screen/escape_menu/home_button/admin_help/Initialize( mapload, + datum/hud/hud_owner, datum/escape_menu/escape_menu, button_text, offset, @@ -292,6 +293,7 @@ /atom/movable/screen/escape_menu/home_button/leave_body/Initialize( mapload, + datum/hud/hud_owner, datum/escape_menu/escape_menu, button_text, offset, diff --git a/code/modules/events/earthquake.dm b/code/modules/events/earthquake.dm index 58b0a7e4082..6101714df01 100644 --- a/code/modules/events/earthquake.dm +++ b/code/modules/events/earthquake.dm @@ -144,7 +144,7 @@ for(var/turf/turf_to_clear in underbelly) if(ismineralturf(turf_to_clear)) var/turf/closed/mineral/rock_to_clear = turf_to_clear - rock_to_clear.gets_drilled(give_exp = FALSE) + rock_to_clear.gets_drilled() for(var/turf/turf_to_quake in edges) turf_to_quake.Shake(pixelshiftx = 0.5, pixelshifty = 0.5, duration = 1 SECONDS) playsound(epicenter, 'sound/misc/metal_creak.ogg', 125, TRUE) diff --git a/code/modules/events/holiday/easter.dm b/code/modules/events/holiday/easter.dm index d10fb681cc5..dad3f31ba89 100644 --- a/code/modules/events/holiday/easter.dm +++ b/code/modules/events/holiday/easter.dm @@ -158,7 +158,7 @@ /datum/reagent/consumable/sugar = 1 ) result = /obj/item/food/hotcrossbun - + added_foodtypes = SUGAR | BREAKFAST category = CAT_BREAD /datum/crafting_recipe/food/briochecake @@ -178,6 +178,7 @@ bite_consumption = 3 food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) crafting_complexity = FOOD_COMPLEXITY_2 + foodtypes = MEAT /datum/crafting_recipe/food/scotchegg name = "Scotch egg" @@ -188,6 +189,7 @@ /obj/item/food/meatball = 1 ) result = /obj/item/food/scotchegg + removed_foodtypes = BREAKFAST category = CAT_EGG /datum/crafting_recipe/food/mammi @@ -198,6 +200,7 @@ /datum/reagent/consumable/milk = 5 ) result = /obj/item/food/bowled/mammi + added_foodtypes = DAIRY category = CAT_MISCFOOD /obj/item/food/chocolatebunny @@ -206,6 +209,7 @@ icon_state = "chocolatebunny" food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2, /datum/reagent/consumable/nutriment/vitamin = 1) crafting_complexity = FOOD_COMPLEXITY_1 + foodtypes = JUNKFOOD | SUGAR /datum/crafting_recipe/food/chocolatebunny name = "Chocolate bunny" diff --git a/code/modules/events/shuttle_loan/shuttle_loan_items.dm b/code/modules/events/shuttle_loan/shuttle_loan_items.dm index ded82c6e1a6..14257a6a80b 100644 --- a/code/modules/events/shuttle_loan/shuttle_loan_items.dm +++ b/code/modules/events/shuttle_loan/shuttle_loan_items.dm @@ -1,13 +1,16 @@ /obj/item/storage/belt/fannypack/yellow/bee_terrorist/PopulateContents() new /obj/item/grenade/c4 (src) - new /obj/item/reagent_containers/pill/cyanide(src) + new /obj/item/reagent_containers/applicator/pill/cyanide(src) new /obj/item/grenade/chem_grenade/facid(src) /obj/item/paper/fluff/bee_objectives name = "Objectives of a Bee Liberation Front Operative" default_raw_text = "Objective #1. Liberate all bees on the NT transport vessel 2416/B. Success!
Objective #2. Escape alive. Failed." +/obj/machinery/syndicatebomb/shuttle_loan + add_boom_wires = FALSE + /obj/machinery/syndicatebomb/shuttle_loan/Initialize(mapload) . = ..() set_anchored(TRUE) diff --git a/code/modules/fishing/aquarium/aquarium.dm b/code/modules/fishing/aquarium/aquarium.dm index d8386549780..2b1e190a9b1 100644 --- a/code/modules/fishing/aquarium/aquarium.dm +++ b/code/modules/fishing/aquarium/aquarium.dm @@ -11,10 +11,10 @@ integrity_failure = 0.3 //This is the area where fish can swim - var/aquarium_zone_min_px = 2 - var/aquarium_zone_max_px = 31 - var/aquarium_zone_min_py = 10 - var/aquarium_zone_max_py = 28 + var/aquarium_zone_min_pw = 2 + var/aquarium_zone_max_pw = 31 + var/aquarium_zone_min_pz = 10 + var/aquarium_zone_max_pz = 28 /// Default beauty of the aquarium, without anything inside it var/default_beauty = 150 @@ -24,7 +24,7 @@ /obj/structure/aquarium/Initialize(mapload) . = ..() - AddComponent(/datum/component/aquarium, aquarium_zone_min_px, aquarium_zone_max_px, aquarium_zone_min_py, aquarium_zone_max_py, default_beauty) + AddComponent(/datum/component/aquarium, aquarium_zone_min_pw, aquarium_zone_max_pw, aquarium_zone_min_pz, aquarium_zone_max_pz, default_beauty) AddComponent(/datum/component/plumbing/aquarium, start = anchored) RegisterSignal(src, COMSIG_AQUARIUM_FLUID_CHANGED, PROC_REF(on_aquarium_liquid_changed)) update_appearance() diff --git a/code/modules/fishing/aquarium/aquarium_kit.dm b/code/modules/fishing/aquarium/aquarium_kit.dm index a44790f4da1..71be9a10f56 100644 --- a/code/modules/fishing/aquarium/aquarium_kit.dm +++ b/code/modules/fishing/aquarium/aquarium_kit.dm @@ -188,6 +188,7 @@ name = "aquarium props box" desc = "All you need to make your aquarium look good." illustration = "fish" + custom_price = PAYCHECK_LOWER /obj/item/storage/box/aquarium_props/PopulateContents() for(var/prop_type in subtypesof(/obj/item/aquarium_prop)) diff --git a/code/modules/fishing/aquarium/fish_analyzer.dm b/code/modules/fishing/aquarium/fish_analyzer.dm index 3df28e326ac..95b6b0f16c1 100644 --- a/code/modules/fishing/aquarium/fish_analyzer.dm +++ b/code/modules/fishing/aquarium/fish_analyzer.dm @@ -112,7 +112,7 @@ for(var/trait_type in fishie.fish_traits) var/datum/fish_trait/trait = GLOB.fish_traits[trait_type] - fish_traits += list(list("trait_name" = trait.name, "trait_desc" = trait.catalog_description, "trait_inherit" = trait.diff_traits_inheritability)) + fish_traits += list(list("trait_name" = trait.name, "trait_desc" = trait.catalog_description, "trait_inherit" = trait.inheritability)) data["fish_list"] += list(list( "fish_name" = fishie.name, diff --git a/code/modules/fishing/fish/_fish.dm b/code/modules/fishing/fish/_fish.dm index bddaa171d74..f7cb4e2b727 100644 --- a/code/modules/fishing/fish/_fish.dm +++ b/code/modules/fishing/fish/_fish.dm @@ -3,6 +3,9 @@ #define GET_FISH_ELECTROGENESIS(fish) (fish.electrogenesis_power * fish.size * 0.1) +#define FISH_SUBMERGING_THRESHOLD 100 SECONDS +#define STARVING_FISH_SUBMERGING_THRESHOLD 20 SECONDS + // Fish path used for autogenerated fish /obj/item/fish name = "fish" @@ -181,6 +184,8 @@ /// only used in the suicide for comedic value var/suicide_slap_text = "*SLAP!*" + var/time_passed_on_safe_turf = 0 + /obj/item/fish/Initialize(mapload, apply_qualities = TRUE) . = ..() base_icon_state = icon_state @@ -288,11 +293,14 @@ user.visible_message(span_notice("[user] releases [src] into [interacting_with]"), \ span_notice("You release [src] into [interacting_with]. [goodbye_text]"), \ span_notice("You hear a splash.")) - playsound(interacting_with, 'sound/effects/splash.ogg', 50) - SEND_SIGNAL(interacting_with, COMSIG_FISH_RELEASED_INTO, src, user) - qdel(src) + released(interacting_with, user) return ITEM_INTERACT_SUCCESS +/obj/item/fish/proc/released(atom/location, mob/living/user) + playsound(location, 'sound/effects/splash.ogg', 50) + SEND_SIGNAL(location, COMSIG_FISH_RELEASED_INTO, src, user) + qdel(src) + ///Main proc that makes the fish edible. /obj/item/fish/proc/make_edible() var/foodtypes = get_food_types() @@ -823,8 +831,8 @@ if(length(fish_traits & trait.incompatible_traits)) continue // If there's no partner, we've been reated through parthenogenesis or growth, therefore, traits are copied - // Otherwise, we do some probability checks. - if(!y_traits || ((trait_type in same_traits) ? prob(trait.inheritability) : prob(trait.diff_traits_inheritability))) + // Otherwise, we check if both have the trait or perform a probability check. + if(!y_traits || (trait_type in same_traits) || prob(trait.inheritability)) fish_traits |= trait_type incompatible_traits |= trait.incompatible_traits @@ -943,12 +951,18 @@ stop_flopping() /obj/item/fish/process(seconds_per_tick) - do_fish_process(seconds_per_tick) - -/obj/item/fish/proc/do_fish_process(seconds_per_tick) if(HAS_TRAIT(src, TRAIT_FISH_STASIS) || status != FISH_ALIVE) return + do_fish_process(seconds_per_tick) + if(status != FISH_ALIVE || !is_type_in_typecache(loc, SSfishing.fish_safe_turfs_by_type[type])) + time_passed_on_safe_turf = 0 SECONDS + return + time_passed_on_safe_turf += seconds_per_tick SECONDS + if(time_passed_on_safe_turf >= (get_starvation_mult() ? STARVING_FISH_SUBMERGING_THRESHOLD : FISH_SUBMERGING_THRESHOLD)) + visible_message(span_notice("[src] disperses into \the [loc]"), span_notice("You hear a splash.")) + released(loc) +/obj/item/fish/proc/do_fish_process(seconds_per_tick) //safe mode, don't do much except a few things that don't involve growing or reproducing. if(loc && HAS_TRAIT_FROM(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT)) last_feeding += seconds_per_tick SECONDS @@ -1071,13 +1085,13 @@ SIGNAL_HANDLER var/avg_width = round(sprite_width * 0.5) var/avg_height = round(sprite_height * 0.5) - var/px_min = visual.aquarium_zone_min_px + avg_width - 16 - var/px_max = visual.aquarium_zone_max_px - avg_width - 16 - var/py_min = visual.aquarium_zone_min_py + avg_height - 16 - var/py_max = visual.aquarium_zone_max_py - avg_height - 16 + var/pw_min = visual.aquarium_zone_min_pw + avg_width - 16 + var/pw_max = visual.aquarium_zone_max_pw - avg_width - 16 + var/pz_min = visual.aquarium_zone_min_pz + avg_height - 16 + var/pz_max = visual.aquarium_zone_max_pz - avg_height - 16 - visual.pixel_x = visual.base_pixel_x = rand(px_min,px_max) - visual.pixel_y = visual.base_pixel_y = rand(py_min,py_max) + visual.pixel_w = visual.base_pixel_w = rand(pw_min,pw_max) + visual.pixel_z = visual.base_pixel_z = rand(pz_min,pz_max) /obj/item/fish/proc/update_aquarium_animation(datum/source, current_animation, obj/effect/visual, fluid_type) SIGNAL_HANDLER @@ -1101,40 +1115,40 @@ var/avg_width = round(sprite_width / 2) var/avg_height = round(sprite_height / 2) - var/px_min = visual.aquarium_zone_min_px + avg_width - 16 - var/px_max = visual.aquarium_zone_max_px - avg_width - 16 - var/py_min = visual.aquarium_zone_min_py + avg_height - 16 - var/py_max = visual.aquarium_zone_max_py - avg_width - 16 + var/pw_min = visual.aquarium_zone_min_pw + avg_width - 16 + var/pw_max = visual.aquarium_zone_max_pw - avg_width - 16 + var/pz_min = visual.aquarium_zone_min_pz + avg_height - 16 + var/pz_max = visual.aquarium_zone_max_pz - avg_width - 16 - var/origin_x = visual.base_pixel_x - var/origin_y = visual.base_pixel_y - var/prev_x = origin_x - var/prev_y = origin_y - animate(visual, pixel_x = origin_x, time = 0, loop = -1) //Just to start the animation + var/origin_w = visual.base_pixel_w + var/origin_z = visual.base_pixel_z + var/prev_w = origin_w + var/prev_z = origin_z + animate(visual, pixel_w = origin_w, time = 0, loop = -1) //Just to start the animation var/move_number = rand(3, 5) //maybe unhardcode this for(var/i in 1 to move_number) //If it's last movement, move back to start otherwise move to some random point - var/target_x = i == move_number ? origin_x : rand(px_min,px_max) //could do with enforcing minimal delta for prettier zigzags - var/target_y = i == move_number ? origin_y : rand(py_min,py_max) - var/dx = prev_x - target_x - var/dy = prev_y - target_y - prev_x = target_x - prev_y = target_y - var/dist = abs(dx) + abs(dy) + var/target_w = i == move_number ? origin_w : rand(pw_min,pw_max) //could do with enforcing minimal delta for prettier zigzags + var/target_z = i == move_number ? origin_z : rand(pz_min,pz_max) + var/dist_w = prev_w - target_w + var/dist_z = prev_z - target_z + prev_w = target_w + prev_z = target_z + var/dist = abs(dist_w) + abs(dist_z) var/eyeballed_time = dist * 2 //2ds per px //Face the direction we're going var/matrix/dir_mx = matrix(visual.transform) - if(dx <= 0) //assuming default sprite is facing left here + if(dist_w <= 0) //assuming default sprite is facing left here dir_mx.Scale(-1, 1) animate(transform = dir_mx, time = 0, loop = -1) - animate(pixel_x = target_x, pixel_y = target_y, time = eyeballed_time, loop = -1) + animate(pixel_w = target_w, pixel_z = target_z, time = eyeballed_time, loop = -1) /obj/item/fish/proc/dead_animation(obj/effect/aquarium/visual) //Set base_pixel_y to lowest possible value var/avg_height = round(sprite_height / 2) - var/py_min = visual.aquarium_zone_min_py + avg_height - 16 - visual.base_pixel_y = py_min - animate(visual, pixel_y = py_min, time = 1) //flop to bottom and end current animation. + var/pz_min = visual.aquarium_zone_min_pz + avg_height - 16 + visual.base_pixel_z = pz_min + animate(visual, pixel_z = pz_min, time = 1) //flop to bottom and end current animation. ///Malus to the beauty value if the fish content is dead #define DEAD_FISH_BEAUTY -500 @@ -1157,11 +1171,16 @@ /// Checks if our current environment lets us live. /obj/item/fish/proc/proper_environment(temp_range_min = required_temperature_min, temp_range_max = required_temperature_max) - if(loc && HAS_TRAIT(loc, TRAIT_IS_AQUARIUM)) + if(!loc) + return TRUE + + if(HAS_TRAIT(loc, TRAIT_IS_AQUARIUM)) if(!(fish_flags & FISH_FLAG_SAFE_TEMPERATURE) || !(fish_flags & FISH_FLAG_SAFE_FLUID)) return FALSE return TRUE + if(is_type_in_typecache(loc, SSfishing.fish_safe_turfs_by_type[type])) + return TRUE if(required_fluid_type != AQUARIUM_FLUID_AIR && !HAS_TRAIT(src, TRAIT_FISH_AMPHIBIOUS)) return FALSE var/datum/gas_mixture/mixture = loc.return_air() @@ -1567,3 +1586,5 @@ #undef GET_FISH_ELECTROGENESIS #undef FISH_SAD #undef FISH_VERY_HAPPY +#undef FISH_SUBMERGING_THRESHOLD +#undef STARVING_FISH_SUBMERGING_THRESHOLD diff --git a/code/modules/fishing/fish/fish_traits.dm b/code/modules/fishing/fish/fish_traits.dm index 0d0b6d1bd2f..b586622892d 100644 --- a/code/modules/fishing/fish/fish_traits.dm +++ b/code/modules/fishing/fish/fish_traits.dm @@ -28,9 +28,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) ///A list of traits fish cannot have in conjunction with this trait. var/list/incompatible_traits /// The probability this trait can be inherited by offsprings when both mates have it - var/inheritability = 100 - /// Same as above, but for when only one has it. - var/diff_traits_inheritability = 50 + var/inheritability = 50 /// A list of fish types and traits that they can spontaneously manifest with associated probabilities var/list/spontaneous_manifest_types /// An optional whitelist of fish that can get this trait @@ -356,8 +354,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/parthenogenesis name = "Parthenogenesis" catalog_description = "This fish can reproduce asexually, without the need of a mate." - inheritability = 80 - diff_traits_inheritability = 25 + inheritability = 40 /datum/fish_trait/parthenogenesis/apply_to_fish(obj/item/fish/fish) . = ..() @@ -386,14 +383,13 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/recessive name = "Recessive" catalog_description = "If crossbred, offsprings will always be of the mate species, unless it also possess the trait." - diff_traits_inheritability = 0 + inheritability = 0 /datum/fish_trait/no_mating/apply_to_fish(obj/item/fish/fish) . = ..() ADD_TRAIT(fish, TRAIT_FISH_RECESSIVE, FISH_TRAIT_DATUM) /datum/fish_trait/revival - diff_traits_inheritability = 15 name = "Self-Revival" catalog_description = "This fish shows a peculiar ability of reviving itself a minute or two after death." spontaneous_manifest_types = list(/obj/item/fish/boned = 100, /obj/item/fish/mastodon = 100) @@ -460,7 +456,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/toxic name = "Toxic" catalog_description = "This fish contains toxins. Feeding it to predatory fishes or people is not recommended." - diff_traits_inheritability = 25 reagents_to_add = list(/datum/reagent/toxin/tetrodotoxin = 1) infusion_entry = /datum/infuser_entry/ttx_healing ///The amount of venom injected if the fish has a stinger is multiplied by this value. @@ -506,7 +501,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/toxic/carpotoxin name = "Carpotoxic" catalog_description = "This fish contains carpotoxin. Definitely not safe for consumption." - diff_traits_inheritability = 50 reagents_to_add = list(/datum/reagent/toxin/carpotoxin = 4) infusion_entry = null venom_mult = 6 @@ -514,7 +508,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/toxin_immunity name = "Toxin Immunity" catalog_description = "This fish has developed an ample-spected immunity to toxins." - diff_traits_inheritability = 40 /datum/fish_trait/toxin_immunity/apply_to_fish(obj/item/fish/fish) . = ..() @@ -523,8 +516,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/crossbreeder name = "Crossbreeder" catalog_description = "This fish's adaptive genetics allows it to crossbreed with other fish species." - inheritability = 80 - diff_traits_inheritability = 20 + inheritability = 40 incompatible_traits = list(/datum/fish_trait/no_mating) /datum/fish_trait/crossbreeder/apply_to_fish(obj/item/fish/fish) @@ -533,8 +525,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/territorial name = "Territorial" - inheritability = 80 - diff_traits_inheritability = 40 catalog_description = "This fish will start attacking other fish if the aquarium has five or more." /datum/fish_trait/territorial/apply_to_fish(obj/item/fish/fish) @@ -558,8 +548,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/lubed name = "Lubed" - inheritability = 90 - diff_traits_inheritability = 45 spontaneous_manifest_types = list(/obj/item/fish/clownfish/lube = 100) catalog_description = "This fish exudes a viscous, slippery lubrificant. It's recommended not to step on it." added_difficulty = 5 @@ -584,8 +572,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/amphibious name = "Amphibious" - inheritability = 80 - diff_traits_inheritability = 40 catalog_description = "This fish has developed a primitive adaptation to life on both land and water." infusion_entry = /datum/infuser_entry/amphibious @@ -597,8 +583,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/mixotroph name = "Mixotroph" - inheritability = 75 - diff_traits_inheritability = 25 catalog_description = "This fish is capable of substaining itself by producing its own sources of energy (food)." incompatible_traits = list(/datum/fish_trait/predator, /datum/fish_trait/necrophage) @@ -608,8 +592,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/antigrav name = "Anti-Gravity" - inheritability = 75 - diff_traits_inheritability = 25 catalog_description = "This fish will invert the gravity of the bait at random. May fall upward outside after being caught." added_difficulty = 20 reagents_to_add = list(/datum/reagent/gravitum = 2.3) @@ -630,10 +612,14 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) ///This is just barely enough to crossbreed out of anxiety, but it severely limits the potential of /datum/fish_trait/anxiety name = "Anxiety" - inheritability = 100 - diff_traits_inheritability = 70 catalog_description = "This fish tends to die of stress when forced to be around too many other fish." +/datum/fish_trait/anxiety/difficulty_mod(obj/item/fishing_rod/rod, mob/fisherman) + . = ..() + // Anxious fish are easier with a cloaked line. + if(rod.line && (rod.line.fishing_line_traits & FISHING_LINE_CLOAKED)) + .[ADDITIVE_FISHING_MOD] -= FISH_TRAIT_MINOR_DIFFICULTY_BOOST + /datum/fish_trait/anxiety/apply_to_fish(obj/item/fish/fish) . = ..() RegisterSignal(fish, COMSIG_FISH_LIFE, PROC_REF(on_fish_life)) @@ -653,8 +639,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/electrogenesis name = "Electrogenesis" - inheritability = 60 - diff_traits_inheritability = 30 catalog_description = "This fish is electroreceptive, and will generate electric fields. Can be harnessed inside a bioelectric generator." reagents_to_add = list(/datum/reagent/consumable/liquidelectricity = 1.5) @@ -701,7 +685,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) catalog_description = "This chrab's development is stunted, and will not properly reach adulthood." spontaneous_manifest_types = list(/obj/item/fish/chasm_crab = 12) fish_whitelist = list(/obj/item/fish/chasm_crab, /obj/item/fish/chasm_crab/ice) - diff_traits_inheritability = 40 /datum/fish_trait/stunted/apply_to_mob(mob/living/basic/mob) . = ..() @@ -709,8 +692,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/stinger name = "Stinger" - inheritability = 80 - diff_traits_inheritability = 35 catalog_description = "This fish is equipped with a sharp stringer or bill capable of delivering damage and toxins." spontaneous_manifest_types = list( /obj/item/fish/stingray = 100, @@ -785,7 +766,6 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/ink name = "Ink Production" catalog_description = "This fish possess a sac that produces ink." - diff_traits_inheritability = 70 spontaneous_manifest_types = list(/obj/item/fish/squid = 35) infusion_entry = /datum/infuser_entry/squid diff --git a/code/modules/fishing/fish/types/air_space.dm b/code/modules/fishing/fish/types/air_space.dm index 1a1d809526b..8e53f00d46b 100644 --- a/code/modules/fishing/fish/types/air_space.dm +++ b/code/modules/fishing/fish/types/air_space.dm @@ -200,7 +200,7 @@ if(status == FISH_DEAD) eyes.icon_state += "_dead" else - eyes.appearance_flags = RESET_COLOR + eyes.appearance_flags = RESET_COLOR|KEEP_APART . += eyes ///Determines the speed at which the carp grows based on how big it's diff --git a/code/modules/fishing/fish/types/rift.dm b/code/modules/fishing/fish/types/rift.dm index 2a43dcaadfb..a9a9763daab 100644 --- a/code/modules/fishing/fish/types/rift.dm +++ b/code/modules/fishing/fish/types/rift.dm @@ -192,6 +192,9 @@ /obj/item/fish/dolphish/do_fish_process(seconds_per_tick) . = ..() + if(QDELETED(src)) + return + var/patience_reduction = 1 var/turf/onturf = get_turf(loc) diff --git a/code/modules/fishing/fishing_equipment.dm b/code/modules/fishing/fishing_equipment.dm index 47ee0e6c123..7a4ae4dd4ec 100644 --- a/code/modules/fishing/fishing_equipment.dm +++ b/code/modules/fishing/fishing_equipment.dm @@ -44,7 +44,7 @@ desc = "Even harder to notice than the common variety." icon_state = "reel_white" fishing_line_traits = FISHING_LINE_CLOAKED - line_color = "#82cfdd" + line_color = "#82cfdd20" //low alpha channel value, harder to see. wiki_desc = "Fishing anxious and wary fish will be easier with this equipped." /obj/item/fishing_line/bouncy @@ -87,8 +87,8 @@ icon_state = "reel_auto" fishing_line_traits = FISHING_LINE_AUTOREEL line_color = "#F88414" - wiki_desc = "Automatically starts the minigame once the fish bites the bait. It also spin fishing lures for you without needing an input. \ - It can also be used to snag in objects from a distance more rapidly.
\ + wiki_desc = "Automatically starts the minigame and helps guide the bait a little. It also spin fishing lures for you without need of an input. \ + It can also be used to snag in objects from a distance and throw them in your direction.
\ It requires the Advanced Fishing Technology Node to be researched to be printed." /obj/item/fishing_line/auto_reel/Initialize(mapload) diff --git a/code/modules/fishing/fishing_minigame.dm b/code/modules/fishing/fishing_minigame.dm index 5ecd960db57..0d42be519c2 100644 --- a/code/modules/fishing/fishing_minigame.dm +++ b/code/modules/fishing/fishing_minigame.dm @@ -5,8 +5,6 @@ // UI minigame phase #define MINIGAME_PHASE 3 -// Acceleration mod when bait is over fish -#define FISH_ON_BAIT_ACCELERATION_MULT 0.6 /// The minimum velocity required for the bait to bounce #define BAIT_MIN_VELOCITY_BOUNCE 150 @@ -109,10 +107,12 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) var/gravity_velocity = -800 /// The acceleration of the bait while reeling var/reeling_velocity = 1200 - /// By how much the bait recoils back when hitting the bounds of the slider while idle + /// By how much the bait recoils back when hitting the bounds of the slider while idle. Should be never above 1 var/bait_bounce_mult = 0.6 /// The multiplier of deceleration of velocity that happens when the bait switches direction var/deceleration_mult = 1.8 + /// Multiplier of the velocity applied when the bait is overlapping the fish + var/overlap_velocity_mult = 0.6 ///The background as shown in the minigame, and the holder of the other visual overlays var/atom/movable/screen/fishing_hud/fishing_hud @@ -170,6 +170,11 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) bait_bounce_mult *= rod.bounciness_mult deceleration_mult *= rod.deceleration_mult gravity_velocity *= rod.gravity_mult + /** + * The overlap multiplier is lower than 1 by default and exponentiation will make it even lower, + * to offset the harder control however a bait velocity higher (or lower) than normal. + */ + overlap_velocity_mult = overlap_velocity_mult ** rod.bait_speed_mult /datum/fishing_challenge/Destroy(force) GLOB.fishing_challenges_by_user -= user @@ -406,8 +411,8 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) deltimer(next_phase_timer) phase = WAIT_PHASE //Bobbing animation - animate(float, pixel_y = 1, time = 1 SECONDS, loop = -1, flags = ANIMATION_RELATIVE) - animate(pixel_y = -1, time = 1 SECONDS, flags = ANIMATION_RELATIVE) + animate(float, pixel_z = 1, time = 1 SECONDS, loop = -1, flags = ANIMATION_RELATIVE) + animate(pixel_z = -1, time = 1 SECONDS, flags = ANIMATION_RELATIVE) next_phase_timer = addtimer(CALLBACK(src, PROC_REF(start_biting_phase)), wait_time, TIMER_STOPPABLE|TIMER_DELETE_ME) if(float.spin_frequency) set_lure_timers() @@ -464,8 +469,8 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) send_alert("organ!!!") else send_alert("!!!") - animate(float, pixel_y = 3, time = 5, loop = -1, flags = ANIMATION_RELATIVE) - animate(pixel_y = -3, time = 5, flags = ANIMATION_RELATIVE) + animate(float, pixel_z = 3, time = 5, loop = -1, flags = ANIMATION_RELATIVE) + animate(pixel_z = -3, time = 5, flags = ANIMATION_RELATIVE) if(special_effects & FISHING_MINIGAME_AUTOREEL) addtimer(CALLBACK(src, PROC_REF(automatically_start_minigame)), 0.2 SECONDS) // Setup next phase @@ -739,13 +744,21 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) velocity_change = gravity_velocity else velocity_change = -gravity_velocity - velocity_change *= (fish_on_bait ? FISH_ON_BAIT_ACCELERATION_MULT : 1) * seconds_per_tick + velocity_change *= (fish_on_bait ? overlap_velocity_mult : 1) * seconds_per_tick velocity_change = round(velocity_change) if(current_active_effect == FISHING_MINIGAME_RULE_ANTIGRAV) velocity_change = -velocity_change + if(reeling_state == REELING_STATE_IDLE && (special_effects & FISHING_MINIGAME_AUTOREEL)) + var/bait_center = bait_position + bait_height / 2 + var/auto_adjustment = reeling_velocity * 0.2 + if(fish_position > bait_center) + velocity_change += auto_adjustment + else + velocity_change -= auto_adjustment + /** * Pull the brake on the velocity if the current velocity and the acceleration * have different directions, making the bait less slippery, thus easier to control @@ -765,7 +778,7 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) bait_velocity += velocity_change //check that the fish area is still intersecting the bait now that it has moved - if(is_fish_on_bait()) + if(fish_on_bait) completion += completion_gain * seconds_per_tick if(completion >= 100) complete(TRUE) @@ -777,16 +790,12 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) completion = clamp(completion, 0, 100) -///Returns TRUE if the fish and the bait are intersecting -/datum/fishing_challenge/proc/is_fish_on_bait() - return (fish_position + fish_height >= bait_position) && (bait_position + bait_height >= fish_position) - ///update the vertical pixel position of both fish and bait, and the icon state of the completion bar /datum/fishing_challenge/proc/update_visuals(seconds_per_tick) var/bait_offset_mult = bait_position / FISHING_MINIGAME_AREA - animate(fishing_hud.hud_bait, pixel_y = MINIGAME_SLIDER_HEIGHT * bait_offset_mult, time = seconds_per_tick SECONDS) + animate(fishing_hud.hud_bait, pixel_z = MINIGAME_SLIDER_HEIGHT * bait_offset_mult, time = seconds_per_tick SECONDS) var/fish_offset_mult = fish_position / FISHING_MINIGAME_AREA - animate(fishing_hud.hud_fish, pixel_y = MINIGAME_SLIDER_HEIGHT * fish_offset_mult, time = seconds_per_tick SECONDS) + animate(fishing_hud.hud_fish, pixel_z = MINIGAME_SLIDER_HEIGHT * fish_offset_mult, time = seconds_per_tick SECONDS) fishing_hud.hud_completion.update_state(completion, seconds_per_tick) ///The screen object which bait, fish, and completion bar are visually attached to. @@ -844,11 +853,11 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) /atom/movable/screen/hud_bait/update_overlays() . = ..() var/mutable_appearance/bait_top = mutable_appearance(icon, "bait_top") - bait_top.pixel_y += cur_height - MINIGAME_BAIT_TOP_AND_BOTTOM_HEIGHT + bait_top.pixel_z += cur_height - MINIGAME_BAIT_TOP_AND_BOTTOM_HEIGHT . += bait_top for (var/i in 1 to (cur_height - MINIGAME_BAIT_TOP_AND_BOTTOM_HEIGHT)) var/mutable_appearance/bait_bar = mutable_appearance(icon, "bait_bar") - bait_bar.pixel_y += i + bait_bar.pixel_z += i . += bait_bar /atom/movable/screen/hud_fish @@ -935,7 +944,6 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) #undef REELING_STATE_UP #undef REELING_STATE_DOWN -#undef FISH_ON_BAIT_ACCELERATION_MULT #undef BAIT_MIN_VELOCITY_BOUNCE #undef MAX_FISH_COMPLETION_MALUS diff --git a/code/modules/fishing/fishing_rod.dm b/code/modules/fishing/fishing_rod.dm index b1895d08ab8..e51222d6397 100644 --- a/code/modules/fishing/fishing_rod.dm +++ b/code/modules/fishing/fishing_rod.dm @@ -483,15 +483,13 @@ var/line_color = line?.line_color || default_line_color /// Line part by the rod. if(reel_overlay) - var/mutable_appearance/reel_appearance = mutable_appearance(icon, reel_overlay) - reel_appearance.appearance_flags = RESET_COLOR + var/mutable_appearance/reel_appearance = mutable_appearance(icon, reel_overlay, appearance_flags = RESET_COLOR|KEEP_APART) reel_appearance.color = line_color . += reel_appearance // Line & hook is also visible when only bait is equipped but it uses default appearances then if(hook || bait) - var/mutable_appearance/line_overlay = mutable_appearance(icon, "line_overlay") - line_overlay.appearance_flags = RESET_COLOR + var/mutable_appearance/line_overlay = mutable_appearance(icon, "line_overlay", appearance_flags = RESET_COLOR|KEEP_APART) line_overlay.color = line_color . += line_overlay . += hook?.rod_overlay_icon_state || "hook_overlay" @@ -512,14 +510,12 @@ /obj/item/fishing_rod/proc/get_fishing_worn_overlays(mutable_appearance/standing, isinhands, icon_file) . = list() var/line_color = line?.line_color || default_line_color - var/mutable_appearance/reel_overlay = mutable_appearance(icon_file, "reel_overlay") - reel_overlay.appearance_flags |= RESET_COLOR + var/mutable_appearance/reel_overlay = mutable_appearance(icon_file, "reel_overlay", appearance_flags = RESET_COLOR|KEEP_APART) reel_overlay.color = line_color . += reel_overlay /// if we don't have anything hooked show the dangling hook & line if(isinhands && !fishing_line) - var/mutable_appearance/line_overlay = mutable_appearance(icon_file, "line_overlay") - line_overlay.appearance_flags |= RESET_COLOR + var/mutable_appearance/line_overlay = mutable_appearance(icon_file, "line_overlay", appearance_flags = RESET_COLOR|KEEP_APART) line_overlay.color = line_color . += line_overlay . += mutable_appearance(icon_file, "hook_overlay") diff --git a/code/modules/fishing/sources/_fish_source.dm b/code/modules/fishing/sources/_fish_source.dm index e9deca5b58a..18165755562 100644 --- a/code/modules/fishing/sources/_fish_source.dm +++ b/code/modules/fishing/sources/_fish_source.dm @@ -119,7 +119,16 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) TRAIT_BASIC_QUALITY_BAIT = 0.4, ) + //If set, fish types native to this source won't die if left on these turfs. + var/list/associated_safe_turfs + //list of subtypes of associated safe turfs that are NOT safe + var/list/safe_turfs_blacklist + /datum/fish_source/New() + if(!SSfishing.initialized && associated_safe_turfs) //This is only needed during world init + associated_safe_turfs = typecacheof(associated_safe_turfs) + if(safe_turfs_blacklist) + associated_safe_turfs -= typecacheof(safe_turfs_blacklist) if(!PERFORM_ALL_TESTS(focus_only/fish_sources_tables)) return for(var/path in fish_counts) @@ -545,16 +554,21 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) #undef EXPLOSIVE_FISHING_RECOVERY_RATE ///Called when releasing a fish in a fishing spot with the TRAIT_CATCH_AND_RELEASE trait. -/datum/fish_source/proc/readd_fish(obj/item/fish/fish, mob/living/releaser) - var/is_morbid = HAS_MIND_TRAIT(releaser, TRAIT_MORBID) - var/is_naive = HAS_MIND_TRAIT(releaser, TRAIT_NAIVE) - if(fish.status == FISH_DEAD) //ded fish won't repopulate the sea. - if(is_naive || is_morbid) +/datum/fish_source/proc/readd_fish(atom/location, obj/item/fish/fish, mob/living/releaser) + if(releaser) + var/is_morbid = HAS_MIND_TRAIT(releaser, TRAIT_MORBID) + var/is_naive = HAS_MIND_TRAIT(releaser, TRAIT_NAIVE) + if(fish.status == FISH_DEAD) //ded fish won't repopulate the sea. + if(is_naive || is_morbid) + releaser.add_mood_event("fish_released", /datum/mood_event/fish_released, is_morbid && !is_naive, fish) + if(((fish.type in fish_table) != is_morbid) || is_naive) releaser.add_mood_event("fish_released", /datum/mood_event/fish_released, is_morbid && !is_naive, fish) + //don't do anything if the fish is dead, not native to this fish source or has no limited amount. + if(fish.status == FISH_DEAD || isnull(fish_table[fish.type]) || isnull(fish_counts[fish.type])) return - if(((fish.type in fish_table) != is_morbid) || is_naive) - releaser.add_mood_event("fish_released", /datum/mood_event/fish_released, is_morbid && !is_naive, fish) - if(isnull(fish_counts[fish.type])) //This fish can be caught indefinitely so it won't matter. + //ditto if no restrictions apply + var/area/area = get_area(location) + if(area.area_flags & UNLIMITED_FISHING) return //If this fish population isn't recovering from recent losses, we just increase it. if(!LAZYACCESS(currently_on_regen, fish.type)) diff --git a/code/modules/fishing/sources/source_types.dm b/code/modules/fishing/sources/source_types.dm deleted file mode 100644 index bfbf7a95f0d..00000000000 --- a/code/modules/fishing/sources/source_types.dm +++ /dev/null @@ -1,1119 +0,0 @@ -/datum/fish_source/ocean - radial_state = "seaboat" - overlay_state = "portal_ocean" - fish_table = list( - // FISHING_DUD = 15, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/effect/spawner/message_in_a_bottle = 4, - /obj/item/coin/gold = 6, - /obj/item/fish/clownfish = 11, - /obj/item/fish/pufferfish = 11, - /obj/item/fish/cardinal = 11, - /obj/item/fish/greenchromis = 11, - /obj/item/fish/squid = 11, - /obj/item/fish/stingray = 8, - /obj/item/fish/plaice = 8, - /obj/item/fish/monkfish = 5, - /obj/item/fish/lanternfish = 7, - /obj/item/fish/zipzap = 7, - /obj/item/fish/clownfish/lube = 5, - /obj/item/fish/swordfish = 5, - /obj/structure/mystery_box/fishing = 2, - ) - fish_counts = list( - /obj/item/fish/clownfish/lube = 2, - /obj/item/fish/swordfish = 2, - /obj/structure/mystery_box/fishing = 1, - ) - fish_count_regen = list( - /obj/item/fish/clownfish/lube = 3 MINUTES, - /obj/item/fish/swordfish = 5 MINUTES, - /obj/structure/mystery_box/fishing = 32 MINUTES, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15 - fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS - -/datum/fish_source/ocean/beach - catalog_description = "Beach shore water" - radial_state = "palm_beach" - overlay_state = "portal_beach" - -/datum/fish_source/ice_fishing - background = "background_ice" - catalog_description = "Ice-covered water" - radial_state = "ice" - overlay_state = "portal_ocean" - fish_table = list( - FISHING_DUD = 4, - /obj/item/fish/arctic_char = 5, - /obj/item/fish/sockeye_salmon = 5, - /obj/item/fish/chasm_crab/ice = 2, - /obj/item/fish/boned = 1, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30 - -/datum/fish_source/river - catalog_description = "River water" - radial_state = "river" - overlay_state = "portal_river" - fish_table = list( - FISHING_DUD = 4, - /obj/item/fish/goldfish = 5, - /obj/item/fish/guppy = 5, - /obj/item/fish/plasmatetra = 4, - /obj/item/fish/perch = 4, - /obj/item/fish/angelfish = 4, - /obj/item/fish/catfish = 4, - /obj/item/fish/slimefish = 2, - /obj/item/fish/sockeye_salmon = 1, - /obj/item/fish/arctic_char = 1, - /obj/item/fish/pike = 1, - /obj/item/fish/goldfish/three_eyes = 1, - ) - fish_counts = list( - /obj/item/fish/pike = 3, - ) - fish_count_regen = list( - /obj/item/fish/pike = 4 MINUTES, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15 - fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS - -/datum/fish_source/sand - catalog_description = "Sand" - radial_state = "palm_beach" - fish_table = list( - FISHING_DUD = 8, - /obj/item/fish/sand_crab = 10, - /obj/item/fish/sand_surfer = 10, - /obj/item/fish/bumpy = 10, - /obj/item/coin/gold = 3, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30 - fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS - -/datum/fish_source/cursed_spring - catalog_description = null //it's a secret (sorta, I know you're reading this) - radial_state = "cursed" - fish_table = list( - FISHING_DUD = 2, - /obj/item/fish/soul = 3, - /obj/item/fish/skin_crab = 3, - /obj/item/fishing_rod/telescopic/master = 1, - ) - fish_counts = list( - /obj/item/fishing_rod/telescopic/master = 1, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 35 - fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS - -/datum/fish_source/portal - fish_table = list( - // FISHING_DUD = 5, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/item/fish/goldfish = 10, - /obj/item/fish/guppy = 10, - /obj/item/fish/angelfish = 10, - /obj/item/fish/perch = 5, - /obj/item/fish/goldfish/three_eyes = 3, - /obj/item/fish/plasmatetra = 3, - ) - catalog_description = "Aquarium dimension (Fishing portal generator)" - radial_state = "fish_tank" - ///The name of this option shown in the radial menu on the fishing portal generator - var/radial_name = "Aquarium" - -/datum/fish_source/portal/beach - fish_table = list( - //FISHING_DUD = 10, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/effect/spawner/message_in_a_bottle = 3, - /obj/item/fish/clownfish = 10, - /obj/item/fish/pufferfish = 10, - /obj/item/fish/cardinal = 10, - /obj/item/fish/greenchromis = 10, - /obj/item/fish/squid = 8, - /obj/item/fish/plaice = 8, - /obj/item/survivalcapsule/fishing = 1, - ) - fish_counts = list( - /obj/item/survivalcapsule/fishing = 1, - ) - catalog_description = "Beach dimension (Fishing portal generator)" - radial_name = "Beach" - radial_state = "palm_beach" - overlay_state = "portal_beach" - -/datum/fish_source/portal/beach/on_fishing_spot_init(datum/component/fishing_spot/spot) - ADD_TRAIT(spot.parent, TRAIT_MESSAGE_IN_A_BOTTLE_LOCATION, INNATE_TRAIT) - -/datum/fish_source/portal/beach/on_fishing_spot_del(datum/component/fishing_spot/spot) - REMOVE_TRAIT(spot.parent, TRAIT_MESSAGE_IN_A_BOTTLE_LOCATION, INNATE_TRAIT) - -/datum/fish_source/portal/chasm - background = "background_chasm" - fish_table = list( - // FISHING_DUD = 5, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/item/fish/chasm_crab = 10, - /obj/item/fish/boned = 5, - /obj/item/stack/sheet/bone = 5, - ) - catalog_description = "Chasm dimension (Fishing portal generator)" - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 - radial_name = "Chasm" - overlay_state = "portal_chasm" - radial_state = "ground_hole" - -/datum/fish_source/portal/ocean - fish_table = list( - // FISHING_DUD = 5, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/effect/spawner/message_in_a_bottle = 2, - /obj/item/fish/lanternfish = 5, - /obj/item/fish/firefish = 5, - /obj/item/fish/gunner_jellyfish = 5, - /obj/item/fish/moonfish/dwarf = 4, - /obj/item/fish/needlefish = 5, - /obj/item/fish/armorfish = 5, - /obj/item/fish/zipzap = 5, - /obj/item/fish/stingray = 4, - /obj/item/fish/monkfish = 4, - /obj/item/fish/swordfish = 3, - /obj/item/fish/moonfish = 1, - ) - fish_counts = list( - /obj/item/fish/swordfish = 2, - ) - fish_count_regen = list( - /obj/item/fish/swordfish = 5 MINUTES, - ) - catalog_description = "Ocean dimension (Fishing portal generator)" - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 - radial_name = "Ocean" - overlay_state = "portal_ocean" - radial_state = "seaboat" - -/datum/fish_source/portal/ocean/on_fishing_spot_init(datum/component/fishing_spot/spot) - ADD_TRAIT(spot.parent, TRAIT_MESSAGE_IN_A_BOTTLE_LOCATION, INNATE_TRAIT) - -/datum/fish_source/portal/ocean/on_fishing_spot_del(datum/component/fishing_spot/spot) - REMOVE_TRAIT(spot.parent, TRAIT_MESSAGE_IN_A_BOTTLE_LOCATION, INNATE_TRAIT) - -/datum/fish_source/portal/hyperspace - background = "background_space" - fish_table = list( - // FISHING_DUD = 5, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/item/fish/starfish = 6, - /obj/item/fish/baby_carp = 6, - /obj/item/stack/ore/bluespace_crystal = 2, - /mob/living/basic/carp = 2, - ) - fish_counts = list( - /obj/item/stack/ore/bluespace_crystal = 10, - ) - catalog_description = "Hyperspace dimension (Fishing portal generator)" - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 - radial_name = "Hyperspace" - overlay_state = "portal_hyperspace" - radial_state = "space_rocket" - -///Unlocked by emagging the fishing portal generator with an emag. -/datum/fish_source/portal/syndicate - background = "background_lavaland" - fish_table = list( - // FISHING_DUD = 5, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/item/fish/donkfish = 5, - /obj/item/fish/emulsijack = 5, - /obj/item/fish/jumpercable = 5, - /obj/item/fish/chainsawfish = 2, - /obj/item/fish/pike/armored = 2, - ) - fish_counts = list( - /obj/item/fish/chainsawfish = 1, - /obj/item/fish/pike/armored = 1, - ) - fish_count_regen = list( - /obj/item/fish/chainsawfish = 7 MINUTES, - /obj/item/fish/pike/armored = 7 MINUTES, - ) - catalog_description = "Syndicate dimension (Fishing portal generator)" - radial_name = "Syndicate" - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 25 - overlay_state = "portal_syndicate" - radial_state = "syndi_snake" - -/** - * A special portal fish source which fish table is populated on init with the contents of all - * portal fish sources, except for FISHING_DUD, and a couple more caveats. - */ -/datum/fish_source/portal/random - fish_table = null //It's populated the first time the source is loaded on a fishing portal generator. - catalog_description = null // it'd make a bad entry in the catalog. - radial_name = "Randomizer" - overlay_state = "portal_randomizer" - radial_state = "misaligned_question_mark" - fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD - var/static/list/all_portal_fish_sources_at_once - -///Generate the fish table if we don't have one already. -/datum/fish_source/portal/random/on_fishing_spot_init(datum/component/fishing_spot/spot) - if(fish_table) - return - - ///rewards not found in other fishing portals - fish_table = list( - /obj/item/fish/holo/checkered = 1, - ) - - for(var/portal_type in GLOB.preset_fish_sources) - if(portal_type == type || !ispath(portal_type, /datum/fish_source/portal)) - continue - var/datum/fish_source/portal/preset_portal = GLOB.preset_fish_sources[portal_type] - fish_table |= preset_portal.fish_table - - ///We don't serve duds. - fish_table -= FISHING_DUD - - for(var/reward_path in fish_table) - fish_table[reward_path] = rand(1, 4) - -///Difficulty has to be calculated before the rest, because of how it influences jump chances -/datum/fish_source/portal/random/calculate_difficulty(datum/fishing_challenge/challenge, result, obj/item/fishing_rod/rod, mob/fisherman) - . = ..() - . += rand(-10, 15) - -///In the spirit of randomness, we skew a few values here and there -/datum/fish_source/portal/random/pre_challenge_started(obj/item/fishing_rod/rod, mob/user, datum/fishing_challenge/challenge) - challenge.bait_bounce_mult = max(challenge.bait_bounce_mult + rand(-3, 3) * 0.1, 0.1) - challenge.completion_loss = max(challenge.completion_loss + rand(-2, 2), 0) - challenge.completion_gain = max(challenge.completion_gain + rand(-1, 1), 2) - challenge.mover.short_jump_velocity_limit += rand(-100, 100) - challenge.mover.long_jump_velocity_limit += rand(-100, 100) - var/static/list/active_effects = bitfield_to_list(FISHING_MINIGAME_ACTIVE_EFFECTS) - for(var/effect in active_effects) - if(prob(30)) - challenge.special_effects |= effect - RegisterSignal(challenge, COMSIG_FISHING_CHALLENGE_MOVER_INITIALIZED, PROC_REF(randomize_mover_velocity)) - -/datum/fish_source/portal/random/proc/randomize_mover_velocity(datum/source, datum/fish_movement/mover) - SIGNAL_HANDLER - mover.short_jump_velocity_limit += rand(-100, 100) - mover.long_jump_velocity_limit += rand(-100, 100) - -///Cherry on top, fish caught from the randomizer portal also have (almost completely) random traits -/datum/fish_source/portal/random/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot, obj/item/fishing_rod/used_rod) - if(!ispath(reward_path, /obj/item/fish)) - return ..() - - var/static/list/weighted_traits - if(!weighted_traits) - weighted_traits = list() - for(var/trait_type as anything in GLOB.fish_traits) - var/datum/fish_trait/trait = GLOB.fish_traits[trait_type] - weighted_traits[trait.type] = round(trait.inheritability**2/100) - - var/obj/item/fish/caught_fish = new reward_path(spawn_location, FALSE) - var/list/new_traits = list() - for(var/iteration in 1 to rand(1, 4)) - new_traits |= pick_weight(weighted_traits) - caught_fish.inherit_traits(new_traits) - caught_fish.randomize_size_and_weight(deviation = 0.3) - return caught_fish - - -/datum/fish_source/chasm - catalog_description = "Chasm depths" - background = "background_chasm" - radial_state = "ground_hole" - overlay_state = "portal_chasm" - fish_table = list( - //FISHING_DUD = 5, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/item/fish/chasm_crab = 15, - /datum/chasm_detritus = 30, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15 - fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_NONE - -/datum/fish_source/chasm/on_start_fishing(obj/item/fishing_rod/rod, mob/fisherman, atom/parent) - . = ..() - if(istype(rod.hook, /obj/item/fishing_hook/rescue)) - to_chat(fisherman, span_notice("The rescue hook falls straight down the chasm! Hopefully it catches a corpse.")) - return - to_chat(fisherman, span_danger("Your fishing hook makes a soft 'thud' noise as it gets stuck on the wall of the chasm. It doesn't look like it's going to catch much of anything, except maybe some detritus.")) - -/datum/fish_source/chasm/roll_reward(obj/item/fishing_rod/rod, mob/fisherman) - var/rolled_reward = ..() - - if(!rod.hook || !ispath(rolled_reward, /datum/chasm_detritus)) - return rolled_reward - - return rod.hook.chasm_detritus_type - -/datum/fish_source/lavaland - catalog_description = "Lava vents" - background = "background_lavaland" - radial_state = "lava" - overlay_state = "portal_lava" - fish_table = list( - // FISHING_DUD = 5, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/item/stack/ore/slag = 20, - /obj/item/fish/lavaloop = 15, - /obj/structure/closet/crate/necropolis/tendril = 1, - /obj/effect/mob_spawn/corpse/human/charredskeleton = 1 - ) - fish_counts = list( - /obj/structure/closet/crate/necropolis/tendril = 1 - ) - fish_count_regen = list( - /obj/structure/closet/crate/necropolis/tendril = 27 MINUTES, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 - fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS - -/datum/fish_source/lavaland/reason_we_cant_fish(obj/item/fishing_rod/rod, mob/fisherman, atom/parent) - . = ..() - if(!HAS_TRAIT(rod, TRAIT_ROD_LAVA_USABLE)) - return "You'll need reinforced fishing line to fish in there." - -/datum/fish_source/lavaland/icemoon - background = "background_plasma" - catalog_description = "Liquid plasma vents" - radial_state = "plasma" - fish_table = list( - // FISHING_DUD = 5, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/item/fish/chasm_crab/ice = 30, - /obj/item/fish/lavaloop/plasma_river = 30, - /obj/item/coin/plasma = 6, - /obj/item/stack/ore/plasma = 6, - /obj/effect/decal/remains/plasma = 2, - /obj/item/stack/sheet/mineral/runite = 2, - /obj/item/stack/sheet/mineral/adamantine = 2, - /mob/living/basic/mining/lobstrosity = 1, - /mob/living/basic/mining/lobstrosity/juvenile = 1, - ) - fish_counts = list( - /obj/item/stack/sheet/mineral/adamantine = 3, - /obj/item/stack/sheet/mineral/runite = 2, - ) - fish_count_regen = list( - /obj/item/stack/sheet/mineral/adamantine = 8 MINUTES, - /obj/item/stack/sheet/mineral/runite = 10 MINUTES, - ) - overlay_state = "portal_plasma" - -/datum/fish_source/moisture_trap - background = "background_dank" - catalog_description = "Moisture trap basins" - radial_state = "garbage" - overlay_state = "portal_river" // placeholder - fish_table = list( - // FISHING_DUD = 20, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/item/fish/ratfish = 10, - /obj/item/fish/slimefish = 4, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 - -/datum/fish_source/toilet - background = "background_dank" - catalog_description = "Station toilets" - radial_state = "toilet" - duds = list("ewww... nothing", "it was nothing", "it was toilet paper", "it was flushed away", "the hook is empty", "where's the damn money?!") - overlay_state = "portal_river" // placeholder - fish_table = list( - // FISHING_DUD = 18, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/item/fish/sludgefish = 18, - /obj/item/fish/slimefish = 4, - /obj/item/storage/wallet/money = 2, - /obj/item/survivalcapsule/fishing = 1, - ) - fish_counts = list( - /obj/item/storage/wallet/money = 2, - /obj/item/survivalcapsule/fishing = 1, - ) - fishing_difficulty = FISHING_EASY_DIFFICULTY + 10 - -/datum/fish_source/holographic - catalog_description = "Holographic water" - fish_table = list( - /obj/item/fish/holo = 10, - /obj/item/fish/holo/crab = 10, - /obj/item/fish/holo/puffer = 10, - /obj/item/fish/holo/angel = 10, - /obj/item/fish/holo/clown = 10, - /obj/item/fish/holo/checkered = 5, - /obj/item/fish/holo/halffish = 5, - ) - fishing_difficulty = FISHING_EASY_DIFFICULTY + 10 - fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD - -/datum/fish_source/holographic/on_fishing_spot_init(datum/component/fishing_spot/spot) - ADD_TRAIT(spot.parent, TRAIT_UNLINKABLE_FISHING_SPOT, REF(src)) //You would have to be inside the holodeck anyway... - -/datum/fish_source/holographic/on_fishing_spot_del(datum/component/fishing_spot/spot) - REMOVE_TRAIT(spot.parent, TRAIT_UNLINKABLE_FISHING_SPOT, REF(src)) - -/datum/fish_source/holographic/generate_wiki_contents(datum/autowiki/fish_sources/wiki) - var/obj/item/fish/prototype = /obj/item/fish/holo/checkered - return LIST_VALUE_WRAP_LISTS(list( - FISH_SOURCE_AUTOWIKI_NAME = "Holographic Fish", - FISH_SOURCE_AUTOWIKI_ICON = FISH_AUTOWIKI_FILENAME(prototype), - FISH_SOURCE_AUTOWIKI_WEIGHT = 100, - FISH_SOURCE_AUTOWIKI_NOTES = "Holographic fish disappears outside the Holodeck", - )) - -/datum/fish_source/holographic/reason_we_cant_fish(obj/item/fishing_rod/rod, mob/fisherman, atom/parent) - . = ..() - if(!istype(get_area(fisherman), /area/station/holodeck)) - return "You need to be inside the Holodeck to catch holographic fish." - -/datum/fish_source/holographic/pre_challenge_started(obj/item/fishing_rod/rod, mob/user, datum/fishing_challenge/challenge) - RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(check_area)) - -/datum/fish_source/holographic/proc/check_area(mob/user) - SIGNAL_HANDLER - if(!istype(get_area(user), /area/station/holodeck)) - interrupt_challenge("exited holodeck") - -/datum/fish_source/holographic/on_challenge_completed(datum/fishing_challenge/source, mob/user, success) - . = ..() - UnregisterSignal(user, COMSIG_MOVABLE_MOVED) - -/datum/fish_source/oil_well - background = "background_oil_well" - catalog_description = "Oil wells" - radial_state = "oil" - overlay_state = "portal_chasm" //close enough to pitch black - fish_table = list( - // FISHING_DUD = 5, BUBBERSTATION CHANGE: NO DUDS. HOLY SHIT. - /obj/item/fish/boned = 10, - /obj/item/stack/sheet/bone = 2, - /obj/item/clothing/gloves/bracer = 2, - /obj/effect/decal/remains/human = 2, - /obj/item/fish/mastodon = 1, - /obj/item/fishing_rod/telescopic/master = 1, - ) - fish_counts = list( - /obj/item/clothing/gloves/bracer = 1, - /obj/effect/decal/remains/human = 1, - /obj/item/fish/mastodon = 1, - /obj/item/fishing_rod/telescopic/master = 1, - ) - fish_count_regen = list( - /obj/item/fish/mastodon = 8 MINUTES, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 25 - -/datum/fish_source/hydro_tray - background = "background_tray" - catalog_description = "Hydroponics trays" - radial_state = "hydro" - overlay_state = "portal_tray" - fish_table = list( - FISHING_DUD = 25, - /obj/item/food/grown/grass = 25, - FISHING_RANDOM_SEED = 16, - /obj/item/seeds/grass = 6, - /obj/item/seeds/random = 1, - /mob/living/basic/frog = 1, - /mob/living/basic/axolotl = 1, - /mob/living/basic/turtle = 2, - ) - fish_counts = list( - /obj/item/food/grown/grass = 10, - /obj/item/seeds/grass = 4, - FISHING_RANDOM_SEED = 4, - /obj/item/seeds/random = 1, - /mob/living/basic/frog = 1, - /mob/living/basic/axolotl = 1, - ) - fishing_difficulty = FISHING_EASY_DIFFICULTY + 5 - -/datum/fish_source/hydro_tray/generate_wiki_contents(datum/autowiki/fish_sources/wiki) - var/list/data = list() - var/total_weight = 0 - var/critter_weight = 0 - var/seed_weight = 0 - var/other_weight = 0 - var/dud_weight = fish_table[FISHING_DUD] - for(var/content in fish_table) - var/weight = fish_table[content] - total_weight += weight - if(ispath(content, /mob/living)) - critter_weight += weight - else if(ispath(content, /obj/item/food/grown) || ispath(content, /obj/item/seeds) || content == FISHING_RANDOM_SEED) - seed_weight += weight - else if(content != FISHING_DUD) - other_weight += weight - - data += LIST_VALUE_WRAP_LISTS(list( - FISH_SOURCE_AUTOWIKI_NAME = FISH_SOURCE_AUTOWIKI_DUD, - FISH_SOURCE_AUTOWIKI_DUD = "", - FISH_SOURCE_AUTOWIKI_WEIGHT = PERCENT(dud_weight/total_weight), - FISH_SOURCE_AUTOWIKI_WEIGHT_SUFFIX = "WITHOUT A BAIT", - FISH_SOURCE_AUTOWIKI_NOTES = "", - )) - - data += LIST_VALUE_WRAP_LISTS(list( - FISH_SOURCE_AUTOWIKI_NAME = "Critter", - FISH_SOURCE_AUTOWIKI_DUD = "", - FISH_SOURCE_AUTOWIKI_WEIGHT = PERCENT(critter_weight/total_weight), - FISH_SOURCE_AUTOWIKI_NOTES = "A small creature, usually a frog or an axolotl", - )) - - if(other_weight) - data += LIST_VALUE_WRAP_LISTS(list( - FISH_SOURCE_AUTOWIKI_NAME = "Other Stuff", - FISH_SOURCE_AUTOWIKI_DUD = "", - FISH_SOURCE_AUTOWIKI_WEIGHT = PERCENT(other_weight/total_weight), - FISH_SOURCE_AUTOWIKI_NOTES = "Other stuff, who knows...", - )) - - return data - -/datum/fish_source/hydro_tray/reason_we_cant_fish(obj/item/fishing_rod/rod, mob/fisherman, atom/parent) - if(!istype(parent, /obj/machinery/hydroponics/constructable)) - return ..() - - var/obj/machinery/hydroponics/constructable/basin = parent - if(basin.waterlevel <= 0) - return "There's no water in [parent] to fish in." - if(basin.myseed) - return "There's a plant growing in [parent]." - - return ..() - -/datum/fish_source/hydro_tray/spawn_reward_from_explosion(atom/location, severity) - if(!istype(location, /obj/machinery/hydroponics/constructable)) - return ..() - - var/obj/machinery/hydroponics/constructable/basin = location - if(basin.myseed || basin.waterlevel <= 0) - return - return ..() - -/datum/fish_source/hydro_tray/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot, obj/item/fishing_rod/used_rod) - if(reward_path != FISHING_RANDOM_SEED) - var/mob/living/created_reward = ..() - if(istype(created_reward)) - created_reward.name = "small [created_reward.name]" - created_reward.update_transform(0.75) - return created_reward - - var/static/list/seeds_to_draw_from - if(isnull(seeds_to_draw_from)) - seeds_to_draw_from = subtypesof(/obj/item/seeds) - // These two are already covered innately - seeds_to_draw_from -= /obj/item/seeds/random - seeds_to_draw_from -= /obj/item/seeds/grass - // -1 yield are unharvestable plants so we don't care - // 20 rarirty is where most of the wacky plants are so let's ignore them - for(var/obj/item/seeds/seed_path as anything in seeds_to_draw_from) - if(initial(seed_path.yield) == -1 || initial(seed_path.rarity) >= PLANT_MODERATELY_RARE) - seeds_to_draw_from -= seed_path - - var/picked_path = pick(seeds_to_draw_from) - return new picked_path(spawn_location) - -/datum/fish_source/carp_rift - background = "background_carp_rift" - catalog_description = "Space Dragon Rifts" - radial_state = "carp" - overlay_state = "portal_rift" - fish_table = list( - FISHING_DUD = 3, - /obj/item/fish/baby_carp = 5, - /mob/living/basic/carp = 1, - /mob/living/basic/carp/passive = 1, - /mob/living/basic/carp/mega = 1, - /obj/item/clothing/head/fedora/carpskin = 1, - /obj/item/toy/plush/carpplushie = 1, - /obj/item/toy/plush/carpplushie/dehy_carp/peaceful = 1, - /obj/item/knife/carp = 1, - ) - fish_counts = list( - /mob/living/basic/carp/mega = 2, - ) - fish_count_regen = list( - /mob/living/basic/carp/mega = 9 MINUTES, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 28 - -/datum/fish_source/carp_rift - catalog_description = "Space Dragon Rifts" - radial_state = "carp" - fish_table = list( - FISHING_DUD = 3, - /obj/item/fish/baby_carp = 5, - /mob/living/basic/carp = 1, - /mob/living/basic/carp/passive = 1, - /mob/living/basic/carp/mega = 1, - /obj/item/clothing/head/fedora/carpskin = 1, - /obj/item/toy/plush/carpplushie = 1, - /obj/item/toy/plush/carpplushie/dehy_carp/peaceful = 1, - /obj/item/knife/carp = 1, - ) - fish_counts = list( - /mob/living/basic/carp/mega = 2, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 18 - -/datum/fish_source/deepfryer - background = "background_lavaland" - catalog_description = "Deep Fryers" - radial_state = "fryer" - overlay_state = "portal_fry" // literally resprited lava. better than nothing - fish_table = list( - /obj/item/food/badrecipe = 15, - /obj/item/food/nugget = 5, - /obj/item/fish/fryish = 40, - /obj/item/fish/fryish/fritterish = 4, - /obj/item/fish/fryish/nessie = 1, - ) - fish_counts = list( - /obj/item/fish/fryish = 10, - /obj/item/fish/fryish/fritterish = 4, - /obj/item/fish/fryish/nessie = 1, - ) - fish_count_regen = list( - /obj/item/fish/fryish = 2 MINUTES, - /obj/item/fish/fryish/fritterish = 6 MINUTES, - /obj/item/fish/fryish/nessie = 22 MINUTES, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 23 - -/datum/fish_source/surgery - catalog_description = "Surgery" - radial_state = "innards" - overlay_state = "portal_syndicate" //Didn't feel like spriting a new overlay. It's just all red anyway. - background = "background_lavaland" //Kinda red. - fish_table = list(FISHING_RANDOM_ORGAN = 10) - //This should get you below zero difficulty and skip the minigame phase, unless you're wearing something that counteracts this. - fishing_difficulty = -10 - //The range for waiting is also a bit narrower, so it cannot take as few as 3 seconds or as many as 25 to snatch an organ. - wait_time_range = list(6 SECONDS, 12 SECONDS) - -/datum/fish_source/surgery/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot, obj/item/fishing_rod/used_rod) - if(istype(fishing_spot, /obj/machinery/fishing_portal_generator)) - var/obj/machinery/fishing_portal_generator/portal = fishing_spot - fishing_spot = portal.current_linked_atom - if(!iscarbon(fishing_spot)) - var/random_type = pick(subtypesof(/obj/item/organ) - GLOB.prototype_organs) - return new random_type(spawn_location) - - var/mob/living/carbon/carbon = fishing_spot - var/list/possible_organs = list() - for(var/datum/surgery/organ_manipulation/operation in carbon.surgeries) - var/datum/surgery_step/manipulate_organs/manip_step = GLOB.surgery_steps[operation.steps[operation.status]] - if(!istype(manip_step)) - continue - for(var/obj/item/organ/organ in operation.operated_bodypart) - if(organ.organ_flags & ORGAN_UNREMOVABLE || !manip_step.can_use_organ(organ)) - continue - possible_organs |= organ - - if(!length(possible_organs)) - return null - var/obj/item/organ/chosen = pick(possible_organs) - chosen.Remove(chosen.owner) - chosen.forceMove(spawn_location) - return chosen - -/datum/fish_source/surgery/generate_wiki_contents(datum/autowiki/fish_sources/wiki) - var/list/data = list() - - data += LIST_VALUE_WRAP_LISTS(list( - FISH_SOURCE_AUTOWIKI_NAME = "Organs", - FISH_SOURCE_AUTOWIKI_DUD = "", - FISH_SOURCE_AUTOWIKI_WEIGHT = 100, - FISH_SOURCE_AUTOWIKI_NOTES = "A random organ from an ongoing organ manipulation surgery.", - )) - - return data - -#define RANDOM_AQUARIUM_FISH "random_aquarium_fish" - -/datum/fish_source/aquarium - catalog_description = "Aquariums" - radial_state = "fish_tank" - fish_table = list( - FISHING_DUD = 10, - ) - fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD|FISH_SOURCE_FLAG_IGNORE_HIDDEN_ON_CATALOG|FISH_SOURCE_FLAG_EXPLOSIVE_NONE - fishing_difficulty = FISHING_EASY_DIFFICULTY + 5 - -#undef RANDOM_AQUARIUM_FISH - -/datum/fish_source/aquarium/get_fish_table(atom/location, from_explosion = FALSE) - if(istype(location, /obj/machinery/fishing_portal_generator)) - var/obj/machinery/fishing_portal_generator/portal = location - location = portal.current_linked_atom - var/list/table = list() - for(var/obj/item/fish/fish in location) - if(fish.status == FISH_DEAD) //dead fish cannot be caught - continue - table[fish] = 10 - if(!length(table)) - return fish_table.Copy() - return table - -/datum/fish_source/aquarium/generate_wiki_contents(datum/autowiki/fish_sources/wiki) - var/list/data = list() - - data += LIST_VALUE_WRAP_LISTS(list( - FISH_SOURCE_AUTOWIKI_NAME = "Fish", - FISH_SOURCE_AUTOWIKI_DUD = "", - FISH_SOURCE_AUTOWIKI_WEIGHT = 100, - FISH_SOURCE_AUTOWIKI_NOTES = "Any fish currently inside the aquarium, be they alive or dead.", - )) - - return data - -/datum/fish_source/hot_spring - catalog_description = "Hot Springs" - radial_state = "onsen" - overlay_state = "portal_ocean" - fish_table = list( - FISHING_DUD = 20, - /obj/item/fish/bumpy = 10, - /obj/item/fish/sacabambaspis = 10, - /mob/living/basic/frog = 2, - /obj/item/fishing_rod/telescopic/master = 1, - ) - fish_counts = list( - /obj/item/fish/sacabambaspis = 5, - /obj/item/fishing_rod/telescopic/master = 2, - ) - fish_count_regen = list( - /obj/item/fish/sacabambaspis = 4 MINUTES, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30 - fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS - -/datum/fish_source/tizira - catalog_description = "Tiziran Sea" - radial_state = "planet" - overlay_state = "portal_beach" - fish_table = list( - FISHING_DUD = 10, - /obj/item/fish/needlefish = 5, - /obj/item/fish/armorfish = 5, - /obj/item/fish/gunner_jellyfish = 4, - /obj/item/fish/moonfish/dwarf = 2, - /obj/item/fish/moonfish = 2, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 - fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS - -/datum/fish_source/vending - background = "background_chasm" - catalog_description = "Vending Machines" - radial_state = "vending" - overlay_state = "portal_randomizer" - fish_table = list( - FISHING_DUD = 10, - ) - fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD|FISH_SOURCE_FLAG_EXPLOSIVE_NONE - fishing_difficulty = FISHING_EASY_DIFFICULTY //with some equipment and just enough dosh, you should be able to skip the minigame - -/datum/fish_source/vending/generate_wiki_contents(datum/autowiki/fish_sources/wiki) - var/list/data = list() - - data += LIST_VALUE_WRAP_LISTS(list( - FISH_SOURCE_AUTOWIKI_NAME = "Vending Products", - FISH_SOURCE_AUTOWIKI_DUD = "", - FISH_SOURCE_AUTOWIKI_WEIGHT = 100, - FISH_SOURCE_AUTOWIKI_NOTES = "Use chips, bills or coins as bait to get a semi-random vending product, depending on both its and the bait's monetary values", - )) - - return data - -/datum/fish_source/vending/get_modified_fish_table(obj/item/fishing_rod/rod, mob/fisherman, atom/location) - if(istype(location, /obj/machinery/fishing_portal_generator)) - var/obj/machinery/fishing_portal_generator/portal = location - location = portal.current_linked_atom - if(!istype(location, /obj/machinery/vending)) - return list() - - return get_vending_table(rod, fisherman, location) - -/datum/fish_source/vending/proc/get_vending_table(obj/item/fishing_rod/rod, mob/fisherman, obj/machinery/vending/location) - var/list/table = list() - ///Create a list of products, ordered by price from highest to lowest - var/list/products = location.product_records + location.coin_records + location.hidden_records - sortTim(products, GLOBAL_PROC_REF(cmp_vending_prices)) - - var/bait_value = rod.bait?.get_item_credit_value() || 1 - - var/highest_record_price = 0 - for(var/datum/data/vending_product/product_record as anything in products) - if(product_record.amount <= 0) - products -= product_record - table[FISHING_DUD] += PAYCHECK_LOWER //it gets harder the emptier the machine is - continue - if(!highest_record_price) - highest_record_price = product_record.price - var/high = max(highest_record_price, bait_value) - var/low = min(highest_record_price, bait_value) - - //the smaller the difference between product price and bait value, the more likely you're to get it. - table[product_record] = low/high * 1000 //multiply the value by 1000 for accuracy. pick_weight() doesn't work with zero decimals yet. - - add_risks(table, bait_value, highest_record_price, length(products) * 0.5) - return table - -/datum/fish_source/vending/proc/add_risks(list/table, bait_value, highest_price, malus_multiplier) - ///Using more than the money needed to buy the most expensive item (why would you do it?!) will remove the dud chance. - if(bait_value > highest_price) - table -= FISHING_DUD - else - //Makes using 1 cred chips with the minigame skip (negative fishing difficulty) a bit less cheesy. - var/malus = min(PAYCHECK_LOWER - bait_value, highest_price) - if(malus > 0) - table[FISHING_DUD] += malus * malus_multiplier - table[FISHING_VENDING_CHUCK] += malus * malus_multiplier - -#define FISHING_PRODUCT_DIFFICULTY_MULT 1.6 - -/datum/fish_source/vending/calculate_difficulty(datum/fishing_challenge/challenge, result, obj/item/fishing_rod/rod, mob/fisherman) - //Using less than a minimum paycheck is going to make the challenge a tad harder. - var/bait_value = rod.bait?.get_item_credit_value() - var/base_diff = PAYCHECK_LOWER - bait_value - return ..() + get_product_difficulty(base_diff, result) * FISHING_PRODUCT_DIFFICULTY_MULT - -/datum/fish_source/vending/proc/get_product_difficulty(diff, datum/result) - if(istype(result, /datum/data/vending_product)) - var/datum/data/vending_product/product = result - diff = min(diff, product.price) // low priced items are easier to catch anyway - return diff - -#undef FISHING_PRODUCT_DIFFICULTY_MULT - -/datum/fish_source/vending/dispense_reward(reward_path, mob/fisherman, atom/fishing_spot, obj/item/fishing_rod/rod) - var/obj/machinery/vending/vending = fishing_spot - if(istype(fishing_spot, /obj/machinery/fishing_portal_generator)) - var/obj/machinery/fishing_portal_generator/portal = fishing_spot - vending = portal.current_linked_atom - - if(reward_path == FISHING_VENDING_CHUCK) - if(fishing_spot != vending) //fishing portals - vending.forceMove(get_turf(fishing_spot)) - vending.tilt(fisherman, range = 4) - return null //Don't spawn a reward at all - - var/atom/movable/reward = ..() - if(reward) - var/creds_value = rod.bait?.get_item_credit_value() - if(creds_value) - vending.credits_contained += round(creds_value * VENDING_CREDITS_COLLECTION_AMOUNT) - qdel(rod.bait) - return reward - -/datum/fish_source/vending/spawn_reward(reward_path, atom/spawn_location, obj/machinery/vending/fishing_spot, obj/item/fishing_rod/used_rod) - if(istype(fishing_spot, /obj/machinery/fishing_portal_generator)) - var/obj/machinery/fishing_portal_generator/portal = fishing_spot - fishing_spot = portal.current_linked_atom - if(!istype(fishing_spot)) - return null - return spawn_vending_reward(reward_path, spawn_location, fishing_spot) - -/datum/fish_source/vending/proc/spawn_vending_reward(reward_path, atom/spawn_location, obj/machinery/vending/fishing_spot) - var/datum/data/vending_product/product_record = reward_path - if(!istype(product_record) || product_record.amount <= 0) - return null - return fishing_spot.dispense(product_record, spawn_location) - -/datum/fish_source/vending/pre_challenge_started(obj/item/fishing_rod/rod, mob/user, datum/fishing_challenge/challenge) - RegisterSignal(rod, COMSIG_FISHING_ROD_CAUGHT_FISH, PROC_REF(on_reward)) - -/datum/fish_source/vending/on_challenge_completed(mob/user, datum/fishing_challenge/challenge, success) - . = ..() - UnregisterSignal(challenge.used_rod, COMSIG_FISHING_ROD_CAUGHT_FISH) - -/datum/fish_source/vending/proc/on_reward(obj/item/fishing_rod/rod, atom/movable/reward, mob/user) - SIGNAL_HANDLER - if(reward && !QDELETED(rod.bait) && rod.bait.get_item_credit_value()) //you pay for what you get - qdel(rod.bait) // fishing_rod.Exited() will handle clearing the hard ref. - -///subtype of fish_source/vending for custom vending machines -/datum/fish_source/vending/custom - catalog_description = null //no duplicate entries on autowiki or catalog - -/datum/fish_source/vending/custom/get_vending_table(obj/item/fishing_rod/rod, mob/fisherman, obj/machinery/vending/location) - var/list/table = list() - ///Create a list of products, ordered by price from highest to lowest - var/list/products = location.vending_machine_input.Copy() - sortTim(products, GLOBAL_PROC_REF(cmp_item_vending_prices)) - - var/bait_value = rod.bait?.get_item_credit_value() || 1 - - var/highest_record_price = 0 - for(var/obj/item/stocked as anything in products) - if(location.vending_machine_input[stocked] <= 0) - products -= stocked - table[FISHING_DUD] += PAYCHECK_LOWER //it gets harder the emptier the machine is - continue - if(!highest_record_price) - highest_record_price = stocked.custom_price - var/high = max(highest_record_price, bait_value) - var/low = min(highest_record_price, bait_value) - - //the smaller the difference between product price and bait value, the more likely you're to get it. - table[stocked] = low/high * 1000 //multiply the value by 1000 for accuracy. pick_weight() doesn't work with zero decimals yet. - - add_risks(table, bait_value, highest_record_price, length(products) * 0.5) - return table - -/datum/fish_source/vending/custom/get_product_difficulty(diff, datum/result) - if(isitem(result)) - var/obj/item/product = result - diff = min(diff, product.custom_price) - return diff - -/datum/fish_source/vending/custom/spawn_vending_reward(obj/item/reward, atom/spawn_location, obj/machinery/vending/fishing_spot) - if(!isitem(reward)) - return null - reward.forceMove(spawn_location) - return reward - -/datum/fish_source/dimensional_rift - background = "background_mansus" - catalog_description = null // it's a secret (sorta, I know you're reading this) - radial_state = "cursed" // placeholder - overlay_state = "portal_mansus" - fish_table = list( - FISHING_INFLUENCE = 6, - FISHING_RANDOM_ARM = 3, - /obj/item/fish/starfish/chrystarfish = 7, - /obj/item/fish/dolphish = 7, - /obj/item/fish/flumpulus = 7, - /obj/item/fish/gullion = 7, - /obj/item/fish/mossglob = 3, - /obj/item/fish/babbelfish = 1, - /mob/living/basic/heretic_summon/fire_shark/wild = 3, - /obj/item/eldritch_potion/crucible_soul = 1, - /obj/item/eldritch_potion/duskndawn = 1, - /obj/item/eldritch_potion/wounded = 1, - /obj/item/reagent_containers/cup/beaker/eldritch = 2, - ) - fish_counts = list( - /obj/item/fish/mossglob = 3, - /obj/item/fish/babbelfish = 1, - /mob/living/basic/heretic_summon/fire_shark/wild = 3, - /obj/item/eldritch_potion/crucible_soul = 1, - /obj/item/eldritch_potion/duskndawn = 1, - /obj/item/eldritch_potion/wounded = 1, - /obj/item/reagent_containers/cup/beaker/eldritch = 2, - ) - fish_count_regen = list( - /obj/item/fish/mossglob = 3 MINUTES, - /obj/item/fish/babbelfish = 5 MINUTES, - /mob/living/basic/heretic_summon/fire_shark/wild = 6 MINUTES, - /obj/item/eldritch_potion/crucible_soul = 5 MINUTES, - /obj/item/eldritch_potion/duskndawn = 5 MINUTES, - /obj/item/eldritch_potion/wounded = 5 MINUTES, - /obj/item/reagent_containers/cup/beaker/eldritch = 2.5 MINUTES, - ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 35 - fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_NONE - -/** - * You can fish up random arms, but you can also fish up arms (or heads, from TK) that were eaten at some point by a rift. - * No need to check for what the location is, just get its limbs from its contents. It should always be a visible heretic rift. Should. - */ -/datum/fish_source/dimensional_rift/get_fish_table(atom/location, from_explosion = FALSE) - . = ..() - if(istype(location, /obj/machinery/fishing_portal_generator)) - var/obj/machinery/fishing_portal_generator/portal = location - location = portal.current_linked_atom - - for(var/obj/item/eaten_thing in location.get_all_contents()) - .[eaten_thing] = 6 - -/datum/fish_source/dimensional_rift/on_challenge_completed(mob/user, datum/fishing_challenge/challenge, success) - . = ..() - - if(!success) - if(IS_HERETIC(user)) - return - if(!user.get_active_hand()) - return influence_fished(user, challenge) - on_epic_fail(user, challenge, success) - return - - - if(challenge.reward_path == FISHING_INFLUENCE) - influence_fished(user, challenge) - return - - return - -/** - * Override for influences and arms. - */ -/datum/fish_source/dimensional_rift/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot) - switch(reward_path) - if(FISHING_INFLUENCE) - return - if(FISHING_RANDOM_ARM) - return arm_fished(spawn_location) - return ..() - -/** - * This happens when a non-heretic fails the minigame. Their arm is ripped straight off and thrown into the rift. - */ -/datum/fish_source/dimensional_rift/proc/on_epic_fail(mob/user, datum/fishing_challenge/challenge, success) - challenge.location.visible_message(span_danger("[challenge.location]'s tendrils lash out and pull on [user]'s [user.get_active_hand()], ripping it clean off and throwing it towards itself!")) - var/obj/item/bodypart/random_arm = user.get_active_hand() - random_arm.dismember(BRUTE, FALSE) - random_arm.forceMove(user.drop_location()) - random_arm.throw_at(challenge.location, 7, 1, null, TRUE) - // Abstract items shouldn't be thrown in! - if(!(challenge.used_rod.item_flags & ABSTRACT)) - challenge.used_rod.forceMove(user.drop_location()) - challenge.used_rod.throw_at(challenge.location, 7, 1, null, TRUE) - addtimer(CALLBACK(src, PROC_REF(check_item_location), challenge.location, random_arm, challenge.used_rod), 1 SECONDS) - -/datum/fish_source/dimensional_rift/proc/check_item_location(atom/location, obj/item/bodypart/random_arm, obj/item/used_rod) - for(var/obj/item/thingy in get_turf(location)) - // If it's not in the list and it's not what we know as the used rod, skip. - // This lets fishing gloves be dragged in as well. I mean honestly if you try fishing in here with those you should just Fucking Die but that's for later. - if(!is_type_in_list(thingy, list(/obj/item/bodypart, /obj/item/fishing_rod)) && (thingy != used_rod)) - continue - thingy.forceMove(location) - location.visible_message(span_danger("Tendrils lash out from [location] and greedily drag [thingy] inwards. You're probably never seeing [thingy] again.")) - -/datum/fish_source/dimensional_rift/proc/arm_fished(atom/spawn_location) - var/obj/item/bodypart/arm/random_arm = pick(subtypesof(/obj/item/bodypart/arm)) - random_arm = new random_arm(spawn_location) - spawn_location.visible_message(span_notice("A [random_arm] is snatched up from beneath the eldritch depths of [spawn_location]!")) - return random_arm - -/datum/fish_source/dimensional_rift/proc/influence_fished(mob/user, datum/fishing_challenge/challenge) - if(challenge.reward_path != FISHING_INFLUENCE) - return - var/mob/living/carbon/human/human_user - if(ishuman(user)) - human_user = user - - user.visible_message(span_danger("[user] reels [user.p_their()] [challenge.used_rod] in, catching a glimpse into the world beyond!"), span_notice("You catch.. a glimpse into the workings of the Mansus itself!")) - // Heretics that fish in the rift gain knowledge. - if(IS_HERETIC(user)) - human_user?.add_mood_event("rift fishing", /datum/mood_event/rift_fishing) - var/obj/effect/heretic_influence/fishfluence = challenge.location - // But only if it's an open rift - if(!istype(fishfluence)) - to_chat(user, span_notice("You glimpse something fairly uninteresting.")) - return - fishfluence.after_drain(user) - var/datum/antagonist/heretic/heretic_datum = GET_HERETIC(user) - if(heretic_datum) - heretic_datum.knowledge_points++ - to_chat(user, "[span_hear("You hear a whisper...")] [span_hypnophrase("THE HIGHER I RISE, THE MORE I FISH.")]") - // They can also gain an extra influence point if they infused their rod. - if(HAS_TRAIT(challenge.used_rod, TRAIT_ROD_MANSUS_INFUSED)) - heretic_datum.knowledge_points++ - to_chat(user, span_boldnotice("Your infused rod improves your knowledge gain!")) - return - - // Non-heretics instead go crazy - human_user?.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10, 190) - human_user?.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus) - human_user?.do_jitter_animation(50) - // Hand fires at them from the location - fire_curse_hand(user, get_turf(challenge.location)) diff --git a/code/modules/fishing/sources/subtypes/fishing_portal_machine.dm b/code/modules/fishing/sources/subtypes/fishing_portal_machine.dm new file mode 100644 index 00000000000..f2db96d77d0 --- /dev/null +++ b/code/modules/fishing/sources/subtypes/fishing_portal_machine.dm @@ -0,0 +1,218 @@ +//This file contains sources that accessed or unlocked for the fishing portal generator + +/datum/fish_source/portal + fish_table = list( + FISHING_DUD = 7, + /obj/item/fish/goldfish = 10, + /obj/item/fish/guppy = 10, + /obj/item/fish/angelfish = 10, + /obj/item/fish/perch = 5, + /obj/item/fish/goldfish/three_eyes = 3, + /obj/item/fish/plasmatetra = 3, + ) + catalog_description = "Aquarium dimension (Fishing portal generator)" + radial_state = "fish_tank" + associated_safe_turfs = list(/turf/open/water) + safe_turfs_blacklist = list(/turf/open/water/hot_spring, /turf/open/water/beach) + ///The name of this option shown in the radial menu on the fishing portal generator + var/radial_name = "Aquarium" + +/datum/fish_source/portal/beach + fish_table = list( + FISHING_DUD = 7, + /obj/effect/spawner/message_in_a_bottle = 3, + /obj/item/fish/clownfish = 10, + /obj/item/fish/pufferfish = 10, + /obj/item/fish/cardinal = 10, + /obj/item/fish/greenchromis = 10, + /obj/item/fish/squid = 8, + /obj/item/fish/plaice = 8, + /obj/item/survivalcapsule/fishing = 1, + ) + fish_counts = list( + /obj/item/survivalcapsule/fishing = 1, + ) + catalog_description = "Beach dimension (Fishing portal generator)" + radial_name = "Beach" + radial_state = "palm_beach" + overlay_state = "portal_beach" + associated_safe_turfs = list(/turf/open/water/beach) + +/datum/fish_source/portal/beach/on_fishing_spot_init(datum/component/fishing_spot/spot) + ADD_TRAIT(spot.parent, TRAIT_MESSAGE_IN_A_BOTTLE_LOCATION, INNATE_TRAIT) + +/datum/fish_source/portal/beach/on_fishing_spot_del(datum/component/fishing_spot/spot) + REMOVE_TRAIT(spot.parent, TRAIT_MESSAGE_IN_A_BOTTLE_LOCATION, INNATE_TRAIT) + +/datum/fish_source/portal/chasm + background = "background_chasm" + fish_table = list( + FISHING_DUD = 5, + /obj/item/fish/chasm_crab = 10, + /obj/item/fish/boned = 5, + /obj/item/stack/sheet/bone = 5, + ) + catalog_description = "Chasm dimension (Fishing portal generator)" + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 + radial_name = "Chasm" + overlay_state = "portal_chasm" + radial_state = "ground_hole" + +/datum/fish_source/portal/ocean + fish_table = list( + FISHING_DUD = 3, + /obj/effect/spawner/message_in_a_bottle = 2, + /obj/item/fish/lanternfish = 5, + /obj/item/fish/firefish = 5, + /obj/item/fish/gunner_jellyfish = 5, + /obj/item/fish/moonfish/dwarf = 4, + /obj/item/fish/needlefish = 5, + /obj/item/fish/armorfish = 5, + /obj/item/fish/zipzap = 5, + /obj/item/fish/stingray = 4, + /obj/item/fish/monkfish = 4, + /obj/item/fish/swordfish = 3, + /obj/item/fish/moonfish = 1, + ) + fish_counts = list( + /obj/item/fish/swordfish = 2, + ) + fish_count_regen = list( + /obj/item/fish/swordfish = 5 MINUTES, + ) + catalog_description = "Ocean dimension (Fishing portal generator)" + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 + radial_name = "Ocean" + overlay_state = "portal_ocean" + radial_state = "seaboat" + associated_safe_turfs = list(/turf/open/water/beach) + +/datum/fish_source/portal/ocean/on_fishing_spot_init(datum/component/fishing_spot/spot) + ADD_TRAIT(spot.parent, TRAIT_MESSAGE_IN_A_BOTTLE_LOCATION, INNATE_TRAIT) + +/datum/fish_source/portal/ocean/on_fishing_spot_del(datum/component/fishing_spot/spot) + REMOVE_TRAIT(spot.parent, TRAIT_MESSAGE_IN_A_BOTTLE_LOCATION, INNATE_TRAIT) + +/datum/fish_source/portal/hyperspace + background = "background_space" + fish_table = list( + FISHING_DUD = 5, + /obj/item/fish/starfish = 6, + /obj/item/fish/baby_carp = 6, + /obj/item/stack/ore/bluespace_crystal = 2, + /mob/living/basic/carp = 2, + ) + fish_counts = list( + /obj/item/stack/ore/bluespace_crystal = 10, + ) + catalog_description = "Hyperspace dimension (Fishing portal generator)" + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 + radial_name = "Hyperspace" + overlay_state = "portal_hyperspace" + radial_state = "space_rocket" + associated_safe_turfs = list(/turf/open/space) + +///Unlocked by emagging the fishing portal generator with an emag. +/datum/fish_source/portal/syndicate + background = "background_lavaland" + fish_table = list( + FISHING_DUD = 5, + /obj/item/fish/donkfish = 5, + /obj/item/fish/emulsijack = 5, + /obj/item/fish/jumpercable = 5, + /obj/item/fish/chainsawfish = 2, + /obj/item/fish/pike/armored = 2, + ) + fish_counts = list( + /obj/item/fish/chainsawfish = 1, + /obj/item/fish/pike/armored = 1, + ) + fish_count_regen = list( + /obj/item/fish/chainsawfish = 7 MINUTES, + /obj/item/fish/pike/armored = 7 MINUTES, + ) + catalog_description = "Syndicate dimension (Fishing portal generator)" + radial_name = "Syndicate" + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 25 + overlay_state = "portal_syndicate" + radial_state = "syndi_snake" + associated_safe_turfs = list(/turf/open/water) + safe_turfs_blacklist = list(/turf/open/water/hot_spring, /turf/open/water/beach) + +/** + * A special portal fish source which fish table is populated on init with the contents of all + * portal fish sources, except for FISHING_DUD, and a couple more caveats. + */ +/datum/fish_source/portal/random + fish_table = null //It's populated the first time the source is loaded on a fishing portal generator. + catalog_description = null // it'd make a bad entry in the catalog. + radial_name = "Randomizer" + overlay_state = "portal_randomizer" + radial_state = "misaligned_question_mark" + fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD + var/static/list/all_portal_fish_sources_at_once + +///Generate the fish table if we don't have one already. +/datum/fish_source/portal/random/on_fishing_spot_init(datum/component/fishing_spot/spot) + if(fish_table) + return + + ///rewards not found in other fishing portals + fish_table = list( + /obj/item/fish/holo/checkered = 1, + ) + + for(var/portal_type in GLOB.preset_fish_sources) + if(portal_type == type || !ispath(portal_type, /datum/fish_source/portal)) + continue + var/datum/fish_source/portal/preset_portal = GLOB.preset_fish_sources[portal_type] + fish_table |= preset_portal.fish_table + + ///We don't serve duds. + fish_table -= FISHING_DUD + + for(var/reward_path in fish_table) + fish_table[reward_path] = rand(1, 4) + +///Difficulty has to be calculated before the rest, because of how it influences jump chances +/datum/fish_source/portal/random/calculate_difficulty(datum/fishing_challenge/challenge, result, obj/item/fishing_rod/rod, mob/fisherman) + . = ..() + . += rand(-10, 15) + +///In the spirit of randomness, we skew a few values here and there +/datum/fish_source/portal/random/pre_challenge_started(obj/item/fishing_rod/rod, mob/user, datum/fishing_challenge/challenge) + challenge.bait_bounce_mult = max(challenge.bait_bounce_mult + rand(-3, 3) * 0.1, 0.1) + challenge.completion_loss = max(challenge.completion_loss + rand(-2, 2), 0) + challenge.completion_gain = max(challenge.completion_gain + rand(-1, 1), 2) + challenge.mover.short_jump_velocity_limit += rand(-100, 100) + challenge.mover.long_jump_velocity_limit += rand(-100, 100) + var/static/list/active_effects = bitfield_to_list(FISHING_MINIGAME_ACTIVE_EFFECTS) + for(var/effect in active_effects) + if(prob(30)) + challenge.special_effects |= effect + RegisterSignal(challenge, COMSIG_FISHING_CHALLENGE_MOVER_INITIALIZED, PROC_REF(randomize_mover_velocity)) + +/datum/fish_source/portal/random/proc/randomize_mover_velocity(datum/source, datum/fish_movement/mover) + SIGNAL_HANDLER + mover.short_jump_velocity_limit += rand(-100, 100) + mover.long_jump_velocity_limit += rand(-100, 100) + +///Cherry on top, fish caught from the randomizer portal also have (almost completely) random traits +/datum/fish_source/portal/random/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot, obj/item/fishing_rod/used_rod) + if(!ispath(reward_path, /obj/item/fish)) + return ..() + + var/static/list/weighted_traits + if(!weighted_traits) + weighted_traits = list() + for(var/trait_type as anything in GLOB.fish_traits) + var/datum/fish_trait/trait = GLOB.fish_traits[trait_type] + weighted_traits[trait.type] = round(trait.inheritability**2/100) + + var/obj/item/fish/caught_fish = new reward_path(spawn_location, FALSE) + var/list/new_traits = list() + for(var/iteration in 1 to rand(1, 4)) + new_traits |= pick_weight(weighted_traits) + caught_fish.inherit_traits(new_traits) + caught_fish.randomize_size_and_weight(deviation = 0.3) + return caught_fish diff --git a/code/modules/fishing/sources/subtypes/mining_ruins.dm b/code/modules/fishing/sources/subtypes/mining_ruins.dm new file mode 100644 index 00000000000..6ae88b259d8 --- /dev/null +++ b/code/modules/fishing/sources/subtypes/mining_ruins.dm @@ -0,0 +1,125 @@ +//Fish sources that're usually found in ruins or on mining z-levels should go here + +/datum/fish_source/cursed_spring + catalog_description = null //it's a secret (sorta, I know you're reading this) + radial_state = "cursed" + fish_table = list( + FISHING_DUD = 2, + /obj/item/fish/soul = 3, + /obj/item/fish/skin_crab = 3, + /obj/item/fishing_rod/telescopic/master = 1, + ) + fish_counts = list( + /obj/item/fishing_rod/telescopic/master = 1, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 35 + fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS + associated_safe_turfs = list(/turf/open/water/hot_spring) + +/datum/fish_source/chasm + catalog_description = "Chasm depths" + background = "background_chasm" + radial_state = "ground_hole" + overlay_state = "portal_chasm" + fish_table = list( + FISHING_DUD = 5, + /obj/item/fish/chasm_crab = 15, + /datum/chasm_detritus = 30, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15 + fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_NONE + +/datum/fish_source/chasm/on_start_fishing(obj/item/fishing_rod/rod, mob/fisherman, atom/parent) + . = ..() + if(istype(rod.hook, /obj/item/fishing_hook/rescue)) + to_chat(fisherman, span_notice("The rescue hook falls straight down the chasm! Hopefully it catches a corpse.")) + return + to_chat(fisherman, span_danger("Your fishing hook makes a soft 'thud' noise as it gets stuck on the wall of the chasm. It doesn't look like it's going to catch much of anything, except maybe some detritus.")) + +/datum/fish_source/chasm/roll_reward(obj/item/fishing_rod/rod, mob/fisherman) + var/rolled_reward = ..() + + if(!rod.hook || !ispath(rolled_reward, /datum/chasm_detritus)) + return rolled_reward + + return rod.hook.chasm_detritus_type + +/datum/fish_source/lavaland + catalog_description = "Lava vents" + background = "background_lavaland" + radial_state = "lava" + overlay_state = "portal_lava" + fish_table = list( + FISHING_DUD = 5, + /obj/item/stack/ore/slag = 20, + /obj/item/fish/lavaloop = 15, + /obj/structure/closet/crate/necropolis/tendril = 1, + /obj/effect/mob_spawn/corpse/human/charredskeleton = 1 + ) + fish_counts = list( + /obj/structure/closet/crate/necropolis/tendril = 1 + ) + fish_count_regen = list( + /obj/structure/closet/crate/necropolis/tendril = 27 MINUTES, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 + fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS + associated_safe_turfs = list(/turf/open/lava) + safe_turfs_blacklist = list(/turf/open/lava/plasma) + +/datum/fish_source/lavaland/reason_we_cant_fish(obj/item/fishing_rod/rod, mob/fisherman, atom/parent) + . = ..() + if(!HAS_TRAIT(rod, TRAIT_ROD_LAVA_USABLE)) + return "You'll need reinforced fishing line to fish in there." + +/datum/fish_source/lavaland/icemoon + background = "background_plasma" + catalog_description = "Liquid plasma vents" + radial_state = "plasma" + fish_table = list( + FISHING_DUD = 5, + /obj/item/fish/chasm_crab/ice = 30, + /obj/item/fish/lavaloop/plasma_river = 30, + /obj/item/coin/plasma = 6, + /obj/item/stack/ore/plasma = 6, + /obj/effect/decal/remains/plasma = 2, + /obj/item/stack/sheet/mineral/runite = 2, + /obj/item/stack/sheet/mineral/adamantine = 2, + /mob/living/basic/mining/lobstrosity = 1, + /mob/living/basic/mining/lobstrosity/juvenile = 1, + ) + fish_counts = list( + /obj/item/stack/sheet/mineral/adamantine = 3, + /obj/item/stack/sheet/mineral/runite = 2, + ) + fish_count_regen = list( + /obj/item/stack/sheet/mineral/adamantine = 8 MINUTES, + /obj/item/stack/sheet/mineral/runite = 10 MINUTES, + ) + overlay_state = "portal_plasma" + associated_safe_turfs = list(/turf/open/lava/plasma) + +/datum/fish_source/oil_well + background = "background_oil_well" + catalog_description = "Oil wells" + radial_state = "oil" + overlay_state = "portal_chasm" //close enough to pitch black + fish_table = list( + FISHING_DUD = 5, + /obj/item/fish/boned = 10, + /obj/item/stack/sheet/bone = 2, + /obj/item/clothing/gloves/bracer = 2, + /obj/effect/decal/remains/human = 2, + /obj/item/fish/mastodon = 1, + /obj/item/fishing_rod/telescopic/master = 1, + ) + fish_counts = list( + /obj/item/clothing/gloves/bracer = 1, + /obj/effect/decal/remains/human = 1, + /obj/item/fish/mastodon = 1, + /obj/item/fishing_rod/telescopic/master = 1, + ) + fish_count_regen = list( + /obj/item/fish/mastodon = 8 MINUTES, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 25 diff --git a/code/modules/fishing/sources/subtypes/rifts.dm b/code/modules/fishing/sources/subtypes/rifts.dm new file mode 100644 index 00000000000..b9d4a7f39e1 --- /dev/null +++ b/code/modules/fishing/sources/subtypes/rifts.dm @@ -0,0 +1,173 @@ +//Fish sources that're usually related to rifts or anomalies go here. + +/datum/fish_source/carp_rift + background = "background_carp_rift" + catalog_description = "Space Dragon Rifts" + radial_state = "carp" + overlay_state = "portal_rift" + fish_table = list( + FISHING_DUD = 3, + /obj/item/fish/baby_carp = 5, + /mob/living/basic/carp = 1, + /mob/living/basic/carp/passive = 1, + /mob/living/basic/carp/mega = 1, + /obj/item/clothing/head/fedora/carpskin = 1, + /obj/item/toy/plush/carpplushie = 1, + /obj/item/toy/plush/carpplushie/dehy_carp/peaceful = 1, + /obj/item/knife/carp = 1, + ) + fish_counts = list( + /mob/living/basic/carp/mega = 2, + ) + fish_count_regen = list( + /mob/living/basic/carp/mega = 9 MINUTES, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 28 + associated_safe_turfs = list(/turf/open/space) + +/datum/fish_source/dimensional_rift + background = "background_mansus" + catalog_description = null // it's a secret (sorta, I know you're reading this) + radial_state = "cursed" // placeholder + overlay_state = "portal_mansus" + fish_table = list( + FISHING_INFLUENCE = 6, + FISHING_RANDOM_ARM = 3, + /obj/item/fish/starfish/chrystarfish = 7, + /obj/item/fish/dolphish = 7, + /obj/item/fish/flumpulus = 7, + /obj/item/fish/gullion = 7, + /obj/item/fish/mossglob = 3, + /obj/item/fish/babbelfish = 1, + /mob/living/basic/heretic_summon/fire_shark/wild = 3, + /obj/item/eldritch_potion/crucible_soul = 1, + /obj/item/eldritch_potion/duskndawn = 1, + /obj/item/eldritch_potion/wounded = 1, + /obj/item/reagent_containers/cup/beaker/eldritch = 2, + ) + fish_counts = list( + /obj/item/fish/mossglob = 3, + /obj/item/fish/babbelfish = 1, + /mob/living/basic/heretic_summon/fire_shark/wild = 3, + /obj/item/eldritch_potion/crucible_soul = 1, + /obj/item/eldritch_potion/duskndawn = 1, + /obj/item/eldritch_potion/wounded = 1, + /obj/item/reagent_containers/cup/beaker/eldritch = 2, + ) + fish_count_regen = list( + /obj/item/fish/mossglob = 3 MINUTES, + /obj/item/fish/babbelfish = 5 MINUTES, + /mob/living/basic/heretic_summon/fire_shark/wild = 6 MINUTES, + /obj/item/eldritch_potion/crucible_soul = 5 MINUTES, + /obj/item/eldritch_potion/duskndawn = 5 MINUTES, + /obj/item/eldritch_potion/wounded = 5 MINUTES, + /obj/item/reagent_containers/cup/beaker/eldritch = 2.5 MINUTES, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 35 + fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_NONE + +/** + * You can fish up random arms, but you can also fish up arms (or heads, from TK) that were eaten at some point by a rift. + * No need to check for what the location is, just get its limbs from its contents. It should always be a visible heretic rift. Should. + */ +/datum/fish_source/dimensional_rift/get_fish_table(atom/location, from_explosion = FALSE) + . = ..() + if(istype(location, /obj/machinery/fishing_portal_generator)) + var/obj/machinery/fishing_portal_generator/portal = location + location = portal.current_linked_atom + + for(var/obj/item/eaten_thing in location.get_all_contents()) + .[eaten_thing] = 6 + +/datum/fish_source/dimensional_rift/on_challenge_completed(mob/user, datum/fishing_challenge/challenge, success) + . = ..() + + if(!success) + if(IS_HERETIC(user)) + return + if(!user.get_active_hand()) + return influence_fished(user, challenge) + on_epic_fail(user, challenge, success) + return + + + if(challenge.reward_path == FISHING_INFLUENCE) + influence_fished(user, challenge) + return + + return + +/** + * Override for influences and arms. + */ +/datum/fish_source/dimensional_rift/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot) + switch(reward_path) + if(FISHING_INFLUENCE) + return + if(FISHING_RANDOM_ARM) + return arm_fished(spawn_location) + return ..() + +/** + * This happens when a non-heretic fails the minigame. Their arm is ripped straight off and thrown into the rift. + */ +/datum/fish_source/dimensional_rift/proc/on_epic_fail(mob/user, datum/fishing_challenge/challenge, success) + challenge.location.visible_message(span_danger("[challenge.location]'s tendrils lash out and pull on [user]'s [user.get_active_hand()], ripping it clean off and throwing it towards itself!")) + var/obj/item/bodypart/random_arm = user.get_active_hand() + random_arm.dismember(BRUTE, FALSE) + random_arm.forceMove(user.drop_location()) + random_arm.throw_at(challenge.location, 7, 1, null, TRUE) + // Abstract items shouldn't be thrown in! + if(!(challenge.used_rod.item_flags & ABSTRACT)) + challenge.used_rod.forceMove(user.drop_location()) + challenge.used_rod.throw_at(challenge.location, 7, 1, null, TRUE) + addtimer(CALLBACK(src, PROC_REF(check_item_location), challenge.location, random_arm, challenge.used_rod), 1 SECONDS) + +/datum/fish_source/dimensional_rift/proc/check_item_location(atom/location, obj/item/bodypart/random_arm, obj/item/used_rod) + for(var/obj/item/thingy in get_turf(location)) + // If it's not in the list and it's not what we know as the used rod, skip. + // This lets fishing gloves be dragged in as well. I mean honestly if you try fishing in here with those you should just Fucking Die but that's for later. + if(!is_type_in_list(thingy, list(/obj/item/bodypart, /obj/item/fishing_rod)) && (thingy != used_rod)) + continue + thingy.forceMove(location) + location.visible_message(span_danger("Tendrils lash out from [location] and greedily drag [thingy] inwards. You're probably never seeing [thingy] again.")) + +/datum/fish_source/dimensional_rift/proc/arm_fished(atom/spawn_location) + var/obj/item/bodypart/arm/random_arm = pick(subtypesof(/obj/item/bodypart/arm)) + random_arm = new random_arm(spawn_location) + spawn_location.visible_message(span_notice("A [random_arm] is snatched up from beneath the eldritch depths of [spawn_location]!")) + return random_arm + +/datum/fish_source/dimensional_rift/proc/influence_fished(mob/user, datum/fishing_challenge/challenge) + if(challenge.reward_path != FISHING_INFLUENCE) + return + var/mob/living/carbon/human/human_user + if(ishuman(user)) + human_user = user + + user.visible_message(span_danger("[user] reels [user.p_their()] [challenge.used_rod] in, catching a glimpse into the world beyond!"), span_notice("You catch.. a glimpse into the workings of the Mansus itself!")) + // Heretics that fish in the rift gain knowledge. + if(IS_HERETIC(user)) + human_user?.add_mood_event("rift fishing", /datum/mood_event/rift_fishing) + var/obj/effect/heretic_influence/fishfluence = challenge.location + // But only if it's an open rift + if(!istype(fishfluence)) + to_chat(user, span_notice("You glimpse something fairly uninteresting.")) + return + fishfluence.after_drain(user) + var/datum/antagonist/heretic/heretic_datum = GET_HERETIC(user) + if(heretic_datum) + heretic_datum.knowledge_points++ + to_chat(user, "[span_hear("You hear a whisper...")] [span_hypnophrase("THE HIGHER I RISE, THE MORE I FISH.")]") + // They can also gain an extra influence point if they infused their rod. + if(HAS_TRAIT(challenge.used_rod, TRAIT_ROD_MANSUS_INFUSED)) + heretic_datum.knowledge_points++ + to_chat(user, span_boldnotice("Your infused rod improves your knowledge gain!")) + return + + // Non-heretics instead go crazy + human_user?.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10, 190) + human_user?.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus) + human_user?.do_jitter_animation(50) + // Hand fires at them from the location + fire_curse_hand(user, get_turf(challenge.location)) diff --git a/code/modules/fishing/sources/subtypes/structures.dm b/code/modules/fishing/sources/subtypes/structures.dm new file mode 100644 index 00000000000..3d9f11e3c35 --- /dev/null +++ b/code/modules/fishing/sources/subtypes/structures.dm @@ -0,0 +1,423 @@ +//Fish sources that're usually associated with structures or machinery. + +/datum/fish_source/moisture_trap + background = "background_dank" + catalog_description = "Moisture trap basins" + radial_state = "garbage" + overlay_state = "portal_river" // placeholder + fish_table = list( + FISHING_DUD = 20, + /obj/item/fish/ratfish = 10, + /obj/item/fish/slimefish = 4, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 + +/datum/fish_source/toilet + background = "background_dank" + catalog_description = "Station toilets" + radial_state = "toilet" + duds = list("ewww... nothing", "it was nothing", "it was toilet paper", "it was flushed away", "the hook is empty", "where's the damn money?!") + overlay_state = "portal_river" // placeholder + fish_table = list( + FISHING_DUD = 18, + /obj/item/fish/sludgefish = 18, + /obj/item/fish/slimefish = 4, + /obj/item/storage/wallet/money = 2, + /obj/item/survivalcapsule/fishing = 1, + ) + fish_counts = list( + /obj/item/storage/wallet/money = 2, + /obj/item/survivalcapsule/fishing = 1, + ) + fishing_difficulty = FISHING_EASY_DIFFICULTY + 10 + +/datum/fish_source/holographic + catalog_description = "Holographic water" + fish_table = list( + /obj/item/fish/holo = 10, + /obj/item/fish/holo/crab = 10, + /obj/item/fish/holo/puffer = 10, + /obj/item/fish/holo/angel = 10, + /obj/item/fish/holo/clown = 10, + /obj/item/fish/holo/checkered = 5, + /obj/item/fish/holo/halffish = 5, + ) + fishing_difficulty = FISHING_EASY_DIFFICULTY + 10 + fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD + associated_safe_turfs = list(/turf/open/floor/holofloor/beach/water) + +/datum/fish_source/holographic/on_fishing_spot_init(datum/component/fishing_spot/spot) + ADD_TRAIT(spot.parent, TRAIT_UNLINKABLE_FISHING_SPOT, REF(src)) //You would have to be inside the holodeck anyway... + +/datum/fish_source/holographic/on_fishing_spot_del(datum/component/fishing_spot/spot) + REMOVE_TRAIT(spot.parent, TRAIT_UNLINKABLE_FISHING_SPOT, REF(src)) + +/datum/fish_source/holographic/generate_wiki_contents(datum/autowiki/fish_sources/wiki) + var/obj/item/fish/prototype = /obj/item/fish/holo/checkered + return LIST_VALUE_WRAP_LISTS(list( + FISH_SOURCE_AUTOWIKI_NAME = "Holographic Fish", + FISH_SOURCE_AUTOWIKI_ICON = FISH_AUTOWIKI_FILENAME(prototype), + FISH_SOURCE_AUTOWIKI_WEIGHT = 100, + FISH_SOURCE_AUTOWIKI_NOTES = "Holographic fish disappears outside the Holodeck", + )) + +/datum/fish_source/holographic/reason_we_cant_fish(obj/item/fishing_rod/rod, mob/fisherman, atom/parent) + . = ..() + if(!istype(get_area(fisherman), /area/station/holodeck)) + return "You need to be inside the Holodeck to catch holographic fish." + +/datum/fish_source/holographic/pre_challenge_started(obj/item/fishing_rod/rod, mob/user, datum/fishing_challenge/challenge) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(check_area)) + +/datum/fish_source/holographic/proc/check_area(mob/user) + SIGNAL_HANDLER + if(!istype(get_area(user), /area/station/holodeck)) + interrupt_challenge("exited holodeck") + +/datum/fish_source/holographic/on_challenge_completed(datum/fishing_challenge/source, mob/user, success) + . = ..() + UnregisterSignal(user, COMSIG_MOVABLE_MOVED) + +/datum/fish_source/hydro_tray + background = "background_tray" + catalog_description = "Hydroponics trays" + radial_state = "hydro" + overlay_state = "portal_tray" + fish_table = list( + FISHING_DUD = 25, + /obj/item/food/grown/grass = 25, + FISHING_RANDOM_SEED = 16, + /obj/item/seeds/grass = 6, + /obj/item/seeds/random = 1, + /mob/living/basic/frog = 1, + /mob/living/basic/axolotl = 1, + /mob/living/basic/turtle = 2, + ) + fish_counts = list( + /obj/item/food/grown/grass = 10, + /obj/item/seeds/grass = 4, + FISHING_RANDOM_SEED = 4, + /obj/item/seeds/random = 1, + /mob/living/basic/frog = 1, + /mob/living/basic/axolotl = 1, + ) + fishing_difficulty = FISHING_EASY_DIFFICULTY + 5 + +/datum/fish_source/hydro_tray/generate_wiki_contents(datum/autowiki/fish_sources/wiki) + var/list/data = list() + var/total_weight = 0 + var/critter_weight = 0 + var/seed_weight = 0 + var/other_weight = 0 + var/dud_weight = fish_table[FISHING_DUD] + for(var/content in fish_table) + var/weight = fish_table[content] + total_weight += weight + if(ispath(content, /mob/living)) + critter_weight += weight + else if(ispath(content, /obj/item/food/grown) || ispath(content, /obj/item/seeds) || content == FISHING_RANDOM_SEED) + seed_weight += weight + else if(content != FISHING_DUD) + other_weight += weight + + data += LIST_VALUE_WRAP_LISTS(list( + FISH_SOURCE_AUTOWIKI_NAME = FISH_SOURCE_AUTOWIKI_DUD, + FISH_SOURCE_AUTOWIKI_DUD = "", + FISH_SOURCE_AUTOWIKI_WEIGHT = PERCENT(dud_weight/total_weight), + FISH_SOURCE_AUTOWIKI_WEIGHT_SUFFIX = "WITHOUT A BAIT", + FISH_SOURCE_AUTOWIKI_NOTES = "", + )) + + data += LIST_VALUE_WRAP_LISTS(list( + FISH_SOURCE_AUTOWIKI_NAME = "Critter", + FISH_SOURCE_AUTOWIKI_DUD = "", + FISH_SOURCE_AUTOWIKI_WEIGHT = PERCENT(critter_weight/total_weight), + FISH_SOURCE_AUTOWIKI_NOTES = "A small creature, usually a frog or an axolotl", + )) + + if(other_weight) + data += LIST_VALUE_WRAP_LISTS(list( + FISH_SOURCE_AUTOWIKI_NAME = "Other Stuff", + FISH_SOURCE_AUTOWIKI_DUD = "", + FISH_SOURCE_AUTOWIKI_WEIGHT = PERCENT(other_weight/total_weight), + FISH_SOURCE_AUTOWIKI_NOTES = "Other stuff, who knows...", + )) + + return data + +/datum/fish_source/hydro_tray/reason_we_cant_fish(obj/item/fishing_rod/rod, mob/fisherman, atom/parent) + if(!istype(parent, /obj/machinery/hydroponics/constructable)) + return ..() + + var/obj/machinery/hydroponics/constructable/basin = parent + if(basin.waterlevel <= 0) + return "There's no water in [parent] to fish in." + if(basin.myseed) + return "There's a plant growing in [parent]." + + return ..() + +/datum/fish_source/hydro_tray/spawn_reward_from_explosion(atom/location, severity) + if(!istype(location, /obj/machinery/hydroponics/constructable)) + return ..() + + var/obj/machinery/hydroponics/constructable/basin = location + if(basin.myseed || basin.waterlevel <= 0) + return + return ..() + +/datum/fish_source/hydro_tray/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot, obj/item/fishing_rod/used_rod) + if(reward_path != FISHING_RANDOM_SEED) + var/mob/living/created_reward = ..() + if(istype(created_reward)) + created_reward.name = "small [created_reward.name]" + created_reward.update_transform(0.75) + return created_reward + + var/static/list/seeds_to_draw_from + if(isnull(seeds_to_draw_from)) + seeds_to_draw_from = subtypesof(/obj/item/seeds) + // These two are already covered innately + seeds_to_draw_from -= /obj/item/seeds/random + seeds_to_draw_from -= /obj/item/seeds/grass + // -1 yield are unharvestable plants so we don't care + // 20 rarirty is where most of the wacky plants are so let's ignore them + for(var/obj/item/seeds/seed_path as anything in seeds_to_draw_from) + if(initial(seed_path.yield) == -1 || initial(seed_path.rarity) >= PLANT_MODERATELY_RARE) + seeds_to_draw_from -= seed_path + + var/picked_path = pick(seeds_to_draw_from) + return new picked_path(spawn_location) + +/datum/fish_source/deepfryer + background = "background_lavaland" + catalog_description = "Deep Fryers" + radial_state = "fryer" + overlay_state = "portal_fry" // literally resprited lava. better than nothing + fish_table = list( + /obj/item/food/badrecipe = 15, + /obj/item/food/nugget = 5, + /obj/item/fish/fryish = 40, + /obj/item/fish/fryish/fritterish = 4, + /obj/item/fish/fryish/nessie = 1, + ) + fish_counts = list( + /obj/item/fish/fryish = 10, + /obj/item/fish/fryish/fritterish = 4, + /obj/item/fish/fryish/nessie = 1, + ) + fish_count_regen = list( + /obj/item/fish/fryish = 2 MINUTES, + /obj/item/fish/fryish/fritterish = 6 MINUTES, + /obj/item/fish/fryish/nessie = 22 MINUTES, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 23 + +#define RANDOM_AQUARIUM_FISH "random_aquarium_fish" + +/datum/fish_source/aquarium + catalog_description = "Aquariums" + radial_state = "fish_tank" + fish_table = list( + FISHING_DUD = 10, + ) + fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD|FISH_SOURCE_FLAG_IGNORE_HIDDEN_ON_CATALOG|FISH_SOURCE_FLAG_EXPLOSIVE_NONE + fishing_difficulty = FISHING_EASY_DIFFICULTY + 5 + +#undef RANDOM_AQUARIUM_FISH + +/datum/fish_source/aquarium/get_fish_table(atom/location, from_explosion = FALSE) + if(istype(location, /obj/machinery/fishing_portal_generator)) + var/obj/machinery/fishing_portal_generator/portal = location + location = portal.current_linked_atom + var/list/table = list() + for(var/obj/item/fish/fish in location) + if(fish.status == FISH_DEAD) //dead fish cannot be caught + continue + table[fish] = 10 + if(!length(table)) + return fish_table.Copy() + return table + +/datum/fish_source/aquarium/generate_wiki_contents(datum/autowiki/fish_sources/wiki) + var/list/data = list() + + data += LIST_VALUE_WRAP_LISTS(list( + FISH_SOURCE_AUTOWIKI_NAME = "Fish", + FISH_SOURCE_AUTOWIKI_DUD = "", + FISH_SOURCE_AUTOWIKI_WEIGHT = 100, + FISH_SOURCE_AUTOWIKI_NOTES = "Any fish currently inside the aquarium, be they alive or dead.", + )) + + return data + +/datum/fish_source/vending + background = "background_chasm" + catalog_description = "Vending Machines" + radial_state = "vending" + overlay_state = "portal_randomizer" + fish_table = list( + FISHING_DUD = 10, + ) + fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD|FISH_SOURCE_FLAG_EXPLOSIVE_NONE + fishing_difficulty = FISHING_EASY_DIFFICULTY //with some equipment and just enough dosh, you should be able to skip the minigame + +/datum/fish_source/vending/generate_wiki_contents(datum/autowiki/fish_sources/wiki) + var/list/data = list() + + data += LIST_VALUE_WRAP_LISTS(list( + FISH_SOURCE_AUTOWIKI_NAME = "Vending Products", + FISH_SOURCE_AUTOWIKI_DUD = "", + FISH_SOURCE_AUTOWIKI_WEIGHT = 100, + FISH_SOURCE_AUTOWIKI_NOTES = "Use chips, bills or coins as bait to get a semi-random vending product, depending on both its and the bait's monetary values", + )) + + return data + +/datum/fish_source/vending/get_modified_fish_table(obj/item/fishing_rod/rod, mob/fisherman, atom/location) + if(istype(location, /obj/machinery/fishing_portal_generator)) + var/obj/machinery/fishing_portal_generator/portal = location + location = portal.current_linked_atom + if(!istype(location, /obj/machinery/vending)) + return list() + + return get_vending_table(rod, fisherman, location) + +/datum/fish_source/vending/proc/get_vending_table(obj/item/fishing_rod/rod, mob/fisherman, obj/machinery/vending/location) + var/list/table = list() + ///Create a list of products, ordered by price from highest to lowest + var/list/products = location.product_records + location.coin_records + location.hidden_records + sortTim(products, GLOBAL_PROC_REF(cmp_vending_prices)) + + var/bait_value = rod.bait?.get_item_credit_value() || 1 + + var/highest_record_price = 0 + for(var/datum/data/vending_product/product_record as anything in products) + if(product_record.amount <= 0) + products -= product_record + table[FISHING_DUD] += PAYCHECK_LOWER //it gets harder the emptier the machine is + continue + if(!highest_record_price) + highest_record_price = product_record.price + var/high = max(highest_record_price, bait_value) + var/low = min(highest_record_price, bait_value) + + //the smaller the difference between product price and bait value, the more likely you're to get it. + table[product_record] = low/high * 1000 //multiply the value by 1000 for accuracy. pick_weight() doesn't work with zero decimals yet. + + add_risks(table, bait_value, highest_record_price, length(products) * 0.5) + return table + +/datum/fish_source/vending/proc/add_risks(list/table, bait_value, highest_price, malus_multiplier) + ///Using more than the money needed to buy the most expensive item (why would you do it?!) will remove the dud chance. + if(bait_value > highest_price) + table -= FISHING_DUD + else + //Makes using 1 cred chips with the minigame skip (negative fishing difficulty) a bit less cheesy. + var/malus = min(PAYCHECK_LOWER - bait_value, highest_price) + if(malus > 0) + table[FISHING_DUD] += malus * malus_multiplier + table[FISHING_VENDING_CHUCK] += malus * malus_multiplier + +#define FISHING_PRODUCT_DIFFICULTY_MULT 1.6 + +/datum/fish_source/vending/calculate_difficulty(datum/fishing_challenge/challenge, result, obj/item/fishing_rod/rod, mob/fisherman) + //Using less than a minimum paycheck is going to make the challenge a tad harder. + var/bait_value = rod.bait?.get_item_credit_value() + var/base_diff = PAYCHECK_LOWER - bait_value + return ..() + get_product_difficulty(base_diff, result) * FISHING_PRODUCT_DIFFICULTY_MULT + +/datum/fish_source/vending/proc/get_product_difficulty(diff, datum/result) + if(istype(result, /datum/data/vending_product)) + var/datum/data/vending_product/product = result + diff = min(diff, product.price) // low priced items are easier to catch anyway + return diff + +#undef FISHING_PRODUCT_DIFFICULTY_MULT + +/datum/fish_source/vending/dispense_reward(reward_path, mob/fisherman, atom/fishing_spot, obj/item/fishing_rod/rod) + var/obj/machinery/vending/vending = fishing_spot + if(istype(fishing_spot, /obj/machinery/fishing_portal_generator)) + var/obj/machinery/fishing_portal_generator/portal = fishing_spot + vending = portal.current_linked_atom + + if(reward_path == FISHING_VENDING_CHUCK) + if(fishing_spot != vending) //fishing portals + vending.forceMove(get_turf(fishing_spot)) + vending.tilt(fisherman, range = 4) + return null //Don't spawn a reward at all + + var/atom/movable/reward = ..() + if(reward) + var/creds_value = rod.bait?.get_item_credit_value() + if(creds_value) + vending.credits_contained += round(creds_value * VENDING_CREDITS_COLLECTION_AMOUNT) + qdel(rod.bait) + return reward + +/datum/fish_source/vending/spawn_reward(reward_path, atom/spawn_location, obj/machinery/vending/fishing_spot, obj/item/fishing_rod/used_rod) + if(istype(fishing_spot, /obj/machinery/fishing_portal_generator)) + var/obj/machinery/fishing_portal_generator/portal = fishing_spot + fishing_spot = portal.current_linked_atom + if(!istype(fishing_spot)) + return null + return spawn_vending_reward(reward_path, spawn_location, fishing_spot) + +/datum/fish_source/vending/proc/spawn_vending_reward(reward_path, atom/spawn_location, obj/machinery/vending/fishing_spot) + var/datum/data/vending_product/product_record = reward_path + if(!istype(product_record) || product_record.amount <= 0) + return null + return fishing_spot.dispense(product_record, spawn_location) + +/datum/fish_source/vending/pre_challenge_started(obj/item/fishing_rod/rod, mob/user, datum/fishing_challenge/challenge) + RegisterSignal(rod, COMSIG_FISHING_ROD_CAUGHT_FISH, PROC_REF(on_reward)) + +/datum/fish_source/vending/on_challenge_completed(mob/user, datum/fishing_challenge/challenge, success) + . = ..() + UnregisterSignal(challenge.used_rod, COMSIG_FISHING_ROD_CAUGHT_FISH) + +/datum/fish_source/vending/proc/on_reward(obj/item/fishing_rod/rod, atom/movable/reward, mob/user) + SIGNAL_HANDLER + if(reward && !QDELETED(rod.bait) && rod.bait.get_item_credit_value()) //you pay for what you get + qdel(rod.bait) // fishing_rod.Exited() will handle clearing the hard ref. + +///subtype of fish_source/vending for custom vending machines +/datum/fish_source/vending/custom + catalog_description = null //no duplicate entries on autowiki or catalog + +/datum/fish_source/vending/custom/get_vending_table(obj/item/fishing_rod/rod, mob/fisherman, obj/machinery/vending/location) + var/list/table = list() + ///Create a list of products, ordered by price from highest to lowest + var/list/products = location.vending_machine_input.Copy() + sortTim(products, GLOBAL_PROC_REF(cmp_item_vending_prices)) + + var/bait_value = rod.bait?.get_item_credit_value() || 1 + + var/highest_record_price = 0 + for(var/obj/item/stocked as anything in products) + if(location.vending_machine_input[stocked] <= 0) + products -= stocked + table[FISHING_DUD] += PAYCHECK_LOWER //it gets harder the emptier the machine is + continue + if(!highest_record_price) + highest_record_price = stocked.custom_price + var/high = max(highest_record_price, bait_value) + var/low = min(highest_record_price, bait_value) + + //the smaller the difference between product price and bait value, the more likely you're to get it. + table[stocked] = low/high * 1000 //multiply the value by 1000 for accuracy. pick_weight() doesn't work with zero decimals yet. + + add_risks(table, bait_value, highest_record_price, length(products) * 0.5) + return table + +/datum/fish_source/vending/custom/get_product_difficulty(diff, datum/result) + if(isitem(result)) + var/obj/item/product = result + diff = min(diff, product.custom_price) + return diff + +/datum/fish_source/vending/custom/spawn_vending_reward(obj/item/reward, atom/spawn_location, obj/machinery/vending/fishing_spot) + if(!isitem(reward)) + return null + reward.forceMove(spawn_location) + return reward diff --git a/code/modules/fishing/sources/subtypes/surgery.dm b/code/modules/fishing/sources/subtypes/surgery.dm new file mode 100644 index 00000000000..3beaa1d2fd9 --- /dev/null +++ b/code/modules/fishing/sources/subtypes/surgery.dm @@ -0,0 +1,50 @@ +//Quirky fish source for surgery, an overcomplicated joke. + +/datum/fish_source/surgery + catalog_description = "Surgery" + radial_state = "innards" + overlay_state = "portal_syndicate" //Didn't feel like spriting a new overlay. It's just all red anyway. + background = "background_lavaland" //Kinda red. + fish_table = list(FISHING_RANDOM_ORGAN = 10) + //This should get you below zero difficulty and skip the minigame phase, unless you're wearing something that counteracts this. + fishing_difficulty = -10 + //The range for waiting is also a bit narrower, so it cannot take as few as 3 seconds or as many as 25 to snatch an organ. + wait_time_range = list(6 SECONDS, 12 SECONDS) + +/datum/fish_source/surgery/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot, obj/item/fishing_rod/used_rod) + if(istype(fishing_spot, /obj/machinery/fishing_portal_generator)) + var/obj/machinery/fishing_portal_generator/portal = fishing_spot + fishing_spot = portal.current_linked_atom + if(!iscarbon(fishing_spot)) + var/random_type = pick(subtypesof(/obj/item/organ) - GLOB.prototype_organs) + return new random_type(spawn_location) + + var/mob/living/carbon/carbon = fishing_spot + var/list/possible_organs = list() + for(var/datum/surgery/organ_manipulation/operation in carbon.surgeries) + var/datum/surgery_step/manipulate_organs/manip_step = GLOB.surgery_steps[operation.steps[operation.status]] + if(!istype(manip_step)) + continue + for(var/obj/item/organ/organ in operation.operated_bodypart) + if(organ.organ_flags & ORGAN_UNREMOVABLE || !manip_step.can_use_organ(organ)) + continue + possible_organs |= organ + + if(!length(possible_organs)) + return null + var/obj/item/organ/chosen = pick(possible_organs) + chosen.Remove(chosen.owner) + chosen.forceMove(spawn_location) + return chosen + +/datum/fish_source/surgery/generate_wiki_contents(datum/autowiki/fish_sources/wiki) + var/list/data = list() + + data += LIST_VALUE_WRAP_LISTS(list( + FISH_SOURCE_AUTOWIKI_NAME = "Organs", + FISH_SOURCE_AUTOWIKI_DUD = "", + FISH_SOURCE_AUTOWIKI_WEIGHT = 100, + FISH_SOURCE_AUTOWIKI_NOTES = "A random organ from an ongoing organ manipulation surgery.", + )) + + return data diff --git a/code/modules/fishing/sources/subtypes/turfs.dm b/code/modules/fishing/sources/subtypes/turfs.dm new file mode 100644 index 00000000000..9d58be8dba7 --- /dev/null +++ b/code/modules/fishing/sources/subtypes/turfs.dm @@ -0,0 +1,138 @@ +//Generic fish sources that're usually associated with non-mining turfs + +/datum/fish_source/ocean + radial_state = "seaboat" + overlay_state = "portal_ocean" + fish_table = list( + FISHING_DUD = 10, + /obj/effect/spawner/message_in_a_bottle = 4, + /obj/item/coin/gold = 6, + /obj/item/fish/clownfish = 11, + /obj/item/fish/pufferfish = 11, + /obj/item/fish/cardinal = 11, + /obj/item/fish/greenchromis = 11, + /obj/item/fish/squid = 11, + /obj/item/fish/stingray = 8, + /obj/item/fish/plaice = 8, + /obj/item/fish/monkfish = 5, + /obj/item/fish/lanternfish = 7, + /obj/item/fish/zipzap = 7, + /obj/item/fish/clownfish/lube = 5, + /obj/item/fish/swordfish = 5, + /obj/structure/mystery_box/fishing = 2, + ) + fish_counts = list( + /obj/item/fish/clownfish/lube = 2, + /obj/item/fish/swordfish = 2, + /obj/structure/mystery_box/fishing = 1, + ) + fish_count_regen = list( + /obj/item/fish/clownfish/lube = 3 MINUTES, + /obj/item/fish/swordfish = 5 MINUTES, + /obj/structure/mystery_box/fishing = 32 MINUTES, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15 + fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS + associated_safe_turfs = list(/turf/open/water/beach) + +/datum/fish_source/ocean/beach + catalog_description = "Beach shore water" + radial_state = "palm_beach" + overlay_state = "portal_beach" + associated_safe_turfs = list(/turf/open/water/beach) + +/datum/fish_source/ice_fishing + background = "background_ice" + catalog_description = "Ice-covered water" + radial_state = "ice" + overlay_state = "portal_ocean" + fish_table = list( + FISHING_DUD = 4, + /obj/item/fish/arctic_char = 5, + /obj/item/fish/sockeye_salmon = 5, + /obj/item/fish/chasm_crab/ice = 2, + /obj/item/fish/boned = 1, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30 + associated_safe_turfs = list(/turf/open/water) + safe_turfs_blacklist = list(/turf/open/water/hot_spring, /turf/open/water/beach) + +/datum/fish_source/river + catalog_description = "River water" + radial_state = "river" + overlay_state = "portal_river" + fish_table = list( + FISHING_DUD = 4, + /obj/item/fish/goldfish = 5, + /obj/item/fish/guppy = 5, + /obj/item/fish/plasmatetra = 4, + /obj/item/fish/perch = 4, + /obj/item/fish/angelfish = 4, + /obj/item/fish/catfish = 4, + /obj/item/fish/slimefish = 2, + /obj/item/fish/sockeye_salmon = 1, + /obj/item/fish/arctic_char = 1, + /obj/item/fish/pike = 1, + /obj/item/fish/goldfish/three_eyes = 1, + ) + fish_counts = list( + /obj/item/fish/pike = 3, + ) + fish_count_regen = list( + /obj/item/fish/pike = 4 MINUTES, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15 + fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS + associated_safe_turfs = list(/turf/open/water) + safe_turfs_blacklist = list(/turf/open/water/hot_spring, /turf/open/water/beach) + +/datum/fish_source/sand + catalog_description = "Sand" + radial_state = "palm_beach" + fish_table = list( + FISHING_DUD = 8, + /obj/item/fish/sand_crab = 10, + /obj/item/fish/sand_surfer = 10, + /obj/item/fish/bumpy = 10, + /obj/item/coin/gold = 3, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30 + fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS + +/datum/fish_source/hot_spring + catalog_description = "Hot Springs" + radial_state = "onsen" + overlay_state = "portal_ocean" + fish_table = list( + FISHING_DUD = 20, + /obj/item/fish/bumpy = 10, + /obj/item/fish/sacabambaspis = 10, + /mob/living/basic/frog = 2, + /obj/item/fishing_rod/telescopic/master = 1, + ) + fish_counts = list( + /obj/item/fish/sacabambaspis = 5, + /obj/item/fishing_rod/telescopic/master = 2, + ) + fish_count_regen = list( + /obj/item/fish/sacabambaspis = 4 MINUTES, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30 + fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS + associated_safe_turfs = list(/turf/open/water/hot_spring) + +/datum/fish_source/tizira + catalog_description = "Tiziran Sea" + radial_state = "planet" + overlay_state = "portal_beach" + fish_table = list( + FISHING_DUD = 10, + /obj/item/fish/needlefish = 5, + /obj/item/fish/armorfish = 5, + /obj/item/fish/gunner_jellyfish = 4, + /obj/item/fish/moonfish/dwarf = 2, + /obj/item/fish/moonfish = 2, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 + fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS + associated_safe_turfs = list(/turf/open/water/beach/tizira) diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/dreaming.dm similarity index 98% rename from code/modules/flufftext/Dreaming.dm rename to code/modules/flufftext/dreaming.dm index c38108dac14..a813c8d9652 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/dreaming.dm @@ -23,7 +23,7 @@ set waitfor = FALSE var/datum/dream/chosen_dream - if (IS_HERETIC(src) && !("mansus_dream_fatigue" in src.mob_mood.mood_events) && GLOB.reality_smash_track.smashes.len) + if (IS_HERETIC(src) && !mob_mood.get_mood_event("mansus_dream_fatigue") && GLOB.reality_smash_track.smashes.len) chosen_dream = new /datum/dream/heretic(pick(GLOB.reality_smash_track.smashes)) else chosen_dream = pick_weight(GLOB.dreams) diff --git a/code/modules/food_and_drinks/machinery/coffeemaker.dm b/code/modules/food_and_drinks/machinery/coffeemaker.dm index d7f3dd516ca..00cc0656aa1 100644 --- a/code/modules/food_and_drinks/machinery/coffeemaker.dm +++ b/code/modules/food_and_drinks/machinery/coffeemaker.dm @@ -525,13 +525,13 @@ /obj/machinery/coffeemaker/impressa/Destroy() QDEL_NULL(coffeepot) - QDEL_NULL(coffee) + QDEL_LIST(coffee) return ..() /obj/machinery/coffeemaker/impressa/examine(mob/user) . = ..() if(coffee) - . += span_notice("The internal grinder contains [coffee.len] scoop\s of coffee beans") + . += span_notice("The internal grinder contains [length(coffee)] scoop\s of coffee beans") /obj/machinery/coffeemaker/impressa/update_overlays() . = ..() diff --git a/code/modules/food_and_drinks/machinery/deep_fryer.dm b/code/modules/food_and_drinks/machinery/deep_fryer.dm index 91d6512c6ab..b3c24da94a4 100644 --- a/code/modules/food_and_drinks/machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/machinery/deep_fryer.dm @@ -104,7 +104,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( /obj/machinery/deepfryer/attackby(obj/item/weapon, mob/user, params) // Dissolving pills into the frier - if(istype(weapon, /obj/item/reagent_containers/pill)) + if(istype(weapon, /obj/item/reagent_containers/applicator/pill)) if(!reagents.total_volume) to_chat(user, span_warning("There's nothing to dissolve [weapon] in!")) return diff --git a/code/modules/food_and_drinks/machinery/microwave.dm b/code/modules/food_and_drinks/machinery/microwave.dm index 53725dad385..b6695af59a5 100644 --- a/code/modules/food_and_drinks/machinery/microwave.dm +++ b/code/modules/food_and_drinks/machinery/microwave.dm @@ -233,8 +233,8 @@ MICROWAVE_INGREDIENT_OVERLAY_SIZE / icon_dimensions["height"], ) - ingredient_overlay.pixel_x = ingredient_shifts_x[(ingredient_count % ingredient_shifts_x.len) + 1] - ingredient_overlay.pixel_y = ingredient_shifts_y[(ingredient_count % ingredient_shifts_y.len) + 1] + ingredient_overlay.pixel_w = ingredient_shifts_x[(ingredient_count % ingredient_shifts_x.len) + 1] + ingredient_overlay.pixel_z = ingredient_shifts_y[(ingredient_count % ingredient_shifts_y.len) + 1] ingredient_overlay.layer = FLOAT_LAYER ingredient_overlay.plane = FLOAT_PLANE ingredient_overlay.blend_mode = BLEND_INSET_OVERLAY diff --git a/code/modules/food_and_drinks/machinery/oven.dm b/code/modules/food_and_drinks/machinery/oven.dm index e9af9338000..16b11191c58 100644 --- a/code/modules/food_and_drinks/machinery/oven.dm +++ b/code/modules/food_and_drinks/machinery/oven.dm @@ -61,7 +61,7 @@ . = ..() if(open) var/mutable_appearance/door_overlay = mutable_appearance(icon, "[base_icon_state]_lid_open") - door_overlay.pixel_y = OVEN_LID_Y_OFFSET + door_overlay.pixel_z = OVEN_LID_Y_OFFSET . += door_overlay else . += mutable_appearance(icon, "[base_icon_state]_lid_closed") diff --git a/code/modules/food_and_drinks/machinery/smartfridge.dm b/code/modules/food_and_drinks/machinery/smartfridge.dm index 28ba612165b..331a2f4faa9 100644 --- a/code/modules/food_and_drinks/machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/machinery/smartfridge.dm @@ -32,8 +32,7 @@ var/welded_down = FALSE /// The sound of item retrieval var/vend_sound = 'sound/machines/machine_vend.ogg' - /// Whether the UI should be set to list view by default - var/default_list_view = FALSE + layout_prefs_used = /datum/preference/choiced/tgui_layout/smartfridge /obj/machinery/smartfridge/Initialize(mapload) . = ..() @@ -385,7 +384,6 @@ .["contents"] = sort_list(listofitems) .["name"] = name .["isdryer"] = FALSE - .["default_list_view"] = default_list_view /obj/machinery/smartfridge/Exited(atom/movable/gone, direction) // Update the UIs in case something inside is removed . = ..() @@ -729,7 +727,6 @@ desc = "A refrigerated storage unit for medicine storage." base_build_path = /obj/machinery/smartfridge/chemistry contents_overlay_icon = "chem" - default_list_view = TRUE /obj/machinery/smartfridge/chemistry/accept_check(obj/item/weapon) // not an item or reagent container @@ -737,7 +734,7 @@ return FALSE // empty pill prank ok - if(istype(weapon, /obj/item/reagent_containers/pill)) + if(istype(weapon, /obj/item/reagent_containers/applicator)) return TRUE //check each pill in the pill bottle @@ -768,8 +765,8 @@ /obj/machinery/smartfridge/chemistry/preloaded initial_contents = list( - /obj/item/reagent_containers/pill/epinephrine = 12, - /obj/item/reagent_containers/pill/multiver = 5, + /obj/item/reagent_containers/applicator/pill/epinephrine = 12, + /obj/item/reagent_containers/applicator/pill/multiver = 5, /obj/item/reagent_containers/cup/bottle/epinephrine = 1, /obj/item/reagent_containers/cup/bottle/multiver = 1) @@ -781,7 +778,6 @@ desc = "A refrigerated storage unit for volatile sample storage." base_build_path = /obj/machinery/smartfridge/chemistry/virology contents_overlay_icon = "viro" - default_list_view = TRUE /obj/machinery/smartfridge/chemistry/virology/preloaded initial_contents = list( diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index 5a138c4c69d..ab5ba2f32f1 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -100,11 +100,11 @@ var/mutable_appearance/pizza_overlay = mutable_appearance(pizza.icon, pizza.icon_state) if(pizza.slices_left != initial(pizza.slices_left)) pizza_overlay.add_filter("pizzaslices", 1, pizza.get_slices_filter()) - pizza_overlay.pixel_y = -2 + pizza_overlay.pixel_z = -2 . += pizza_overlay if(bomb) var/mutable_appearance/bomb_overlay = mutable_appearance(bomb.icon, bomb.icon_state, layer = layer + 0.01) - bomb_overlay.pixel_y = 8 + bomb_overlay.pixel_z = 8 . += bomb_overlay return @@ -113,13 +113,13 @@ box_offset += 3 var/obj/item/pizzabox/box = stacked_box var/mutable_appearance/box_overlay = mutable_appearance(box.icon, box.icon_state, layer = layer + (box_offset * 0.01)) - box_overlay.pixel_y = box_offset + box_overlay.pixel_z = box_offset . += box_overlay var/obj/item/pizzabox/box = LAZYLEN(length(boxes)) ? boxes[length(boxes)] : src if(box.boxtag != "") var/mutable_appearance/tag_overlay = mutable_appearance(icon, "pizzabox_tag", layer = layer + (box_offset * 0.02)) - tag_overlay.pixel_y = box_offset + tag_overlay.pixel_z = box_offset . += tag_overlay /obj/item/pizzabox/worn_overlays(mutable_appearance/standing, isinhands, icon_file) @@ -130,7 +130,7 @@ for(var/V in boxes) //add EXTRA BOX per box var/mutable_appearance/M = mutable_appearance(icon_file, inhand_icon_state) - M.pixel_y = current_offset + M.pixel_z = current_offset current_offset += 2 . += M diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index 4c2c80b3dfe..f5a742688bb 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -1,6 +1,10 @@ /datum/crafting_recipe/food mass_craftable = TRUE crafting_flags = parent_type::crafting_flags | CRAFT_TRANSFERS_REAGENTS | CRAFT_CLEARS_REAGENTS + ///The food types that are added to the result when the recipe is completed + var/added_foodtypes = NONE + ///The food types that are removed to the result when the recipe is completed + var/removed_foodtypes = NONE /datum/crafting_recipe/food/on_craft_completion(mob/user, atom/result) SHOULD_CALL_PARENT(TRUE) @@ -12,6 +16,31 @@ . = ..() parts |= reqs + //rarely, but a few cooking recipes (cake cat & co) don't result food items. + if(!PERFORM_ALL_TESTS(focus_only/check_foodtypes) || non_craftable || !ispath(result, /obj/item/food)) + return + + // Food made from these recipes should inherit the food types of the food ingredients used in it + // 'added_foodtypes' and 'added_foodtypes' exist to add and remove (un)desiderable types + // If the food types of the result don't match when spawned compared to when crafted (with base ingredients), throw a warning. + var/made_with_food = FALSE + var/actual_foodtypes = added_foodtypes + for(var/req_path in reqs) + if(!ispath(req_path, /obj/item/food)) + continue + var/obj/item/food/ingredient = req_path + made_with_food = TRUE + actual_foodtypes |= initial(ingredient.foodtypes) + if(!made_with_food) + return + actual_foodtypes &= ~removed_foodtypes + var/obj/item/food/result_path = result + var/result_foodtypes = initial(result_path.foodtypes) + if(result_foodtypes != actual_foodtypes) + var/text_flags = jointext(bitfield_to_list(result_foodtypes, FOOD_FLAGS),"|") + var/text_craft_flags = jointext(bitfield_to_list(actual_foodtypes, FOOD_FLAGS),"|") + stack_trace("the foodtypes of [result_path] are [text_flags] when spawned but [text_craft_flags] when crafted.") + /datum/crafting_recipe/food/crafting_ui_data() var/list/data = list() diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm index d0517272d77..c09767282c3 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm @@ -40,6 +40,7 @@ /obj/item/food/sausage = 2, ) result = /obj/item/food/bread/sausage + removed_foodtypes = BREAKFAST category = CAT_BREAD /datum/crafting_recipe/food/banananutbread @@ -51,6 +52,7 @@ /obj/item/food/grown/banana = 1 ) result = /obj/item/food/bread/banana + removed_foodtypes = BREAKFAST category = CAT_BREAD /datum/crafting_recipe/food/tofubread @@ -101,6 +103,7 @@ /obj/item/food/butterslice = 1 ) result = /obj/item/food/butterbiscuit + added_foodtypes = BREAKFAST category = CAT_BREAD /datum/crafting_recipe/food/butterdog @@ -117,7 +120,7 @@ time = 40 reqs = list(/datum/reagent/consumable/salt = 1, /datum/reagent/consumable/blackpepper = 1, - /obj/item/food/pastrybase = 2 + /obj/item/food/doughslice = 2, ) result = /obj/item/food/baguette category = CAT_BREAD @@ -174,6 +177,7 @@ /obj/item/food/breadslice/plain = 1 ) result = /obj/item/food/jelliedtoast/slime + added_foodtypes = TOXIC | BREAKFAST category = CAT_BREAD /datum/crafting_recipe/food/jelliedyoast @@ -183,6 +187,7 @@ /obj/item/food/breadslice/plain = 1 ) result = /obj/item/food/jelliedtoast/cherry + added_foodtypes = FRUIT | SUGAR | BREAKFAST category = CAT_BREAD /datum/crafting_recipe/food/butteredtoast @@ -192,6 +197,7 @@ /obj/item/food/butterslice = 1 ) result = /obj/item/food/butteredtoast + added_foodtypes = BREAKFAST category = CAT_BREAD /datum/crafting_recipe/food/twobread @@ -210,6 +216,8 @@ /obj/item/food/grown/mushroom/amanita = 1 ) result = /obj/item/food/breadslice/moldy + removed_foodtypes = VEGETABLES|GRAIN + added_foodtypes = GROSS category = CAT_BREAD /datum/crafting_recipe/food/breadcat @@ -233,4 +241,5 @@ /datum/reagent/consumable/milk = 5 ) result = /obj/item/food/raw_frenchtoast + added_foodtypes = BREAKFAST category = CAT_BREAD diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm index 2953f8408ac..9f857a73a9b 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm @@ -43,6 +43,7 @@ /obj/item/food/bun = 1 ) result = /obj/item/food/burger/appendix + added_foodtypes = MEAT | GORE category = CAT_BURGER /datum/crafting_recipe/food/brainburger @@ -52,6 +53,7 @@ /obj/item/food/bun = 1 ) result = /obj/item/food/burger/brain + added_foodtypes = MEAT | GORE category = CAT_BURGER /datum/crafting_recipe/food/xenoburger @@ -233,6 +235,7 @@ ) result = /obj/item/food/burger/superbite + removed_foodtypes = BREAKFAST category = CAT_BURGER /datum/crafting_recipe/food/slimeburger @@ -242,6 +245,7 @@ /obj/item/food/bun = 1 ) result = /obj/item/food/burger/jelly/slime + added_foodtypes = TOXIC category = CAT_BURGER /datum/crafting_recipe/food/jellyburger @@ -251,6 +255,7 @@ /obj/item/food/bun = 1 ) result = /obj/item/food/burger/jelly/cherry + added_foodtypes = FRUIT category = CAT_BURGER /datum/crafting_recipe/food/fivealarmburger @@ -279,6 +284,7 @@ /obj/item/food/bun = 1 ) result = /obj/item/food/burger/baseball + added_foodtypes = GROSS category = CAT_BURGER /datum/crafting_recipe/food/baconburger @@ -289,6 +295,7 @@ ) result = /obj/item/food/burger/baconburger + removed_foodtypes = BREAKFAST category = CAT_BURGER /datum/crafting_recipe/food/empoweredburger @@ -299,6 +306,7 @@ ) result = /obj/item/food/burger/empoweredburger + added_foodtypes = TOXIC category = CAT_BURGER /datum/crafting_recipe/food/catburger @@ -310,6 +318,7 @@ /obj/item/organ/tail/cat = 1, ) result = /obj/item/food/burger/catburger + added_foodtypes = GORE category = CAT_BURGER /datum/crafting_recipe/food/crabburger diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm index 86956ba861c..de8a2f4e57d 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm @@ -75,6 +75,7 @@ /datum/reagent/consumable/caramel = 2 ) result = /obj/item/food/cake/birthday + added_foodtypes = JUNKFOOD category = CAT_CAKE /datum/crafting_recipe/food/energycake @@ -94,6 +95,7 @@ /obj/item/food/cake/plain = 1 ) result = /obj/item/food/cake/brain + added_foodtypes = MEAT | GORE category = CAT_CAKE /datum/crafting_recipe/food/slimecake @@ -129,6 +131,7 @@ /obj/item/food/cake/plain = 4 ) result = /obj/item/food/cake/pound_cake + added_foodtypes = JUNKFOOD category = CAT_CAKE /datum/crafting_recipe/food/hardwarecake @@ -139,6 +142,7 @@ /datum/reagent/toxin/acid = 5 ) result = /obj/item/food/cake/hardware_cake + added_foodtypes = GROSS category = CAT_CAKE /datum/crafting_recipe/food/berry_chocolate_cake @@ -149,6 +153,7 @@ /obj/item/food/grown/berries = 5 ) result = /obj/item/food/cake/berry_chocolate_cake + removed_foodtypes = JUNKFOOD category = CAT_CAKE /datum/crafting_recipe/food/pavlovacream @@ -160,6 +165,7 @@ /obj/item/food/grown/berries = 5 ) result = /obj/item/food/cake/pavlova + added_foodtypes = SUGAR|DAIRY category = CAT_CAKE /datum/crafting_recipe/food/pavlovakorta @@ -171,6 +177,7 @@ /obj/item/food/grown/berries = 5 ) result = /obj/item/food/cake/pavlova/nuts + added_foodtypes = SUGAR|NUTS category = CAT_CAKE /datum/crafting_recipe/food/berry_vanilla_cake @@ -212,6 +219,7 @@ /datum/reagent/consumable/berryjuice = 5 ) result = /obj/item/food/cake/trumpet + added_foodtypes = FRUIT category = CAT_CAKE @@ -238,6 +246,7 @@ /datum/reagent/consumable/ethanol/rum = 5 ) result = /obj/item/food/cake/fruit + removed_foodtypes = JUNKFOOD category = CAT_CAKE /datum/crafting_recipe/food/plumcake diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm index 7b8c071b3a5..c2de18daf0e 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm @@ -19,6 +19,8 @@ /obj/item/food/cheese/wedge = 2 ) result = /obj/item/food/omelette + added_foodtypes = BREAKFAST + removed_foodtypes = RAW category = CAT_EGG /datum/crafting_recipe/food/chocolateegg @@ -28,6 +30,7 @@ /obj/item/food/chocolatebar = 1 ) result = /obj/item/food/chocolateegg + removed_foodtypes = MEAT|BREAKFAST //This recipe is very wrong, please change it ffs category = CAT_EGG /datum/crafting_recipe/food/eggsbenedict @@ -50,6 +53,7 @@ /obj/item/food/grown/corn = 1 ) result = /obj/item/food/salad/eggbowl + removed_foodtypes = BREAKFAST category = CAT_EGG /datum/crafting_recipe/food/wrap @@ -59,6 +63,7 @@ /obj/item/food/grown/cabbage = 1, ) result = /obj/item/food/eggwrap + removed_foodtypes = BREAKFAST category = CAT_EGG /datum/crafting_recipe/food/chawanmushi @@ -70,5 +75,6 @@ /obj/item/food/grown/mushroom/chanterelle = 1 ) result = /obj/item/food/chawanmushi + removed_foodtypes = BREAKFAST category = CAT_EGG diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm index 0e71758b063..8ac20e53398 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm @@ -32,6 +32,7 @@ /obj/item/food/icecream = 1 ) result = /obj/item/food/spacefreezy + added_foodtypes = FRUIT category = CAT_ICE /datum/crafting_recipe/food/sundae @@ -67,6 +68,7 @@ /obj/item/food/icecream = 1 ) result = /obj/item/food/cornuto + removed_foodtypes = JUNKFOOD category = CAT_ICE //////////////////////////SNOW CONES/////////////////////// @@ -295,6 +297,8 @@ /datum/reagent/consumable/sugar = 2 ) result = /obj/item/food/popsicle/jumbo + added_foodtypes = DAIRY + removed_foodtypes = JUNKFOOD category = CAT_ICE /datum/crafting_recipe/food/licorice_creamsicle @@ -320,4 +324,5 @@ /datum/reagent/consumable/sugar = 2 ) result = /obj/item/food/popsicle/meatsicle + added_foodtypes = SUGAR category = CAT_ICE diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm index d9f9cd16fe9..8b7a523f78e 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm @@ -17,6 +17,7 @@ /datum/reagent/consumable/blackpepper = 5 ) result = /obj/item/food/raw_headcheese + added_foodtypes = GORE category = CAT_LIZARD /datum/crafting_recipe/food/shredded_lungs @@ -33,6 +34,7 @@ ) result = /obj/item/food/shredded_lungs + added_foodtypes = MEAT|GORE category = CAT_LIZARD /datum/crafting_recipe/food/tsatsikh @@ -56,6 +58,7 @@ /obj/item/food/grown/onion = 1 ) result = /obj/item/food/liver_pate + removed_foodtypes = RAW category = CAT_LIZARD /datum/crafting_recipe/food/moonfish_caviar @@ -78,6 +81,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/lizard_escargot + removed_foodtypes = GORE category = CAT_LIZARD /datum/crafting_recipe/food/fried_blood_sausage @@ -88,6 +92,8 @@ /datum/reagent/water = 5 ) result = /obj/item/food/fried_blood_sausage + added_foodtypes = FRIED|NUTS + removed_foodtypes = RAW category = CAT_LIZARD /datum/crafting_recipe/food/lizard_fries @@ -110,6 +116,7 @@ /datum/reagent/consumable/salt = 3 ) result = /obj/item/food/brain_pate + added_foodtypes = MEAT|GORE category = CAT_LIZARD /datum/crafting_recipe/food/crispy_headcheese @@ -175,22 +182,12 @@ /obj/item/food/meat/steak = 1, /obj/item/food/bbqribs = 1 ) + removed_foodtypes = SUGAR result = /obj/item/food/lizard_surf_n_turf category = CAT_LIZARD /datum/crafting_recipe/food/rootdough - name = "Rootdough" - reqs = list( - /obj/item/food/grown/potato = 2, - /obj/item/food/egg = 1, - /datum/reagent/consumable/korta_flour = 5, - /datum/reagent/water = 10 - ) - result = /obj/item/food/rootdough - category = CAT_LIZARD - -/datum/crafting_recipe/food/rootdough2 - name = "Rootdough" + name = "Rootdough (Without Eggs)" reqs = list( /obj/item/food/grown/potato = 2, /datum/reagent/consumable/soymilk = 15, @@ -198,8 +195,20 @@ /datum/reagent/water = 10 ) result = /obj/item/food/rootdough + added_foodtypes = NUTS category = CAT_LIZARD +/datum/crafting_recipe/food/rootdough/with_eggs + name = "Rootdough (With Eggs)" + reqs = list( + /obj/item/food/grown/potato = 2, + /obj/item/food/egg = 1, + /datum/reagent/consumable/korta_flour = 5, + /datum/reagent/water = 10 + ) + result = /obj/item/food/rootdough/egg + removed_foodtypes = RAW + /datum/crafting_recipe/food/snail_nizaya name = "Desert snail nizaya" reqs = list( @@ -209,6 +218,7 @@ /datum/reagent/consumable/ethanol/wine = 5 ) result = /obj/item/food/spaghetti/snail_nizaya + removed_foodtypes = GORE category = CAT_LIZARD /datum/crafting_recipe/food/garlic_nizaya @@ -233,6 +243,7 @@ /datum/reagent/consumable/korta_nectar = 5 ) result = /obj/item/food/spaghetti/demit_nizaya + added_foodtypes = SUGAR category = CAT_LIZARD /datum/crafting_recipe/food/mushroom_nizaya @@ -308,6 +319,7 @@ /obj/item/organ/liver = 1 ) result = /obj/item/food/pizza/flatbread/zmorgast + removed_foodtypes = RAW category = CAT_LIZARD /datum/crafting_recipe/food/fish_flatbread @@ -339,6 +351,7 @@ /datum/reagent/consumable/korta_milk = 5 ) result = /obj/item/food/pizza/flatbread/nutty + removed_foodtypes = VEGETABLES //This is so nuts category = CAT_LIZARD /datum/crafting_recipe/food/emperor_roll @@ -371,6 +384,8 @@ /datum/reagent/consumable/vinegar = 2 ) result = /obj/item/food/black_eggs + added_foodtypes = GORE|BREAKFAST + removed_foodtypes = RAW category = CAT_LIZARD /datum/crafting_recipe/food/patzikula @@ -382,18 +397,21 @@ /obj/item/food/egg = 2 ) result = /obj/item/food/patzikula + removed_foodtypes = RAW + added_foodtypes = BREAKFAST category = CAT_LIZARD /datum/crafting_recipe/food/korta_brittle name = "Korta brittle slab" reqs = list( /obj/item/food/grown/korta_nut = 2, - /obj/item/food/butterslice = 1, /datum/reagent/consumable/korta_nectar = 5, /datum/reagent/consumable/sugar = 5, + /datum/reagent/consumable/nutriment/fat/oil = 3, /datum/reagent/consumable/salt = 2 ) result = /obj/item/food/cake/korta_brittle + added_foodtypes = SUGAR category = CAT_LIZARD /datum/crafting_recipe/food/korta_ice @@ -405,6 +423,7 @@ /obj/item/food/grown/berries = 1 ) result = /obj/item/food/snowcones/korta_ice + added_foodtypes = SUGAR|NUTS category = CAT_LIZARD /datum/crafting_recipe/food/candied_mushrooms @@ -416,6 +435,7 @@ /datum/reagent/consumable/salt = 1 ) result = /obj/item/food/kebab/candied_mushrooms + added_foodtypes = SUGAR category = CAT_LIZARD /datum/crafting_recipe/food/sauerkraut @@ -434,6 +454,7 @@ /datum/reagent/consumable/korta_flour = 5 ) result = /obj/item/food/lizard_dumplings + added_foodtypes = NUTS category = CAT_LIZARD /datum/crafting_recipe/food/steeped_mushrooms @@ -453,6 +474,7 @@ /datum/reagent/consumable/cherryjelly = 5 ) result = /obj/item/food/rootbread_peanut_butter_jelly + added_foodtypes = FRUIT category = CAT_LIZARD /datum/crafting_recipe/food/rootbreadpbb @@ -463,6 +485,7 @@ /obj/item/food/grown/banana = 1 ) result = /obj/item/food/rootbread_peanut_butter_banana + added_foodtypes = FRUIT category = CAT_LIZARD // Soups diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm index a0f60b19221..d903a2c5700 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm @@ -48,6 +48,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/sambal + added_foodtypes = SEAFOOD //Until we have easy to get shrimp to add to the recipe category = CAT_MARTIAN /datum/crafting_recipe/food/katsu_fillet @@ -57,6 +58,8 @@ /obj/item/food/breadslice/reispan = 1, ) result = /obj/item/food/katsu_fillet + removed_foodtypes = RAW + added_foodtypes = FRIED category = CAT_MARTIAN /datum/crafting_recipe/food/rice_dough @@ -83,6 +86,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/hurricane_rice + removed_foodtypes = RAW|BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/ikareis @@ -97,6 +101,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/ikareis + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/hawaiian_fried_rice @@ -111,6 +116,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/hawaiian_fried_rice + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/ketchup_fried_rice @@ -126,6 +132,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/ketchup_fried_rice + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/mediterranean_fried_rice @@ -140,6 +147,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/mediterranean_fried_rice + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/egg_fried_rice @@ -151,6 +159,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/egg_fried_rice + removed_foodtypes = BREAKFAST|RAW category = CAT_MARTIAN /datum/crafting_recipe/food/bibimbap @@ -165,6 +174,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/bibimbap + removed_foodtypes = RAW|BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/bulgogi_noodles @@ -208,6 +218,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/martian_fried_noodles + removed_foodtypes = RAW category = CAT_MARTIAN /datum/crafting_recipe/food/simple_fried_noodles @@ -238,6 +249,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/setagaya_curry + removed_foodtypes = RAW|JUNKFOOD|BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/big_blue_burger @@ -252,6 +264,7 @@ /datum/reagent/consumable/nutriment/soup/teriyaki = 4, ) result = /obj/item/food/burger/big_blue + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/chappy_patty @@ -264,6 +277,7 @@ /datum/reagent/consumable/ketchup = 3, ) result = /obj/item/food/burger/chappy + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/king_katsu_sandwich @@ -277,6 +291,7 @@ /obj/item/food/grown/tomato = 1, ) result = /obj/item/food/king_katsu_sandwich + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/marte_cubano_sandwich @@ -288,6 +303,7 @@ /obj/item/food/cheese/wedge = 1, ) result = /obj/item/food/marte_cubano_sandwich + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/little_shiro_sandwich @@ -301,6 +317,7 @@ /obj/item/food/grown/herbs = 1, ) result = /obj/item/food/little_shiro_sandwich + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/croque_martienne @@ -336,6 +353,7 @@ /datum/reagent/consumable/worcestershire = 3, ) result = /obj/item/food/takoyaki + added_foodtypes = GRAIN|FRIED category = CAT_MARTIAN /datum/crafting_recipe/food/russian_takoyaki @@ -347,6 +365,7 @@ /datum/reagent/consumable/capsaicin = 3, ) result = /obj/item/food/takoyaki/russian + added_foodtypes = GRAIN|FRIED category = CAT_MARTIAN /datum/crafting_recipe/food/tacoyaki @@ -359,6 +378,7 @@ /obj/item/food/cheese/wedge = 1, ) result = /obj/item/food/takoyaki/taco + added_foodtypes = GRAIN|FRIED|SEAFOOD category = CAT_MARTIAN /datum/crafting_recipe/food/okonomiyaki @@ -371,6 +391,7 @@ /obj/item/food/grown/potato/sweet = 1, ) result = /obj/item/food/okonomiyaki + added_foodtypes = GRAIN|FRIED|SEAFOOD category = CAT_MARTIAN /datum/crafting_recipe/food/brat_kimchi @@ -381,6 +402,7 @@ /datum/reagent/consumable/sugar = 3, ) result = /obj/item/food/brat_kimchi + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/tonkatsuwurst @@ -392,6 +414,7 @@ /datum/reagent/consumable/red_bay = 2, ) result = /obj/item/food/tonkatsuwurst + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/ti_hoeh_koe @@ -403,6 +426,8 @@ /datum/reagent/blood = 5, ) result = /obj/item/food/kebab/ti_hoeh_koe + removed_foodtypes = JUNKFOOD|VEGETABLES|BREAKFAST + added_foodtypes = MEAT|FRIED category = CAT_MARTIAN /datum/crafting_recipe/food/kitzushi @@ -414,6 +439,8 @@ /obj/item/food/grown/chili = 1, ) result = /obj/item/food/kitzushi + removed_foodtypes = BREAKFAST + added_foodtypes = FRIED category = CAT_MARTIAN /datum/crafting_recipe/food/epok_epok @@ -426,6 +453,8 @@ /datum/reagent/consumable/curry_powder = 3, ) result = /obj/item/food/epok_epok + removed_foodtypes = BREAKFAST + added_foodtypes = FRIED category = CAT_MARTIAN /datum/crafting_recipe/food/roti_john @@ -439,6 +468,8 @@ /datum/reagent/consumable/mayonnaise = 3, ) result = /obj/item/food/roti_john + added_foodtypes = BREAKFAST + removed_foodtypes = RAW category = CAT_MARTIAN /datum/crafting_recipe/food/izakaya_fries @@ -473,6 +504,7 @@ /datum/reagent/consumable/gravy = 5, ) result = /obj/item/food/loco_moco + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/wild_duck_fries @@ -516,6 +548,7 @@ /obj/item/food/breadslice/reispan = 1, ) result = /obj/item/food/steak_croquette + added_foodtypes = FRIED category = CAT_MARTIAN /datum/crafting_recipe/food/chapsilog @@ -539,6 +572,8 @@ /obj/item/food/onion_slice = 1, ) result = /obj/item/food/chap_hash + removed_foodtypes = RAW + added_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/agedashi_tofu @@ -550,6 +585,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/agedashi_tofu + added_foodtypes = SEAFOOD category = CAT_MARTIAN /datum/crafting_recipe/food/po_kok_gai @@ -562,6 +598,8 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/po_kok_gai + added_foodtypes = FRUIT + removed_foodtypes = RAW|BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/huoxing_tofu @@ -574,6 +612,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/huoxing_tofu + removed_foodtypes = RAW category = CAT_MARTIAN /datum/crafting_recipe/food/feizhou_ji @@ -585,6 +624,7 @@ /datum/reagent/consumable/vinegar = 5, ) result = /obj/item/food/feizhou_ji + removed_foodtypes = RAW category = CAT_MARTIAN /datum/crafting_recipe/food/galinha_de_cabidela @@ -597,6 +637,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/galinha_de_cabidela + removed_foodtypes = RAW category = CAT_MARTIAN /datum/crafting_recipe/food/katsu_curry @@ -608,6 +649,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/katsu_curry + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/beef_bowl @@ -620,6 +662,8 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/beef_bowl + removed_foodtypes = BREAKFAST + added_foodtypes = SEAFOOD category = CAT_MARTIAN /datum/crafting_recipe/food/salt_chilli_bowl @@ -634,6 +678,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/salt_chilli_bowl + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/kansai_bowl @@ -647,6 +692,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/kansai_bowl + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/eigamudo_curry @@ -660,6 +706,8 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/eigamudo_curry + removed_foodtypes = BREAKFAST + added_foodtypes = GROSS|TOXIC category = CAT_MARTIAN /datum/crafting_recipe/food/cilbir @@ -672,6 +720,7 @@ /datum/reagent/consumable/nutriment/fat/oil/olive = 2, ) result = /obj/item/food/cilbir + added_foodtypes = DAIRY category = CAT_MARTIAN /datum/crafting_recipe/food/peking_duck_crepes @@ -683,6 +732,7 @@ /datum/reagent/consumable/ethanol/cognac = 2, ) result = /obj/item/food/peking_duck_crepes + removed_foodtypes = BREAKFAST category = CAT_MARTIAN /datum/crafting_recipe/food/vulgaris_spekkoek @@ -716,6 +766,7 @@ /datum/reagent/consumable/sugar = 2, ) result = /obj/item/food/pastel_de_nata + removed_foodtypes = MEAT|RAW category = CAT_MARTIAN /datum/crafting_recipe/food/boh_loh_yah @@ -726,6 +777,7 @@ /datum/reagent/consumable/sugar = 5, ) result = /obj/item/food/boh_loh_yah + added_foodtypes = PINEAPPLE // someone thought it's funny to give it this foodtype smh category = CAT_MARTIAN /datum/crafting_recipe/food/banana_fritter @@ -735,6 +787,7 @@ /datum/reagent/consumable/martian_batter = 2 ) result = /obj/item/food/banana_fritter + added_foodtypes = GRAIN|FRIED|SEAFOOD category = CAT_MARTIAN /datum/crafting_recipe/food/pineapple_fritter @@ -744,6 +797,7 @@ /datum/reagent/consumable/martian_batter = 2 ) result = /obj/item/food/pineapple_fritter + added_foodtypes = GRAIN|FRIED|SEAFOOD category = CAT_MARTIAN /datum/crafting_recipe/food/kasei_dango @@ -756,6 +810,7 @@ /datum/reagent/consumable/grenadine = 2, ) result = /obj/item/food/kebab/kasei_dango + added_foodtypes = GRAIN category = CAT_MARTIAN /datum/crafting_recipe/food/pb_ice_cream_mochi @@ -767,6 +822,7 @@ /obj/item/food/icecream = 1, ) result = /obj/item/food/pb_ice_cream_mochi + added_foodtypes = NUTS category = CAT_MARTIAN /datum/crafting_recipe/food/frozen_pineapple_pop @@ -777,6 +833,7 @@ /obj/item/popsicle_stick = 1, ) result = /obj/item/food/popsicle/pineapple_pop + removed_foodtypes = JUNKFOOD category = CAT_MARTIAN /datum/crafting_recipe/food/sea_salt_pop @@ -799,6 +856,7 @@ /obj/item/popsicle_stick = 1, ) result = /obj/item/food/popsicle/topsicle + added_foodtypes = SUGAR|FRUIT category = CAT_MARTIAN /datum/crafting_recipe/food/banana_topsicle @@ -810,9 +868,10 @@ /obj/item/popsicle_stick = 1, ) result = /obj/item/food/popsicle/topsicle/banana + added_foodtypes = SUGAR|FRUIT category = CAT_MARTIAN -/datum/crafting_recipe/food/berry_topsicle +/datum/crafting_recipe/food/pineapple_topsicle name = "Pineapple topsicle" reqs = list( /obj/item/food/tofu = 1, @@ -821,6 +880,7 @@ /obj/item/popsicle_stick = 1, ) result = /obj/item/food/popsicle/topsicle/pineapple + added_foodtypes = SUGAR|FRUIT|PINEAPPLE category = CAT_MARTIAN /datum/crafting_recipe/food/plasma_dog_supreme @@ -842,6 +902,7 @@ /datum/reagent/consumable/red_bay = 1, ) result = /obj/item/food/frickles + added_foodtypes = GRAIN|FRIED|SEAFOOD category = CAT_MARTIAN /datum/crafting_recipe/food/raw_ballpark_pretzel @@ -851,6 +912,7 @@ /datum/reagent/consumable/salt = 2, ) result = /obj/item/food/raw_ballpark_pretzel + added_foodtypes = RAW category = CAT_MARTIAN /datum/crafting_recipe/food/raw_ballpark_tsukune @@ -873,6 +935,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/sprout_bowl + removed_foodtypes = BREAKFAST category = CAT_MARTIAN // Soups diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index 9244f4c54f3..ffefd116ba2 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -60,6 +60,7 @@ /obj/item/food/meat/cutlet/spider = 2 ) result = /obj/item/food/spidereggsham + removed_foodtypes = TOXIC category = CAT_MEAT ////////////////////////////////////////////////MISC RECIPE's//////////////////////////////////////////////// @@ -71,6 +72,7 @@ /obj/item/seeds/plump = 1 ) result = /obj/item/food/tempehstarter + added_foodtypes = GROSS category = CAT_MEAT /datum/crafting_recipe/food/cornedbeef @@ -91,6 +93,7 @@ ) tool_paths = list(/obj/item/lighter) result = /obj/item/food/bearsteak + added_foodtypes = ALCOHOL category = CAT_MEAT /datum/crafting_recipe/food/stewedsoymeat @@ -177,6 +180,7 @@ /obj/item/food/meat/cutlet = 2 ) result = /obj/item/food/salad/ricepork + removed_foodtypes = BREAKFAST category = CAT_MEAT /datum/crafting_recipe/food/ribs @@ -187,6 +191,7 @@ /obj/item/stack/rods = 2 ) result = /obj/item/food/bbqribs + added_foodtypes = SUGAR category = CAT_MEAT /datum/crafting_recipe/food/meatclown @@ -219,6 +224,7 @@ /obj/item/food/meat/cutlet = 1 ) result = /obj/item/food/salad/gumbo + removed_foodtypes = BREAKFAST category = CAT_MEAT @@ -230,6 +236,8 @@ /datum/reagent/consumable/corn_starch = 5, ) result = /obj/item/food/fried_chicken + removed_foodtypes = RAW + added_foodtypes = FRIED category = CAT_MEAT /datum/crafting_recipe/food/beef_stroganoff @@ -246,6 +254,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/beef_stroganoff + added_foodtypes = DAIRY category = CAT_MEAT /datum/crafting_recipe/food/beef_wellington @@ -261,6 +270,7 @@ /datum/reagent/consumable/blackpepper = 2 ) result = /obj/item/food/beef_wellington + removed_foodtypes = BREAKFAST category = CAT_MEAT /datum/crafting_recipe/food/korta_wellington @@ -276,6 +286,7 @@ /datum/reagent/consumable/blackpepper = 2 ) result = /obj/item/food/korta_wellington + removed_foodtypes = BREAKFAST category = CAT_MEAT /datum/crafting_recipe/food/full_roast @@ -294,6 +305,7 @@ /datum/reagent/consumable/blackpepper = 2 ) result = /obj/item/food/roast_dinner + added_foodtypes = GRAIN category = CAT_MEAT /datum/crafting_recipe/food/full_roast_lizzy @@ -313,6 +325,7 @@ /datum/reagent/consumable/blackpepper = 2 ) result = /obj/item/food/roast_dinner_lizzy + added_foodtypes = NUTS category = CAT_MEAT /datum/crafting_recipe/food/full_roast_tofu @@ -331,6 +344,7 @@ /datum/reagent/consumable/blackpepper = 2 ) result = /obj/item/food/roast_dinner_tofu + added_foodtypes = GRAIN category = CAT_MEAT /datum/crafting_recipe/food/full_english @@ -354,6 +368,8 @@ /datum/reagent/consumable/nutriment/vitamin = 5, ) result = /obj/item/food/canned/envirochow + removed_foodtypes = RAW|GORE + added_foodtypes = GROSS category = CAT_MEAT /datum/crafting_recipe/food/meatloaf diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm index 3dbd7093a74..2991d9d5c11 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm @@ -49,6 +49,7 @@ /obj/item/food/tortilla = 1 ) result = /obj/item/food/nachos + added_foodtypes = FRIED category = CAT_MEXICAN /datum/crafting_recipe/food/cheesynachos @@ -59,6 +60,7 @@ /obj/item/food/tortilla = 1 ) result = /obj/item/food/cheesynachos + added_foodtypes = FRIED category = CAT_MEXICAN /datum/crafting_recipe/food/cubannachos @@ -69,6 +71,7 @@ /obj/item/food/tortilla = 1 ) result = /obj/item/food/cubannachos + added_foodtypes = FRIED category = CAT_MEXICAN /datum/crafting_recipe/food/taco @@ -124,6 +127,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/chipsandsalsa + removed_foodtypes = JUNKFOOD category = CAT_MEXICAN /datum/crafting_recipe/food/classic_chimichanga @@ -135,6 +139,7 @@ /obj/item/food/grown/onion = 1, ) result = /obj/item/food/classic_chimichanga + added_foodtypes = FRIED category = CAT_MEXICAN /datum/crafting_recipe/food/vegetarian_chimichanga @@ -146,6 +151,7 @@ /obj/item/food/grown/chili = 1, ) result = /obj/item/food/vegetarian_chimichanga + added_foodtypes = FRIED category = CAT_MEXICAN /datum/crafting_recipe/food/classic_hard_shell_taco @@ -178,6 +184,7 @@ /obj/item/food/grown/onion = 1, ) result = /obj/item/food/refried_beans + added_foodtypes = FRIED category = CAT_MEXICAN /datum/crafting_recipe/food/spanish_rice @@ -190,6 +197,7 @@ /datum/reagent/consumable/blackpepper = 1, ) result = /obj/item/food/spanish_rice + removed_foodtypes = BREAKFAST category = CAT_MEXICAN /datum/crafting_recipe/food/pineapple_salsa diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm index 9e145500a17..e2c09cfe02c 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm @@ -10,6 +10,7 @@ /obj/item/food/grown/apple = 1 ) result = /obj/item/food/candiedapple + added_foodtypes = JUNKFOOD|SUGAR category = CAT_MISCFOOD /datum/crafting_recipe/food/spiderlollipop @@ -20,6 +21,8 @@ /obj/item/food/spiderling = 1 ) result = /obj/item/food/spiderlollipop + added_foodtypes = JUNKFOOD|SUGAR + removed_foodtypes = TOXIC category = CAT_MISCFOOD /datum/crafting_recipe/food/chococoin @@ -66,6 +69,7 @@ /datum/reagent/consumable/gravy = 3 ) result = /obj/item/food/poutine + added_foodtypes = MEAT category = CAT_MISCFOOD /datum/crafting_recipe/food/beans @@ -95,6 +99,7 @@ ) parts = list(/obj/item/reagent_containers/cup/glass/bottle/vodka = 1) result = /obj/item/food/melonkeg + added_foodtypes = ALCOHOL category = CAT_MISCFOOD /datum/crafting_recipe/food/honeybar @@ -104,6 +109,7 @@ /datum/reagent/consumable/honey = 5 ) result = /obj/item/food/honeybar + added_foodtypes = SUGAR category = CAT_MISCFOOD /datum/crafting_recipe/food/powercrepe @@ -117,6 +123,7 @@ /obj/item/melee/sabre = 1 ) result = /obj/item/food/powercrepe + added_foodtypes = FRUIT|SUGAR category = CAT_MISCFOOD /datum/crafting_recipe/food/branrequests @@ -126,6 +133,8 @@ /obj/item/food/no_raisin = 1, ) result = /obj/item/food/branrequests + removed_foodtypes = JUNKFOOD + added_foodtypes = BREAKFAST category = CAT_MISCFOOD /datum/crafting_recipe/food/ricepudding @@ -137,6 +146,8 @@ /obj/item/food/boiledrice = 1 ) result = /obj/item/food/salad/ricepudding + added_foodtypes = DAIRY|SUGAR + removed_foodtypes = BREAKFAST category = CAT_MISCFOOD /datum/crafting_recipe/food/risotto @@ -149,6 +160,7 @@ /obj/item/food/grown/mushroom/chanterelle = 1 ) result = /obj/item/food/salad/risotto + removed_foodtypes = BREAKFAST category = CAT_MISCFOOD /datum/crafting_recipe/food/butterbear //ITS ALIVEEEEEE! @@ -173,6 +185,7 @@ /obj/item/food/meat/slab/rawcrab = 1 ) result = /obj/item/food/crab_rangoon + removed_foodtypes = RAW category = CAT_SEAFOOD /datum/crafting_recipe/food/royalcheese @@ -228,6 +241,7 @@ /obj/item/food/butterslice = 1 ) result = /obj/item/food/bechamel_sauce + added_foodtypes = GRAIN category = CAT_MISCFOOD /datum/crafting_recipe/food/pierogi @@ -249,6 +263,7 @@ /obj/item/food/grown/tomato = 1, ) result = /obj/item/food/stuffed_cabbage + removed_foodtypes = BREAKFAST category = CAT_MISCFOOD /datum/crafting_recipe/food/granola_bar @@ -260,6 +275,7 @@ /obj/item/food/no_raisin = 1, ) result = /obj/item/food/granola_bar + removed_foodtypes = JUNKFOOD category = CAT_MISCFOOD /datum/crafting_recipe/food/onigiri @@ -269,6 +285,7 @@ /obj/item/food/seaweedsheet = 1, ) result = /obj/item/food/onigiri + removed_foodtypes = BREAKFAST category = CAT_MISCFOOD /datum/crafting_recipe/food/mashed_potatoes @@ -289,6 +306,7 @@ /datum/reagent/consumable/salt = 2, ) result = /obj/item/food/pacoca + added_foodtypes = SUGAR category = CAT_MISCFOOD /datum/crafting_recipe/food/springroll @@ -301,6 +319,7 @@ /datum/reagent/water = 10, ) result = /obj/item/food/springroll + added_foodtypes = GRAIN category = CAT_MISCFOOD /datum/crafting_recipe/food/caramel_popcorn @@ -310,6 +329,7 @@ /datum/reagent/consumable/caramel = 3, ) result = /obj/item/food/popcorn/caramel + added_foodtypes = SUGAR category = CAT_MISCFOOD /datum/crafting_recipe/food/salty_popcorn @@ -339,6 +359,7 @@ /obj/item/food/grown/mushroom/amanita = 3 ) result = /obj/item/food/bowled/amanitajelly + added_foodtypes = TOXIC category = CAT_MISCFOOD /datum/crafting_recipe/food/buttered_baked_potato @@ -359,6 +380,7 @@ /obj/item/food/grown/cabbage = 1, ) result = /obj/item/food/loaded_baked_potato + removed_foodtypes = BREAKFAST category = CAT_MISCFOOD /datum/crafting_recipe/food/cheese_pierogi @@ -415,6 +437,7 @@ /datum/reagent/consumable/peanut_butter = 2, ) result = /obj/item/food/bonbon/peanut_butter_cup + added_foodtypes = NUTS category = CAT_MISCFOOD /datum/crafting_recipe/pickles_jar @@ -494,6 +517,7 @@ /datum/reagent/water = 2, ) result = /obj/item/food/candied_pineapple + added_foodtypes = SUGAR category = CAT_MISCFOOD /datum/crafting_recipe/food/tzatziki_sauce diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm index aeb27f026b2..2597a70d501 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm @@ -53,6 +53,7 @@ /obj/item/food/onion_slice = 1 ) result = /obj/item/food/squeaking_stir_fry + removed_foodtypes = BREAKFAST category = CAT_MOTH /datum/crafting_recipe/food/sweet_chili_cabbage_wrap @@ -96,6 +97,7 @@ /obj/item/food/cheese/firm_cheese_slice = 1 ) result = /obj/item/food/raw_green_lasagne + added_foodtypes = RAW category = CAT_MOTH /datum/crafting_recipe/food/raw_baked_rice @@ -107,6 +109,8 @@ /obj/item/food/grown/potato = 2, ) result = /obj/item/food/raw_baked_rice + removed_foodtypes = BREAKFAST + added_foodtypes = RAW category = CAT_MOTH /datum/crafting_recipe/food/buttered_baked_corn @@ -146,9 +150,9 @@ reqs = list( /obj/item/food/cheese/mozzarella = 1, /obj/item/food/breadslice/plain = 2, - /obj/item/food/tomato_sauce = 1 ) result = /obj/item/food/mozzarella_sticks + added_foodtypes = FRIED category = CAT_MOTH /datum/crafting_recipe/food/raw_stuffed_peppers @@ -181,6 +185,8 @@ /datum/reagent/consumable/cornmeal_batter = 5 ) result = /obj/item/food/mac_balls + removed_foodtypes = JUNKFOOD + added_foodtypes = FRIED category = CAT_MOTH /datum/crafting_recipe/food/hua_mulan_congee @@ -192,6 +198,8 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/bowled/hua_mulan_congee + removed_foodtypes = BREAKFAST + added_foodtypes = GRAIN category = CAT_MOTH /datum/crafting_recipe/food/fried_eggplant_polenta @@ -244,6 +252,7 @@ /obj/item/reagent_containers/cup/bowl = 1, ) result = /obj/item/food/salad/cotton_salad + added_foodtypes = CLOTH category = CAT_MOTH /datum/crafting_recipe/food/moth_kachumbari @@ -269,6 +278,7 @@ /obj/item/food/grown/herbs = 1 ) result = /obj/item/food/raw_mothic_margherita + added_foodtypes = RAW category = CAT_PIZZA /datum/crafting_recipe/food/raw_mothic_firecracker @@ -280,6 +290,7 @@ /obj/item/food/grown/ghost_chili = 1 ) result = /obj/item/food/raw_mothic_firecracker + added_foodtypes = RAW category = CAT_PIZZA /datum/crafting_recipe/food/raw_mothic_five_cheese @@ -293,6 +304,7 @@ /obj/item/food/cheese/cheese_curds = 1 ) result = /obj/item/food/raw_mothic_five_cheese + added_foodtypes = RAW category = CAT_PIZZA /datum/crafting_recipe/food/raw_mothic_white_pie @@ -305,6 +317,7 @@ /obj/item/food/grown/herbs = 1 ) result = /obj/item/food/raw_mothic_white_pie + added_foodtypes = RAW category = CAT_PIZZA /datum/crafting_recipe/food/raw_mothic_pesto @@ -315,6 +328,7 @@ /obj/item/food/cheese/mozzarella = 1 ) result = /obj/item/food/raw_mothic_pesto + added_foodtypes = RAW category = CAT_PIZZA /datum/crafting_recipe/food/raw_mothic_garlic @@ -325,6 +339,7 @@ /obj/item/food/grown/herbs = 1 ) result = /obj/item/food/raw_mothic_garlic + added_foodtypes = RAW category = CAT_PIZZA /datum/crafting_recipe/food/moth_cheese_cakes @@ -337,6 +352,8 @@ /datum/reagent/consumable/honey = 5 ) result = /obj/item/food/moth_cheese_cakes + added_foodtypes = GRAIN|FRIED + removed_foodtypes = JUNKFOOD category = CAT_MOTH /datum/crafting_recipe/food/mothmallow @@ -348,6 +365,7 @@ /datum/reagent/consumable/ethanol/rum = 5 ) result = /obj/item/food/cake/mothmallow + added_foodtypes = SUGAR category = CAT_MOTH /datum/crafting_recipe/food/moffin @@ -358,6 +376,7 @@ /obj/item/stack/sheet/cloth = 1, ) result = /obj/item/food/muffin/moffin + added_foodtypes = CLOTH|SUGAR|BREAKFAST category = CAT_MOTH // Soups diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm index 130fcb57b69..75f52d816c3 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm @@ -11,6 +11,8 @@ /obj/item/food/pastrybase = 1 ) result = /obj/item/food/donut/plain + added_foodtypes = JUNKFOOD|SUGAR|BREAKFAST|FRIED + removed_foodtypes = RAW category = CAT_PASTRY // It is so stupid that we have to do this but because food crafting clears all reagents that got added during init, @@ -29,6 +31,7 @@ /datum/reagent/consumable/capsaicin = 5, /obj/item/food/pastrybase = 1 ) + added_foodtypes = JUNKFOOD|BREAKFAST|FRIED result = /obj/item/food/donut/chaos /datum/crafting_recipe/food/donut/meat @@ -38,6 +41,7 @@ /obj/item/food/meat/rawcutlet = 1, /obj/item/food/pastrybase = 1 ) + added_foodtypes = JUNKFOOD|BREAKFAST|FRIED|GORE result = /obj/item/food/donut/meat /datum/crafting_recipe/food/donut/jelly @@ -46,6 +50,7 @@ /datum/reagent/consumable/berryjuice = 5, /obj/item/food/pastrybase = 1 ) + added_foodtypes = parent_type::added_foodtypes|FRUIT result = /obj/item/food/donut/jelly/plain /datum/crafting_recipe/food/donut/slimejelly @@ -54,6 +59,7 @@ /datum/reagent/toxin/slimejelly = 5, /obj/item/food/pastrybase = 1 ) + added_foodtypes = parent_type::added_foodtypes|TOXIC result = /obj/item/food/donut/jelly/slimejelly/plain @@ -63,6 +69,7 @@ /datum/reagent/consumable/berryjuice = 3, /obj/item/food/donut/plain = 1 ) + added_foodtypes = parent_type::added_foodtypes|FRUIT result = /obj/item/food/donut/berry /datum/crafting_recipe/food/donut/trumpet @@ -80,6 +87,7 @@ /datum/reagent/consumable/applejuice = 3, /obj/item/food/donut/plain = 1 ) + added_foodtypes = parent_type::added_foodtypes|FRUIT result = /obj/item/food/donut/apple /datum/crafting_recipe/food/donut/caramel @@ -104,6 +112,7 @@ /datum/reagent/consumable/blumpkinjuice = 3, /obj/item/food/donut/plain = 1 ) + added_foodtypes = VEGETABLES result = /obj/item/food/donut/blumpkin /datum/crafting_recipe/food/donut/bungo @@ -179,6 +188,7 @@ /datum/reagent/consumable/blumpkinjuice = 3, /obj/item/food/donut/jelly/plain = 1 ) + added_foodtypes = parent_type::added_foodtypes|VEGETABLES result = /obj/item/food/donut/jelly/blumpkin /datum/crafting_recipe/food/donut/jelly/bungo @@ -213,6 +223,7 @@ /datum/reagent/consumable/berryjuice = 3, /obj/item/food/donut/jelly/slimejelly/plain = 1 ) + added_foodtypes = parent_type::added_foodtypes|FRUIT result = /obj/item/food/donut/jelly/slimejelly/berry /datum/crafting_recipe/food/donut/slimejelly/trumpet @@ -230,6 +241,7 @@ /datum/reagent/consumable/applejuice = 3, /obj/item/food/donut/jelly/slimejelly/plain = 1 ) + added_foodtypes = parent_type::added_foodtypes|FRUIT result = /obj/item/food/donut/jelly/slimejelly/apple /datum/crafting_recipe/food/donut/slimejelly/caramel @@ -254,6 +266,7 @@ /datum/reagent/consumable/blumpkinjuice = 3, /obj/item/food/donut/jelly/slimejelly/plain = 1 ) + added_foodtypes = parent_type::added_foodtypes|VEGETABLES result = /obj/item/food/donut/jelly/slimejelly/blumpkin /datum/crafting_recipe/food/donut/slimejelly/bungo @@ -289,6 +302,7 @@ /obj/item/food/pastrybase = 2 ) result = /obj/item/food/waffles + added_foodtypes = BREAKFAST category = CAT_PASTRY @@ -308,6 +322,7 @@ /obj/item/food/meat/slab/human = 2 ) result = /obj/item/food/soylentgreen + removed_foodtypes = GORE|RAW category = CAT_PASTRY @@ -318,6 +333,7 @@ /obj/item/food/pastrybase = 2 ) result = /obj/item/food/rofflewaffles + added_foodtypes = VEGETABLES|BREAKFAST category = CAT_PASTRY ////////////////////////////////////////////////DONKPOCCKETS//////////////////////////////////////////////// @@ -326,50 +342,50 @@ time = 15 name = "Donk-pocket" reqs = list( - /obj/item/food/pastrybase = 1, + /obj/item/food/doughslice = 1, /obj/item/food/meatball = 1 ) - result = /obj/item/food/donkpocket + result = /obj/item/food/donkpocket/homemade category = CAT_PASTRY /datum/crafting_recipe/food/dankpocket time = 15 name = "Dank-pocket" reqs = list( - /obj/item/food/pastrybase = 1, + /obj/item/food/doughslice = 1, /obj/item/food/grown/cannabis = 1 ) - result = /obj/item/food/dankpocket + result = /obj/item/food/donkpocket/dank category = CAT_PASTRY /datum/crafting_recipe/food/donkpocket/spicy time = 15 name = "Spicy-pocket" reqs = list( - /obj/item/food/pastrybase = 1, + /obj/item/food/doughslice = 1, /obj/item/food/meatball = 1, /obj/item/food/grown/chili = 1 ) - result = /obj/item/food/donkpocket/spicy + result = /obj/item/food/donkpocket/spicy/homemade category = CAT_PASTRY /datum/crafting_recipe/food/donkpocket/teriyaki time = 15 name = "Teriyaki-pocket" reqs = list( - /obj/item/food/pastrybase = 1, + /obj/item/food/doughslice = 1, /obj/item/food/meatball = 1, /datum/reagent/consumable/soysauce = 3 ) - result = /obj/item/food/donkpocket/teriyaki + result = /obj/item/food/donkpocket/teriyaki/homemade category = CAT_PASTRY /datum/crafting_recipe/food/donkpocket/pizza time = 15 name = "Pizza-pocket" reqs = list( - /obj/item/food/pastrybase = 1, - /obj/item/food/meatball = 1, + /obj/item/food/doughslice = 1, + /obj/item/food/cheese/wedge = 1, /obj/item/food/grown/tomato = 1 ) result = /obj/item/food/donkpocket/pizza @@ -379,28 +395,30 @@ time = 15 name = "Honk-Pocket" reqs = list( - /obj/item/food/pastrybase = 1, + /obj/item/food/doughslice = 1, /obj/item/food/grown/banana = 1, /datum/reagent/consumable/sugar = 3 ) result = /obj/item/food/donkpocket/honk + added_foodtypes = FRUIT|SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/donkpocket/berry time = 15 name = "Berry-pocket" reqs = list( - /obj/item/food/pastrybase = 1, + /obj/item/food/doughslice = 1, /obj/item/food/grown/berries = 1 ) result = /obj/item/food/donkpocket/berry + added_foodtypes = FRUIT|SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/donkpocket/gondola time = 15 name = "Gondola-pocket" reqs = list( - /obj/item/food/pastrybase = 1, + /obj/item/food/doughslice = 1, /obj/item/food/meatball = 1, /datum/reagent/gondola_mutation_toxin = 5 ) @@ -411,13 +429,14 @@ time = 15 name = "Deluxe Donk-pocket" reqs = list( - /obj/item/food/pastrybase = 1, + /obj/item/food/doughslice = 1, /obj/item/food/meatball = 1, /obj/item/food/meat/bacon = 1, /obj/item/food/onion_slice/red = 1 ) result = /obj/item/food/donkpocket/deluxe category = CAT_PASTRY + removed_foodtypes = BREAKFAST crafting_flags = parent_type::crafting_flags | CRAFT_MUST_BE_LEARNED /datum/crafting_recipe/food/donkpocket/deluxe/nocarb @@ -430,18 +449,20 @@ /obj/item/food/grown/herbs = 1 ) result = /obj/item/food/donkpocket/deluxe/nocarb + removed_foodtypes = VEGETABLES //The herbs are only to enhance the flavor category = CAT_PASTRY /datum/crafting_recipe/food/donkpocket/deluxe/vegan time = 15 name = "Deluxe Donk-roll" reqs = list( - /obj/item/food/pastrybase = 1, + /obj/item/food/doughslice = 1, /obj/item/food/boiledrice = 1, /obj/item/food/grown/bell_pepper = 1, - /obj/item/food/tofu = 2 + /obj/item/food/tofu = 2, ) result = /obj/item/food/donkpocket/deluxe/vegan + removed_foodtypes = BREAKFAST category = CAT_PASTRY ////////////////////////////////////////////////MUFFINS//////////////////////////////////////////////// @@ -453,6 +474,7 @@ /datum/reagent/consumable/milk = 5, /obj/item/food/pastrybase = 1 ) + added_foodtypes = BREAKFAST|SUGAR|DAIRY result = /obj/item/food/muffin category = CAT_PASTRY @@ -464,6 +486,7 @@ /obj/item/food/grown/berries = 1 ) result = /obj/item/food/muffin/berry + added_foodtypes = BREAKFAST|SUGAR|FRUIT|DAIRY category = CAT_PASTRY /datum/crafting_recipe/food/booberrymuffin @@ -475,6 +498,7 @@ /obj/item/ectoplasm = 1 ) result = /obj/item/food/muffin/booberry + added_foodtypes = BREAKFAST|SUGAR|DAIRY category = CAT_PASTRY ////////////////////////////////////////////OTHER//////////////////////////////////////////// @@ -489,6 +513,7 @@ /obj/item/food/bread/plain = 1 ) result = /obj/item/food/khachapuri + added_foodtypes = MEAT category = CAT_PASTRY /datum/crafting_recipe/food/sugarcookie @@ -499,6 +524,7 @@ /obj/item/food/pastrybase = 1 ) result = /obj/item/food/cookie/sugar + added_foodtypes = JUNKFOOD|SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/spookyskull @@ -510,6 +536,7 @@ /datum/reagent/consumable/milk = 5 ) result = /obj/item/food/cookie/sugar/spookyskull + added_foodtypes = JUNKFOOD|SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/spookycoffin @@ -521,6 +548,7 @@ /datum/reagent/consumable/coffee = 5 ) result = /obj/item/food/cookie/sugar/spookycoffin + added_foodtypes = JUNKFOOD|SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/fortunecookie @@ -534,6 +562,7 @@ /obj/item/paper = 1 ) result = /obj/item/food/fortunecookie + added_foodtypes = SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/poppypretzel @@ -544,6 +573,7 @@ /obj/item/food/pastrybase = 1 ) result = /obj/item/food/poppypretzel + added_foodtypes = SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/plumphelmetbiscuit @@ -561,7 +591,7 @@ name = "Cracker" reqs = list( /datum/reagent/consumable/salt = 1, - /obj/item/food/pastrybase = 1, + /obj/item/food/doughslice = 1, ) result = /obj/item/food/cracker category = CAT_PASTRY @@ -593,6 +623,7 @@ /obj/item/food/grown/oat = 1 ) result = /obj/item/food/cookie/raisin + removed_foodtypes = JUNKFOOD category = CAT_PASTRY /datum/crafting_recipe/food/cherrycupcake @@ -602,6 +633,7 @@ /obj/item/food/grown/cherries = 1 ) result = /obj/item/food/cherrycupcake + added_foodtypes = SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/bluecherrycupcake @@ -611,6 +643,7 @@ /obj/item/food/grown/bluecherries = 1 ) result = /obj/item/food/cherrycupcake/blue + added_foodtypes = SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/jupitercupcake @@ -621,6 +654,7 @@ /datum/reagent/consumable/caramel = 3, ) result = /obj/item/food/jupitercupcake + added_foodtypes = SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/honeybun @@ -630,6 +664,7 @@ /datum/reagent/consumable/honey = 5 ) result = /obj/item/food/honeybun + added_foodtypes = SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/cannoli @@ -640,6 +675,7 @@ /datum/reagent/consumable/sugar = 3 ) result = /obj/item/food/cannoli + added_foodtypes = SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/peanut_butter_cookie @@ -649,6 +685,7 @@ /obj/item/food/pastrybase = 1 ) result = /obj/item/food/cookie/peanut_butter + added_foodtypes = JUNKFOOD|NUTS category = CAT_PASTRY /datum/crafting_recipe/food/raw_brownie_batter @@ -661,6 +698,8 @@ /obj/item/food/butterslice = 1 ) result = /obj/item/food/raw_brownie_batter + added_foodtypes = GRAIN|JUNKFOOD|BREAKFAST|SUGAR + removed_foodtypes = MEAT|RAW category = CAT_PASTRY /datum/crafting_recipe/food/peanut_butter_brownie_batter @@ -674,6 +713,8 @@ /obj/item/food/butterslice = 1 ) result = /obj/item/food/peanut_butter_brownie_batter + added_foodtypes = GRAIN|JUNKFOOD|BREAKFAST|SUGAR|NUTS + removed_foodtypes = MEAT|RAW category = CAT_PASTRY /datum/crafting_recipe/food/crunchy_peanut_butter_tart @@ -685,6 +726,7 @@ /datum/reagent/consumable/cream = 5, ) result = /obj/item/food/crunchy_peanut_butter_tart + added_foodtypes = JUNKFOOD|SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/chocolate_chip_cookie @@ -694,6 +736,7 @@ /obj/item/food/chocolatebar = 1, ) result = /obj/item/food/cookie/chocolate_chip_cookie + removed_foodtypes = JUNKFOOD category = CAT_PASTRY /datum/crafting_recipe/food/snickerdoodle @@ -703,6 +746,7 @@ /datum/reagent/consumable/vanilla = 5, ) result = /obj/item/food/cookie/snickerdoodle + added_foodtypes = SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/thumbprint_cookie @@ -712,6 +756,7 @@ /datum/reagent/consumable/cherryjelly = 5, ) result = /obj/item/food/cookie/thumbprint_cookie + added_foodtypes = FRUIT|SUGAR category = CAT_PASTRY /datum/crafting_recipe/food/macaron diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm index a215ecdd750..5eff8da6318 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm @@ -11,6 +11,7 @@ /obj/item/food/grown/banana = 1 ) result = /obj/item/food/pie/cream + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/meatpie @@ -49,6 +50,7 @@ /obj/item/food/grown/cherries = 1 ) result = /obj/item/food/pie/cherrypie + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/berryclafoutis @@ -58,6 +60,7 @@ /obj/item/food/grown/berries = 1 ) result = /obj/item/food/pie/berryclafoutis + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/bearypie @@ -68,6 +71,7 @@ /obj/item/food/meat/steak/bear = 1 ) result = /obj/item/food/pie/bearypie + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/amanitapie @@ -77,6 +81,7 @@ /obj/item/food/grown/mushroom/amanita = 1 ) result = /obj/item/food/pie/amanita_pie + added_foodtypes = TOXIC|GROSS category = CAT_PIE /datum/crafting_recipe/food/plumppie @@ -95,6 +100,7 @@ /obj/item/food/grown/apple = 1 ) result = /obj/item/food/pie/applepie + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/pumpkinpie @@ -106,6 +112,7 @@ /obj/item/food/grown/pumpkin = 1 ) result = /obj/item/food/pie/pumpkinpie + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/goldenappletart @@ -117,6 +124,7 @@ /obj/item/food/grown/apple/gold = 1 ) result = /obj/item/food/pie/appletart + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/grapetart @@ -128,6 +136,7 @@ /obj/item/food/grown/grapes = 3 ) result = /obj/item/food/pie/grapetart + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/mimetart @@ -140,6 +149,7 @@ ) result = /obj/item/food/pie/mimetart category = CAT_PIE + added_foodtypes = SUGAR crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED /datum/crafting_recipe/food/berrytart @@ -152,6 +162,7 @@ ) result = /obj/item/food/pie/berrytart category = CAT_PIE + added_foodtypes = SUGAR crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED /datum/crafting_recipe/food/cocolavatart @@ -165,6 +176,8 @@ ) result = /obj/item/food/pie/cocolavatart category = CAT_PIE + added_foodtypes = SUGAR + removed_foodtypes = JUNKFOOD crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED /datum/crafting_recipe/food/blumpkinpie @@ -176,6 +189,7 @@ /obj/item/food/grown/pumpkin/blumpkin = 1 ) result = /obj/item/food/pie/blumpkinpie + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/dulcedebatata @@ -186,6 +200,7 @@ /obj/item/food/grown/potato/sweet = 2 ) result = /obj/item/food/pie/dulcedebatata + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/frostypie @@ -195,6 +210,7 @@ /obj/item/food/grown/bluecherries = 1 ) result = /obj/item/food/pie/frostypie + added_foodtypes = FRUIT|SUGAR category = CAT_PIE /datum/crafting_recipe/food/baklava @@ -205,6 +221,7 @@ /obj/item/seeds/wheat/oat = 4 ) result = /obj/item/food/pie/baklava + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/frenchsilkpie @@ -215,6 +232,8 @@ /obj/item/food/chocolatebar = 2, ) result = /obj/item/food/pie/frenchsilkpie + removed_foodtypes = JUNKFOOD + added_foodtypes = SUGAR category = CAT_PIE /datum/crafting_recipe/food/shepherds_pie @@ -244,4 +263,5 @@ /obj/item/stock_parts/power_store/cell = 2, ) result = /obj/item/food/pie/bacid_pie + added_foodtypes = TOXIC category = CAT_PIE diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm index f67071a86f5..56d31a233e7 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm @@ -3,14 +3,17 @@ ////////////////////////////////////////////////PIZZA!!!//////////////////////////////////////////////// -/datum/crafting_recipe/food/margheritapizza +/datum/crafting_recipe/food/pizza + added_foodtypes = RAW + category = CAT_PIZZA + +/datum/crafting_recipe/food/pizza/margherita reqs = list( /obj/item/food/flatdough = 1, /obj/item/food/cheese/wedge = 4, /obj/item/food/grown/tomato = 1 ) result = /obj/item/food/pizza/margherita/raw - category = CAT_PIZZA /datum/crafting_recipe/food/meatpizza reqs = list( @@ -20,9 +23,8 @@ /obj/item/food/grown/tomato = 1 ) result = /obj/item/food/pizza/meat/raw - category = CAT_PIZZA -/datum/crafting_recipe/food/arnold +/datum/crafting_recipe/food/pizza/arnold reqs = list( /obj/item/food/flatdough = 1, /obj/item/food/meat/rawcutlet = 3, @@ -31,38 +33,37 @@ /obj/item/food/grown/tomato = 1 ) result = /obj/item/food/pizza/arnold/raw - category = CAT_PIZZA -/datum/crafting_recipe/food/mushroompizza +/datum/crafting_recipe/food/pizza/mushroom reqs = list( /obj/item/food/flatdough = 1, - /obj/item/food/grown/mushroom = 5 + /obj/item/food/grown/mushroom = 5, + /obj/item/food/cheese/wedge = 1, ) result = /obj/item/food/pizza/mushroom/raw - category = CAT_PIZZA -/datum/crafting_recipe/food/vegetablepizza +/datum/crafting_recipe/food/pizza/vegetable reqs = list( /obj/item/food/flatdough = 1, /obj/item/food/grown/eggplant = 1, /obj/item/food/grown/carrot = 1, /obj/item/food/grown/corn = 1, - /obj/item/food/grown/tomato = 1 + /obj/item/food/grown/tomato = 1, + /obj/item/food/cheese/wedge = 1, ) result = /obj/item/food/pizza/vegetable/raw - category = CAT_PIZZA -/datum/crafting_recipe/food/donkpocketpizza +/datum/crafting_recipe/food/pizza/donkpocket reqs = list( /obj/item/food/flatdough = 1, /obj/item/food/donkpocket = 3, /obj/item/food/cheese/wedge = 1, /obj/item/food/grown/tomato = 1 ) + added_foodtypes = parent_type::added_foodtypes|JUNKFOOD result = /obj/item/food/pizza/donkpocket/raw - category = CAT_PIZZA -/datum/crafting_recipe/food/dankpizza +/datum/crafting_recipe/food/pizza/dank reqs = list( /obj/item/food/flatdough = 1, /obj/item/food/grown/ambrosia/vulgaris = 3, @@ -70,9 +71,8 @@ /obj/item/food/grown/tomato = 1 ) result = /obj/item/food/pizza/dank/raw - category = CAT_PIZZA -/datum/crafting_recipe/food/sassysagepizza +/datum/crafting_recipe/food/pizza/sassysage reqs = list( /obj/item/food/flatdough = 1, /obj/item/food/raw_meatball = 3, @@ -80,9 +80,8 @@ /obj/item/food/grown/tomato = 1 ) result = /obj/item/food/pizza/sassysage/raw - category = CAT_PIZZA -/datum/crafting_recipe/food/pineapplepizza +/datum/crafting_recipe/food/pizza/pineapple reqs = list( /obj/item/food/flatdough = 1, /obj/item/food/meat/rawcutlet = 2, @@ -91,25 +90,24 @@ /obj/item/food/grown/tomato = 1 ) result = /obj/item/food/pizza/pineapple/raw - category = CAT_PIZZA -/datum/crafting_recipe/food/antspizza +/datum/crafting_recipe/food/pizza/ants reqs = list( /obj/item/food/pizzaslice/margherita = 1, /datum/reagent/ants = 4 ) result = /obj/item/food/pizzaslice/ants - category = CAT_PIZZA + added_foodtypes = BUGS -/datum/crafting_recipe/food/energypizza +/datum/crafting_recipe/food/pizza/energy reqs = list( /obj/item/food/flatdough = 1, /obj/item/stock_parts/power_store/cell = 2, ) result = /obj/item/food/pizza/energy/raw - category = CAT_PIZZA + added_foodtypes = parent_type::added_foodtypes|TOXIC -/datum/crafting_recipe/food/raw_meat_calzone +/datum/crafting_recipe/food/pizza/raw_meat_calzone name = "Meat calzone" reqs = list( /obj/item/food/flatdough = 1, @@ -118,9 +116,8 @@ /obj/item/food/grown/tomato = 1, ) result = /obj/item/food/raw_meat_calzone - category = CAT_PIZZA -/datum/crafting_recipe/food/raw_vegetarian_calzone +/datum/crafting_recipe/food/pizza/raw_vegetarian_calzone name = "Vegetarian calzone" reqs = list( /obj/item/food/flatdough = 1, @@ -129,4 +126,3 @@ /obj/item/food/grown/onion = 1, ) result = /obj/item/food/raw_vegetarian_calzone - category = CAT_PIZZA diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm index 0bd29c51054..45b01b16e21 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm @@ -32,6 +32,7 @@ /obj/item/food/meatball = 1 ) result = /obj/item/food/salad/validsalad + added_foodtypes = FRIED category = CAT_SALAD /datum/crafting_recipe/food/melonfruitbowl diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm index 742e8c1f3c8..13c017d309b 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm @@ -32,6 +32,7 @@ /datum/reagent/toxin/slimejelly = 5, /obj/item/food/breadslice/plain = 2, ) + added_foodtypes = TOXIC result = /obj/item/food/sandwich/jelly/slime category = CAT_SANDWICH @@ -41,6 +42,7 @@ /datum/reagent/consumable/cherryjelly = 5, /obj/item/food/breadslice/plain = 2, ) + added_foodtypes = FRUIT|SUGAR result = /obj/item/food/sandwich/jelly/cherry category = CAT_SANDWICH @@ -50,6 +52,7 @@ /obj/item/food/breadslice/plain = 2, /obj/item/clothing/mask/fakemoustache = 1 ) + added_foodtypes = GROSS result = /obj/item/food/sandwich/notasandwich category = CAT_SANDWICH @@ -61,6 +64,7 @@ /obj/item/food/sausage = 1 ) result = /obj/item/food/hotdog + removed_foodtypes = BREAKFAST category = CAT_SANDWICH /datum/crafting_recipe/food/danish_hotdog @@ -73,6 +77,7 @@ /obj/item/food/grown/onion = 1, ) result = /obj/item/food/danish_hotdog + removed_foodtypes = BREAKFAST category = CAT_SANDWICH /datum/crafting_recipe/food/blt @@ -94,6 +99,7 @@ /datum/reagent/consumable/cherryjelly = 5 ) result = /obj/item/food/sandwich/peanut_butter_jelly + added_foodtypes = FRUIT|NUTS category = CAT_SANDWICH /datum/crafting_recipe/food/peanut_butter_banana_sandwich @@ -104,6 +110,7 @@ /obj/item/food/grown/banana = 1 ) result = /obj/item/food/sandwich/peanut_butter_banana + added_foodtypes = NUTS category = CAT_SANDWICH /datum/crafting_recipe/food/philly_cheesesteak @@ -136,4 +143,5 @@ /obj/item/food/butteredtoast = 1, ) result = /obj/item/food/sandwich/toast_sandwich + removed_foodtypes = BREAKFAST category = CAT_SANDWICH diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.dm index 60c7de2e333..1589dbc5383 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.dm @@ -6,6 +6,7 @@ /obj/item/food/fishmeat/carp = 1 ) result = /obj/item/food/cubancarp + added_foodtypes = GRAIN|FRIED category = CAT_SEAFOOD /datum/crafting_recipe/food/fishandchips @@ -25,6 +26,7 @@ /obj/item/food/fishmeat = 1 ) result = /obj/item/food/fishfingers + added_foodtypes = FRIED category = CAT_SEAFOOD /datum/crafting_recipe/food/fishfry @@ -35,16 +37,18 @@ /obj/item/food/fishmeat = 1 ) result = /obj/item/food/fishfry + added_foodtypes = FRIED category = CAT_SEAFOOD /datum/crafting_recipe/food/sashimi - name = "Sashimi" + name = "Spider Sashimi" reqs = list( /datum/reagent/consumable/soysauce = 5, /obj/item/food/spidereggs = 1, /obj/item/food/fishmeat = 1 ) result = /obj/item/food/sashimi + removed_foodtypes = TOXIC category = CAT_SEAFOOD /datum/crafting_recipe/food/fishtaco @@ -56,6 +60,7 @@ /obj/item/food/grown/cabbage = 1 ) result = /obj/item/food/taco/fish + category = CAT_SEAFOOD /datum/crafting_recipe/food/vegetariansushiroll @@ -67,6 +72,7 @@ /obj/item/food/grown/potato = 1 ) result = /obj/item/food/vegetariansushiroll + removed_foodtypes = BREAKFAST category = CAT_SEAFOOD /datum/crafting_recipe/food/spicyfiletroll @@ -79,6 +85,7 @@ /obj/item/food/grown/onion = 1 ) result = /obj/item/food/spicyfiletsushiroll + removed_foodtypes = BREAKFAST category = CAT_SEAFOOD /datum/crafting_recipe/food/nigiri_sushi @@ -90,6 +97,7 @@ /datum/reagent/consumable/soysauce = 2 ) result = /obj/item/food/nigiri_sushi + removed_foodtypes = BREAKFAST category = CAT_SEAFOOD /datum/crafting_recipe/food/meat_poke @@ -105,6 +113,7 @@ /obj/item/food/grown/cucumber = 1, ) result = /obj/item/food/meat_poke + removed_foodtypes = BREAKFAST category = CAT_SEAFOOD /datum/crafting_recipe/food/fish_poke @@ -120,6 +129,7 @@ /obj/item/food/grown/cucumber = 1, ) result = /obj/item/food/fish_poke + removed_foodtypes = BREAKFAST category = CAT_SEAFOOD /datum/crafting_recipe/food/futomaki_sushi_roll @@ -132,6 +142,7 @@ /obj/item/food/grown/cucumber = 1, ) result = /obj/item/food/futomaki_sushi_roll + removed_foodtypes = BREAKFAST category = CAT_SEAFOOD /datum/crafting_recipe/food/philadelphia_sushi_roll @@ -144,4 +155,5 @@ /obj/item/food/grown/cucumber = 1, ) result = /obj/item/food/philadelphia_sushi_roll + removed_foodtypes = BREAKFAST category = CAT_SEAFOOD diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm index edf82287373..da85e0159fb 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm @@ -92,6 +92,7 @@ /obj/item/food/grown/onion = 1, ) result = /obj/item/food/spaghetti/shoyu_tonkotsu_ramen + removed_foodtypes = BREAKFAST category = CAT_SPAGHETTI /datum/crafting_recipe/food/kitakata_ramen @@ -168,4 +169,5 @@ /datum/reagent/consumable/blackpepper = 2, ) result = /obj/item/food/spaghetti/carbonara + removed_foodtypes = BREAKFAST|RAW category = CAT_SPAGHETTI diff --git a/code/modules/food_and_drinks/restaurant/_venue.dm b/code/modules/food_and_drinks/restaurant/_venue.dm index a3b824023fd..4543c519dcf 100644 --- a/code/modules/food_and_drinks/restaurant/_venue.dm +++ b/code/modules/food_and_drinks/restaurant/_venue.dm @@ -88,11 +88,11 @@ // common code for the food thoughts appearance food_image.loc = customer_pawn - food_image.pixel_y = 32 - food_image.pixel_x = 16 + food_image.pixel_w = 16 + food_image.pixel_z = 32 SET_PLANE_EXPLICIT(food_image, HUD_PLANE, customer_pawn) food_image.plane = HUD_PLANE - food_image.appearance_flags = RESET_COLOR + food_image.appearance_flags = RESET_COLOR|KEEP_APART customer_pawn.hud_to_show_on_hover = customer_pawn.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/food_demands, "food_thoughts", food_image) return order diff --git a/code/modules/food_and_drinks/restaurant/custom_order.dm b/code/modules/food_and_drinks/restaurant/custom_order.dm index ac819e4debf..5374ee3482a 100644 --- a/code/modules/food_and_drinks/restaurant/custom_order.dm +++ b/code/modules/food_and_drinks/restaurant/custom_order.dm @@ -121,7 +121,7 @@ for(var/flavor in wanted_flavors) var/image/scoop = image('icons/obj/service/kitchen.dmi', "icecream_custom") scoop.color = GLOB.ice_cream_flavours[flavor].color - scoop.pixel_y = added_offset + scoop.pixel_z = added_offset i_scream.overlays += scoop added_offset += ICE_CREAM_SCOOP_OFFSET food_image.add_overlay(i_scream) diff --git a/code/modules/food_and_drinks/restaurant/customers/_customer.dm b/code/modules/food_and_drinks/restaurant/customers/_customer.dm index 7856323cad7..aaf1cc0de90 100644 --- a/code/modules/food_and_drinks/restaurant/customers/_customer.dm +++ b/code/modules/food_and_drinks/restaurant/customers/_customer.dm @@ -183,9 +183,7 @@ /datum/customer_data/french/get_overlays(mob/living/basic/robot_customer/customer) if(customer.ai_controller.blackboard[BB_CUSTOMER_LEAVING]) - var/mutable_appearance/flag = mutable_appearance(customer.icon, "french_flag") - flag.appearance_flags = RESET_COLOR - return flag + return mutable_appearance(customer.icon, "french_flag", appearance_flags = RESET_COLOR|KEEP_APART) @@ -231,9 +229,7 @@ /datum/customer_data/japanese/get_overlays(mob/living/basic/robot_customer/customer) //leaving and eaten if(type == /datum/customer_data/japanese && customer.ai_controller.blackboard[BB_CUSTOMER_LEAVING] && customer.ai_controller.blackboard[BB_CUSTOMER_EATING]) - var/mutable_appearance/you_won_my_heart = mutable_appearance('icons/effects/effects.dmi', "love_hearts") - you_won_my_heart.appearance_flags = RESET_COLOR - return you_won_my_heart + return mutable_appearance('icons/effects/effects.dmi', "love_hearts", appearance_flags = RESET_COLOR|KEEP_APART) /datum/customer_data/japanese/salaryman clothing_sets = list("japanese_salary") @@ -317,26 +313,15 @@ var/list/underlays = list() var/datum/sprite_accessory/moth_wings/wings = get_wings(customer) - - var/mutable_appearance/wings_behind = mutable_appearance(icon = 'icons/mob/human/species/moth/moth_wings.dmi', icon_state = "m_moth_wings_[wings.icon_state]_BEHIND") - wings_behind.appearance_flags = RESET_COLOR - underlays += wings_behind - + underlays += mutable_appearance(icon = 'icons/mob/human/species/moth/moth_wings.dmi', icon_state = "m_moth_wings_[wings.icon_state]_BEHIND", appearance_flags = RESET_COLOR|KEEP_APART) return underlays /datum/customer_data/moth/get_overlays(mob/living/basic/robot_customer/customer) var/list/overlays = list() var/datum/sprite_accessory/moth_wings/wings = get_wings(customer) - - var/mutable_appearance/wings_front = mutable_appearance(icon = 'icons/mob/human/species/moth/moth_wings.dmi', icon_state = "m_moth_wings_[wings.icon_state]_FRONT") - wings_front.appearance_flags = RESET_COLOR - overlays += wings_front - - var/mutable_appearance/jetpack = mutable_appearance(icon = customer.icon, icon_state = "mothbot_jetpack") - jetpack.appearance_flags = RESET_COLOR - overlays += jetpack - + overlays += mutable_appearance(icon = 'icons/mob/human/species/moth/moth_wings.dmi', icon_state = "m_moth_wings_[wings.icon_state]_FRONT", appearance_flags = RESET_COLOR|KEEP_APART) + overlays += mutable_appearance(icon = customer.icon, icon_state = "mothbot_jetpack", appearance_flags = RESET_COLOR|KEEP_APART) return overlays /datum/customer_data/mexican diff --git a/code/modules/hallucination/_hallucination.dm b/code/modules/hallucination/_hallucination.dm index df3bbe74757..22eb5809d9e 100644 --- a/code/modules/hallucination/_hallucination.dm +++ b/code/modules/hallucination/_hallucination.dm @@ -9,6 +9,8 @@ /datum/hallucination /// What is this hallucination's weight in the random hallucination pool? var/random_hallucination_weight = 0 + /// What tier of hallucination is this? Rarer ones should be higher + var/hallucination_tier = HALLUCINATION_TIER_NEVER /// Who's our next highest abstract parent type? var/abstract_hallucination_parent = /datum/hallucination /// Extra info about the hallucination displayed in the log. @@ -162,8 +164,8 @@ /obj/effect/client_image_holder/proc/generate_image() var/image/created = image(image_icon, src, image_state, image_layer, dir = src.dir) SET_PLANE_EXPLICIT(created, image_plane, src) - created.pixel_x = image_pixel_x - created.pixel_y = image_pixel_y + created.pixel_w = image_pixel_x + created.pixel_z = image_pixel_y if(image_color) created.color = image_color return created diff --git a/code/modules/hallucination/battle.dm b/code/modules/hallucination/battle.dm index 2a50093e3a0..6bcbafea52d 100644 --- a/code/modules/hallucination/battle.dm +++ b/code/modules/hallucination/battle.dm @@ -2,6 +2,7 @@ /datum/hallucination/battle abstract_hallucination_parent = /datum/hallucination/battle random_hallucination_weight = 3 + hallucination_tier = HALLUCINATION_TIER_COMMON /// Subtype of battle hallucination for gun based battles, where it sounds like someone is being shot. /datum/hallucination/battle/gun diff --git a/code/modules/hallucination/blood_flow.dm b/code/modules/hallucination/blood_flow.dm new file mode 100644 index 00000000000..aaaba4ba2c9 --- /dev/null +++ b/code/modules/hallucination/blood_flow.dm @@ -0,0 +1,69 @@ +/datum/hallucination/blood_flow + random_hallucination_weight = 3 + hallucination_tier = HALLUCINATION_TIER_COMMON + /// The bleeding hallucination's image + var/image/bleeding + +/datum/hallucination/blood_flow/start() + if(!hallucinator.client || !iscarbon(hallucinator)) + return FALSE + + var/mob/living/carbon/carb_hallucinator = hallucinator + if(!length(carb_hallucinator.bodyparts) || HAS_TRAIT(carb_hallucinator, TRAIT_NOBLOOD)) + return FALSE + var/obj/item/bodypart/picked + var/list/bodyparts = carb_hallucinator.bodyparts.Copy() + while(isnull(picked) && length(bodyparts)) + picked = pick_n_take(bodyparts) + if(!picked.can_bleed()) + picked = null + + if(isnull(picked)) + return FALSE + + feedback_details += "Bleeding: [picked]" + + RegisterSignals(picked, list(COMSIG_QDELETING, COMSIG_BODYPART_REMOVED), PROC_REF(stop_bleeding)) + RegisterSignal(hallucinator, SIGNAL_ADDTRAIT(TRAIT_NOBLOOD), PROC_REF(stop_bleeding)) + + to_chat(hallucinator, span_warning("Your [picked.plaintext_zone] looses a spray of blood!")) + var/bleed_duration = rand(16 SECONDS, 40 SECONDS) + addtimer(CALLBACK(src, PROC_REF(stop_bleeding), picked), bleed_duration) + if(prob(25)) + addtimer(CALLBACK(src, PROC_REF(by_god), picked), bleed_duration * pick(0.5, 0.66)) + stamina_loop() + + hallucinator.playsound_local(get_turf(hallucinator), pick('sound/effects/wounds/blood1.ogg', 'sound/effects/wounds/blood2.ogg', 'sound/effects/wounds/blood3.ogg'), 50, TRUE) + bleeding = image( + icon = 'icons/mob/effects/bleed_overlays.dmi', + icon_state = "[picked.body_zone]_[pick(2, 3)]", + loc = hallucinator, + ) + bleeding.layer = -WOUND_LAYER + hallucinator.client?.images += bleeding + return TRUE + +/datum/hallucination/blood_flow/Destroy() + hallucinator.client?.images -= bleeding + return ..() + +/datum/hallucination/blood_flow/proc/by_god(obj/item/bodypart/picked) + if(QDELETED(src) || QDELETED(hallucinator) || QDELETED(picked)) + return + + to_chat(hallucinator, span_warning("The blood doesn't stop flowing, yet [picked.plaintext_zone] doesn't seem to hurt...")) + +/datum/hallucination/blood_flow/proc/stop_bleeding(obj/item/bodypart/source) + SIGNAL_HANDLER + UnregisterSignal(source, list(COMSIG_QDELETING, COMSIG_BODYPART_REMOVED)) + UnregisterSignal(hallucinator, SIGNAL_ADDTRAIT(TRAIT_NOBLOOD)) + if(!QDELETED(source)) + to_chat(hallucinator, span_warning("Your [source.plaintext_zone] stops bleeding.")) + if(!QDELETED(src)) + qdel(src) + +/datum/hallucination/blood_flow/proc/stamina_loop() + set waitfor = FALSE + while(!QDELETED(src) && !QDELETED(hallucinator)) + hallucinator.adjustStaminaLoss(5) + sleep(4 SECONDS) diff --git a/code/modules/hallucination/body.dm b/code/modules/hallucination/body.dm index cba2ce0c31d..055268d0706 100644 --- a/code/modules/hallucination/body.dm +++ b/code/modules/hallucination/body.dm @@ -1,6 +1,7 @@ /// Makes a random body appear and disappear quickly in view of the hallucinator. /datum/hallucination/body abstract_hallucination_parent = /datum/hallucination/body + hallucination_tier = HALLUCINATION_TIER_COMMON /// The file to make the body image from. var/body_image_file /// The icon state to make the body image form. @@ -126,6 +127,7 @@ /datum/hallucination/body/weird random_hallucination_weight = 0.1 // These are very uncommon abstract_hallucination_parent = /datum/hallucination/body/weird + hallucination_tier = HALLUCINATION_TIER_RARE /datum/hallucination/body/weird/alien body_image_file = 'icons/mob/nonhuman-player/alien.dmi' @@ -140,6 +142,7 @@ body_image_file = 'icons/mob/simple/mob.dmi' body_image_state = "chronostuck" body_floats = TRUE + hallucination_tier = HALLUCINATION_TIER_VERYSPECIAL /datum/hallucination/body/weird/god body_image_file = 'icons/mob/simple/mob.dmi' @@ -158,6 +161,7 @@ /datum/hallucination/body/weird/bones body_image_file = 'icons/obj/trader_signs.dmi' body_image_state = "mrbones" + hallucination_tier = HALLUCINATION_TIER_VERYSPECIAL /datum/hallucination/body/weird/freezer random_hallucination_weight = 0.3 // Slightly more common since it's cool (heh) @@ -165,11 +169,12 @@ body_image_state = "the_freezer" body_layer = ABOVE_ALL_MOB_LAYER spawn_under_hallucinator = TRUE + hallucination_tier = HALLUCINATION_TIER_VERYSPECIAL /datum/hallucination/body/weird/freezer/make_body_image(turf/location) var/image/body = ..() - body.pixel_x = pick(rand(-208,-48), rand(48, 208)) - body.pixel_y = pick(rand(-208,-48), rand(48, 208)) + body.pixel_w = pick(rand(-208,-48), rand(48, 208)) + body.pixel_z = pick(rand(-208,-48), rand(48, 208)) body.alpha = 245 SET_PLANE_EXPLICIT(body, ABOVE_HUD_PLANE, location) return body @@ -190,5 +195,5 @@ if(QDELETED(src)) return // Spook 'em before we delete - shown_body.pixel_x = (shown_body.pixel_x / 2) - shown_body.pixel_y = (shown_body.pixel_y / 2) + shown_body.pixel_w = (shown_body.pixel_w / 2) + shown_body.pixel_z = (shown_body.pixel_z / 2) diff --git a/code/modules/hallucination/bolted_airlocks.dm b/code/modules/hallucination/bolted_airlocks.dm index f50c8876100..fd8e13279f4 100644 --- a/code/modules/hallucination/bolted_airlocks.dm +++ b/code/modules/hallucination/bolted_airlocks.dm @@ -1,5 +1,6 @@ /datum/hallucination/bolts random_hallucination_weight = 7 + hallucination_tier = HALLUCINATION_TIER_COMMON /// A list of weakrefs to airlocks we bolt down around us var/list/datum/weakref/airlocks_to_hit /// A list of weakrefs to fake lock hallucinations we've created diff --git a/code/modules/hallucination/bubblegum_attack.dm b/code/modules/hallucination/bubblegum_attack.dm index 529d67dcd35..66dfa606dc3 100644 --- a/code/modules/hallucination/bubblegum_attack.dm +++ b/code/modules/hallucination/bubblegum_attack.dm @@ -1,6 +1,7 @@ /// Sends a fake bubblegum charging through a nearby wall to our target. /datum/hallucination/oh_yeah random_hallucination_weight = 1 + hallucination_tier = HALLUCINATION_TIER_RARE /// An image overlayed to the wall bubblegum comes out of, to look destroyed. var/image/fake_broken_wall /// An image put where bubblegum is expected to land, to mimic his charge "rune" icon. diff --git a/code/modules/hallucination/delusions.dm b/code/modules/hallucination/delusions.dm index e11e07e99cb..c90b60d2f41 100644 --- a/code/modules/hallucination/delusions.dm +++ b/code/modules/hallucination/delusions.dm @@ -1,6 +1,7 @@ /// A hallucination that makes us and (possibly) other people look like something else. /datum/hallucination/delusion abstract_hallucination_parent = /datum/hallucination/delusion + hallucination_tier = HALLUCINATION_TIER_UNCOMMON /// The duration of the delusions var/duration = 30 SECONDS @@ -28,8 +29,8 @@ /// The name of the delusion image var/delusion_name - /// A list of all images we've made - var/list/image/delusions + /// An assoc list of affected mobs -> delusions of them we've made + var/list/delusions /datum/hallucination/delusion/New( mob/living/hallucinator, @@ -55,7 +56,7 @@ /datum/hallucination/delusion/Destroy() if(!QDELETED(hallucinator) && LAZYLEN(delusions)) - hallucinator.client?.images -= delusions + hallucinator.client?.images -= flatten_list(delusions) LAZYNULL(delusions) return ..() @@ -65,6 +66,9 @@ return FALSE feedback_details += "Delusion: [delusion_name]" + hallucinator.mob_flags |= MOB_HAS_SCREENTIPS_NAME_OVERRIDE + RegisterSignal(hallucinator, COMSIG_MOB_REQUESTING_SCREENTIP_NAME_FROM_USER, PROC_REF(screentip_name_override)) + RegisterSignal(hallucinator, COMSIG_LIVING_PERCEIVE_EXAMINE_NAME, PROC_REF(examine_name_override)) var/list/mob/living/carbon/human/funny_looking_mobs = list() @@ -73,9 +77,8 @@ funny_looking_mobs |= GLOB.human_list.Copy() // The delusion includes us - we might be in it already, we might not - if(affects_us) + if(affects_us && ishuman(hallucinator)) funny_looking_mobs |= hallucinator - // The delusion should not inlude us else funny_looking_mobs -= hallucinator @@ -87,9 +90,11 @@ continue funny_looking_mobs -= nearby_human - for(var/mob/living/carbon/human/found_human in funny_looking_mobs) + for(var/mob/living/carbon/human/found_human as anything in funny_looking_mobs) var/image/funny_image = make_delusion_image(found_human) - LAZYADD(delusions, funny_image) + RegisterSignal(found_human, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(on_z_change)) + RegisterSignal(found_human, COMSIG_QDELETING, PROC_REF(on_mob_delete), TRUE) + LAZYSET(delusions, found_human, funny_image) hallucinator.client.images |= funny_image if(play_wabbajack) @@ -111,6 +116,39 @@ SET_PLANE_EXPLICIT(funny_image, ABOVE_GAME_PLANE, over_who) return funny_image +/datum/hallucination/delusion/proc/on_mob_delete(mob/living/carbon/human/source) + SIGNAL_HANDLER + + if (source == hallucinator) + qdel(src) + return + + hallucinator.client.images -= delusions[source] + LAZYREMOVE(delusions, source) + +/datum/hallucination/delusion/proc/on_z_change(mob/living/carbon/human/source) + SIGNAL_HANDLER + var/image/funny_image = delusions[source] + SET_PLANE_EXPLICIT(funny_image, ABOVE_GAME_PLANE, source) + +/datum/hallucination/delusion/proc/examine_name_override(datum/source, mob/living/examined, visible_name, list/name_override) + SIGNAL_HANDLER + + if(!ishuman(examined) || !LAZYACCESS(delusions, examined)) + return NONE + + name_override[1] = delusion_name + return COMPONENT_EXAMINE_NAME_OVERRIDEN + +/datum/hallucination/delusion/proc/screentip_name_override(datum/source, list/returned_name, obj/item/held_item, atom/hovered) + SIGNAL_HANDLER + + if(!ishuman(hovered) || !LAZYACCESS(delusions, hovered)) + return NONE + + returned_name[1] = delusion_name + return SCREENTIP_NAME_SET + /// Used for making custom delusions. /datum/hallucination/delusion/custom random_hallucination_weight = 0 @@ -212,6 +250,7 @@ delusion_name = "Syndicate" affects_others = TRUE affects_us = FALSE + hallucination_tier = HALLUCINATION_TIER_RARE /datum/hallucination/delusion/preset/syndies/make_delusion_image(mob/over_who) delusion_appearance = get_dynamic_human_appearance( diff --git a/code/modules/hallucination/eyes_in_dark.dm b/code/modules/hallucination/eyes_in_dark.dm new file mode 100644 index 00000000000..60f54bb80ab --- /dev/null +++ b/code/modules/hallucination/eyes_in_dark.dm @@ -0,0 +1,91 @@ +/datum/hallucination/eyes_in_dark + random_hallucination_weight = 2 + hallucination_tier = HALLUCINATION_TIER_COMMON + /// The floating eye effect, somewhere in the world + var/obj/effect/abstract/floating_eyes/eyes + +/datum/hallucination/eyes_in_dark/Destroy() + if(QDELETED(eyes)) + eyes = null + else + QDEL_NULL(eyes) + return ..() + +/datum/hallucination/eyes_in_dark/start() + if(!hallucinator.client) + return FALSE + + if(hallucinator.lighting_cutoff >= 2.5) + return FALSE + + var/list/valid = list() + for(var/turf/open/nearby in view(hallucinator)) + if(nearby.get_lumcount() > LIGHTING_TILE_IS_DARK) + continue + valid += nearby + + if(!length(valid)) + return FALSE + + if(prob(5)) + to_chat(hallucinator, span_warning("You feel like you're being watched...")) + + var/turf/selected = pick(valid) + feedback_details += "Eye coords: [selected.x], [selected.y], [selected.z]" + eyes = new(selected, hallucinator) + RegisterSignal(eyes, COMSIG_QDELETING, PROC_REF(end_hallucination)) + addtimer(CALLBACK(src, PROC_REF(end_hallucination_gracefully)), rand(60 SECONDS, 180 SECONDS)) + return TRUE + +/datum/hallucination/eyes_in_dark/proc/end_hallucination_gracefully() + animate(eyes, alpha = 0, time = 1 SECONDS) + QDEL_IN(src, 1.2 SECONDS) + +/datum/hallucination/eyes_in_dark/proc/end_hallucination() + SIGNAL_HANDLER + if(!QDELETED(src)) + qdel(src) + +/obj/effect/abstract/floating_eyes + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + // Who sees the eyes? + var/datum/weakref/seer_ref + +/obj/effect/abstract/floating_eyes/Initialize(mapload, mob/seer) + . = ..() + if(isnull(seer)) + return INITIALIZE_HINT_QDEL + + seer_ref = WEAKREF(seer) + var/image/make_invis = image(icon = null, icon_state = null, loc = src) + make_invis.override = TRUE + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/one_person/reversed, "hallucination", make_invis, null, seer) + START_PROCESSING(SSfastprocess, src) + update_appearance() + +/obj/effect/abstract/floating_eyes/Destroy() + STOP_PROCESSING(SSfastprocess, src) + return ..() + +/obj/effect/abstract/floating_eyes/update_overlays() + . = ..() + var/mutable_appearance/r_eye = mutable_appearance(icon = 'icons/mob/human/human_face.dmi', icon_state = "eyes_glow_r") + r_eye.color = COLOR_DARK_RED + . += r_eye + var/mutable_appearance/l_eye = mutable_appearance(icon = 'icons/mob/human/human_face.dmi', icon_state = "eyes_glow_l") + l_eye.color = COLOR_DARK_RED + . += l_eye + + . += emissive_appearance('icons/mob/human/human_face.dmi', "eyes_glow_l", src) + . += emissive_appearance('icons/mob/human/human_face.dmi', "eyes_glow_r", src) + +/obj/effect/abstract/floating_eyes/process(seconds_per_tick) + var/turf/below_us = get_turf(src) + var/mob/seer = seer_ref?.resolve() + if(below_us.get_lumcount() < LIGHTING_TILE_IS_DARK || seer?.lighting_cutoff >= 2.5 || get_dist(seer, src) <= 1) + graceful_delete() + +/obj/effect/abstract/floating_eyes/proc/graceful_delete() + STOP_PROCESSING(SSfastprocess, src) + animate(src, alpha = 0, time = 0.5 SECONDS) + QDEL_IN(src, 0.75 SECONDS) diff --git a/code/modules/hallucination/fake_alert.dm b/code/modules/hallucination/fake_alert.dm index 6e10daf73aa..50ddf2e194f 100644 --- a/code/modules/hallucination/fake_alert.dm +++ b/code/modules/hallucination/fake_alert.dm @@ -2,6 +2,7 @@ /datum/hallucination/fake_alert abstract_hallucination_parent = /datum/hallucination/fake_alert random_hallucination_weight = 1 + hallucination_tier = HALLUCINATION_TIER_COMMON var/del_timer_id /// The duration of the alert being thrown. diff --git a/code/modules/hallucination/fake_chat.dm b/code/modules/hallucination/fake_chat.dm index 10431724496..3f2d39e4661 100644 --- a/code/modules/hallucination/fake_chat.dm +++ b/code/modules/hallucination/fake_chat.dm @@ -1,6 +1,7 @@ /// Sends a fake chat message to the hallucinator. /datum/hallucination/chat random_hallucination_weight = 100 + hallucination_tier = HALLUCINATION_TIER_COMMON /// If TRUE, we force the message to be hallucinated from common radio. Only set in New() var/force_radio @@ -12,30 +13,59 @@ src.specific_message = specific_message return ..() +/// When passed a mob, returns a list of languages that mob could theoretically speak IF a blank slate. +/datum/hallucination/chat/proc/get_hallucinating_spoken_languages(atom/movable/who) + var/override_typepath + if(iscarbon(who)) + var/mob/living/carbon/human_who = who + override_typepath = human_who.dna?.species?.species_language_holder + + var/datum/language_holder/what_they_speak = GLOB.prototype_language_holders[override_typepath || who.initial_language_holder] + return what_they_speak?.spoken_languages?.Copy() || list() + /datum/hallucination/chat/start() var/mob/living/carbon/human/speaker - var/datum/language/understood_language = hallucinator.get_random_understood_language() - for(var/mob/living/carbon/nearby_human in view(hallucinator)) - if(nearby_human == hallucinator) - continue + var/list/datum/language/understood_languages = hallucinator.get_language_holder().understood_languages + var/understood_language - if(!speaker) - speaker = nearby_human - else if(get_dist(hallucinator, nearby_human) < get_dist(hallucinator, speaker)) + if(!force_radio) + var/list/valid_humans = list() + var/list/valid_corpses = list() + for(var/mob/living/carbon/nearby_human in view(hallucinator)) + if(nearby_human == hallucinator) + continue + if(nearby_human.stat == DEAD) + valid_corpses += nearby_human + continue + valid_humans += nearby_human + + // pick a nearby human which can speak a language the hallucinator understands + for(var/mob/living/carbon/nearby_human in shuffle(valid_humans)) + var/list/shared_languages = get_hallucinating_spoken_languages(nearby_human) & understood_languages + if(!length(shared_languages)) // future idea : have people hallucinating off their minds ignore this check + continue speaker = nearby_human + understood_language = pick(shared_languages) + break + + // corpses disrespect language because they're... dead + if(isnull(speaker) && length(valid_corpses)) + speaker = pick(valid_corpses) // Get person to affect if radio hallucination - var/is_radio = !speaker || force_radio + var/is_radio = force_radio || isnull(speaker) if(is_radio) - var/list/humans = list() + for(var/datum/mind/crew_mind in shuffle(get_crewmember_minds())) + if(crew_mind == hallucinator.mind) + continue + var/list/shared_languages = get_hallucinating_spoken_languages(crew_mind.current) & understood_languages + if(!length(shared_languages)) + continue + speaker = crew_mind.current + understood_language = pick(shared_languages) + break - for(var/datum/mind/crew_mind in get_crewmember_minds()) - if(crew_mind.current) - humans += crew_mind.current - if(humans.len) - speaker = pick(humans) - - if(!speaker) + if(isnull(speaker)) return // Time to generate a message. diff --git a/code/modules/hallucination/fake_death.dm b/code/modules/hallucination/fake_death.dm index 9583418f232..7d0b603c9a4 100644 --- a/code/modules/hallucination/fake_death.dm +++ b/code/modules/hallucination/fake_death.dm @@ -1,6 +1,7 @@ // This hallucinations makes us suddenly think we died, stopping us / changing our hud / sending a fake deadchat message. /datum/hallucination/death random_hallucination_weight = 1 + hallucination_tier = HALLUCINATION_TIER_UNCOMMON /// Determines whether we floor them or just immobilize them var/floor_them = TRUE diff --git a/code/modules/hallucination/fake_message.dm b/code/modules/hallucination/fake_message.dm index de5616d83c6..b6fc640b0b2 100644 --- a/code/modules/hallucination/fake_message.dm +++ b/code/modules/hallucination/fake_message.dm @@ -1,5 +1,6 @@ /datum/hallucination/message random_hallucination_weight = 60 + hallucination_tier = HALLUCINATION_TIER_COMMON /datum/hallucination/message/start() var/list/nearby_humans = list() diff --git a/code/modules/hallucination/fake_plasmaflood.dm b/code/modules/hallucination/fake_plasmaflood.dm index 5b3a67f5312..5019bec8912 100644 --- a/code/modules/hallucination/fake_plasmaflood.dm +++ b/code/modules/hallucination/fake_plasmaflood.dm @@ -5,6 +5,7 @@ /// Plasma starts flooding from the nearby vent /datum/hallucination/fake_flood random_hallucination_weight = 7 + hallucination_tier = HALLUCINATION_TIER_UNCOMMON var/list/image/flood_images = list() var/list/obj/effect/plasma_image_holder/flood_image_holders = list() diff --git a/code/modules/hallucination/fake_sound.dm b/code/modules/hallucination/fake_sound.dm index 1d93be83f94..7b2e2ee8825 100644 --- a/code/modules/hallucination/fake_sound.dm +++ b/code/modules/hallucination/fake_sound.dm @@ -1,6 +1,7 @@ /// Hallucination that plays a fake sound somewhere nearby. /datum/hallucination/fake_sound abstract_hallucination_parent = /datum/hallucination/fake_sound + hallucination_tier = HALLUCINATION_TIER_COMMON /// Volume of the fake sound var/volume = 50 @@ -10,6 +11,9 @@ var/sound_type /datum/hallucination/fake_sound/start() + if(!hallucinator.can_hear()) + return FALSE + var/sound_to_play = islist(sound_type) ? pick(sound_type) : sound_type play_fake_sound(random_far_turf(), sound_to_play) feedback_details += "Sound: [sound_to_play]" @@ -148,9 +152,31 @@ volume = 90 sound_type = 'sound/items/weapons/flash.ogg' +/datum/hallucination/fake_sound/normal/ringtone + volume = 50 + +/datum/hallucination/fake_sound/normal/ringtone/New(mob/living/hallucinator) + . = ..() + if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED)) + sound_type = pick( + 'sound/machines/beep/twobeep_voice1.ogg', + 'sound/machines/beep/twobeep_voice2.ogg', + ) + else + sound_type = 'sound/machines/beep/twobeep_high.ogg' + +/datum/hallucination/fake_sound/normal/ringtone/play_fake_sound(turf/source, sound_to_play = sound_type) + if(prob(33)) + source = get_turf(hallucinator) + var/obj/item/modular_computer/pda/pda = locate() in hallucinator.get_all_contents() + var/datum/computer_file/program/messenger/messenger_app = locate() in pda?.stored_files + hallucinator.balloon_alert(hallucinator, "*[messenger_app?.ringtone || MESSENGER_RINGTONE_DEFAULT]*") + return ..() + /datum/hallucination/fake_sound/weird abstract_hallucination_parent = /datum/hallucination/fake_sound/weird random_hallucination_weight = 1 + hallucination_tier = HALLUCINATION_TIER_VERYSPECIAL /// if FALSE, we will pass "null" in as the turf source, meaning the sound will just play without direction / etc. var/no_source = FALSE @@ -187,6 +213,7 @@ sound_type = 'sound/effects/magic/clockwork/invoke_general.ogg' /datum/hallucination/fake_sound/weird/creepy + hallucination_tier = HALLUCINATION_TIER_COMMON /datum/hallucination/fake_sound/weird/creepy/New(mob/living/hallucinator) . = ..() @@ -202,6 +229,7 @@ /datum/hallucination/fake_sound/weird/game_over sound_vary = FALSE sound_type = 'sound/machines/compiler/compiler-failure.ogg' + hallucination_tier = HALLUCINATION_TIER_RARE /datum/hallucination/fake_sound/weird/hallelujah sound_vary = FALSE @@ -216,8 +244,10 @@ sound_vary = FALSE no_source = TRUE sound_type = 'sound/runtime/hyperspace/hyperspace_begin.ogg' + hallucination_tier = HALLUCINATION_TIER_COMMON /datum/hallucination/fake_sound/weird/laugher + hallucination_tier = HALLUCINATION_TIER_COMMON sound_type = list( 'sound/mobs/humanoids/human/laugh/womanlaugh.ogg', 'sound/mobs/humanoids/human/laugh/manlaugh1.ogg', @@ -228,6 +258,7 @@ volume = 15 sound_vary = FALSE sound_type = 'sound/items/weapons/ring.ogg' + hallucination_tier = HALLUCINATION_TIER_RARE /datum/hallucination/fake_sound/weird/phone/play_fake_sound(turf/source, sound_to_play) for(var/next_ring in 1 to 3) @@ -236,6 +267,7 @@ return ..() /datum/hallucination/fake_sound/weird/spell + hallucination_tier = HALLUCINATION_TIER_RARE sound_type = list( 'sound/effects/magic/disintegrate.ogg', 'sound/effects/magic/ethereal_enter.ogg', @@ -247,15 +279,18 @@ ) /datum/hallucination/fake_sound/weird/spell/just_jaunt // A few antags use jaunts, so this sound specifically is fun to isolate + hallucination_tier = HALLUCINATION_TIER_RARE sound_type = 'sound/effects/magic/ethereal_enter.ogg' /datum/hallucination/fake_sound/weird/summon_sound // Heretic circle sound, notably volume = 75 + hallucination_tier = HALLUCINATION_TIER_RARE sound_type = 'sound/effects/magic/castsummon.ogg' /datum/hallucination/fake_sound/weird/tesloose volume = 35 sound_type = 'sound/effects/magic/lightningbolt.ogg' + hallucination_tier = HALLUCINATION_TIER_RARE /datum/hallucination/fake_sound/weird/tesloose/play_fake_sound(turf/source, sound_to_play) . = ..() @@ -265,6 +300,7 @@ /datum/hallucination/fake_sound/weird/xeno random_hallucination_weight = 2 // Some of these are ambience sounds too volume = 25 + hallucination_tier = HALLUCINATION_TIER_RARE sound_type = list( 'sound/mobs/non-humanoids/hiss/lowHiss1.ogg', 'sound/mobs/non-humanoids/hiss/lowHiss2.ogg', @@ -283,7 +319,7 @@ sound_type = 'sound/effects/hallucinations/radio_static.ogg' /datum/hallucination/fake_sound/weird/ice_crack - random_hallucination_weight = 2 + random_hallucination_weight = 0 volume = 100 no_source = TRUE sound_type = 'sound/effects/ice_shovel.ogg' diff --git a/code/modules/hallucination/hazard.dm b/code/modules/hallucination/hazard.dm index 34bcee62f6a..81596ee1ea7 100644 --- a/code/modules/hallucination/hazard.dm +++ b/code/modules/hallucination/hazard.dm @@ -2,6 +2,7 @@ /datum/hallucination/hazard abstract_hallucination_parent = /datum/hallucination/hazard random_hallucination_weight = 5 + hallucination_tier = HALLUCINATION_TIER_UNCOMMON /// The type of effect we create var/hazard_type = /obj/effect/client_image_holder/hallucination/danger diff --git a/code/modules/hallucination/hud_screw.dm b/code/modules/hallucination/hud_screw.dm index 88a9fccc078..346c25f7e99 100644 --- a/code/modules/hallucination/hud_screw.dm +++ b/code/modules/hallucination/hud_screw.dm @@ -2,6 +2,7 @@ /datum/hallucination/screwy_hud abstract_hallucination_parent = /datum/hallucination/screwy_hud random_hallucination_weight = 4 + hallucination_tier = HALLUCINATION_TIER_COMMON /// The type of hud we give to the hallucinator var/screwy_hud_type = SCREWYHUD_NONE diff --git a/code/modules/hallucination/ice_cube.dm b/code/modules/hallucination/ice_cube.dm index d5ec89649de..40c86ffcc4f 100644 --- a/code/modules/hallucination/ice_cube.dm +++ b/code/modules/hallucination/ice_cube.dm @@ -1,6 +1,7 @@ /// Causes the hallucinator to believe themselves frozen in ice. Man am I glad he's frozen in there etc etc /datum/hallucination/ice random_hallucination_weight = 3 + hallucination_tier = HALLUCINATION_TIER_COMMON /// What icon file to use for our hallucinator var/ice_icon = 'icons/effects/freeze.dmi' diff --git a/code/modules/hallucination/inhand_fake_item.dm b/code/modules/hallucination/inhand_fake_item.dm index 665c8811339..06e83375a3e 100644 --- a/code/modules/hallucination/inhand_fake_item.dm +++ b/code/modules/hallucination/inhand_fake_item.dm @@ -2,6 +2,7 @@ /datum/hallucination/fake_item abstract_hallucination_parent = /datum/hallucination/fake_item random_hallucination_weight = 1 + hallucination_tier = HALLUCINATION_TIER_COMMON /// A flag of slots this fake item can appear in. var/valid_slots = ITEM_SLOT_HANDS|ITEM_SLOT_BELT|ITEM_SLOT_LPOCKET|ITEM_SLOT_RPOCKET @@ -114,6 +115,24 @@ return hallucinated_item +/datum/hallucination/fake_item/summon_guns + hallucination_tier = HALLUCINATION_TIER_RARE + valid_slots = ITEM_SLOT_HANDS + +/datum/hallucination/fake_item/summon_guns/make_fake_item(where_to_put_it, equip_flags) + template_item_type = pick(GLOB.summoned_guns) + . = ..() + hallucinator.playsound_local(get_turf(hallucinator), 'sound/effects/magic/summon_guns.ogg', 50, TRUE) + +/datum/hallucination/fake_item/summon_magic + hallucination_tier = HALLUCINATION_TIER_RARE + valid_slots = ITEM_SLOT_HANDS + +/datum/hallucination/fake_item/summon_magic/make_fake_item(where_to_put_it, equip_flags) + template_item_type = pick(GLOB.summoned_magic + GLOB.summoned_special_magic) + . = ..() + hallucinator.playsound_local(get_turf(hallucinator), 'sound/effects/magic/summon_magic.ogg', 50, TRUE) + /obj/item/hallucinated name = "mirage" plane = ABOVE_HUD_PLANE diff --git a/code/modules/hallucination/mother.dm b/code/modules/hallucination/mother.dm index 12b31b04f05..4e65aed6a54 100644 --- a/code/modules/hallucination/mother.dm +++ b/code/modules/hallucination/mother.dm @@ -1,6 +1,8 @@ /// Your mother appears to scold you. /datum/hallucination/your_mother random_hallucination_weight = 2 + hallucination_tier = HALLUCINATION_TIER_VERYSPECIAL + var/obj/effect/client_image_holder/hallucination/your_mother/mother /datum/hallucination/your_mother/start() diff --git a/code/modules/hallucination/nearby_fake_item.dm b/code/modules/hallucination/nearby_fake_item.dm index 33ef6b14b25..a93c9ece396 100644 --- a/code/modules/hallucination/nearby_fake_item.dm +++ b/code/modules/hallucination/nearby_fake_item.dm @@ -2,6 +2,7 @@ /datum/hallucination/nearby_fake_item abstract_hallucination_parent = /datum/hallucination/nearby_fake_item random_hallucination_weight = 1 + hallucination_tier = HALLUCINATION_TIER_COMMON /// The icon file to draw from for left hand icons var/left_hand_file diff --git a/code/modules/hallucination/on_fire.dm b/code/modules/hallucination/on_fire.dm index 3e64618e719..048d8dcc96c 100644 --- a/code/modules/hallucination/on_fire.dm +++ b/code/modules/hallucination/on_fire.dm @@ -3,6 +3,7 @@ /datum/hallucination/fire random_hallucination_weight = 3 + hallucination_tier = HALLUCINATION_TIER_UNCOMMON /// Are we currently burning our mob? var/active = TRUE @@ -27,21 +28,29 @@ /// How long have we spent on fire? var/time_spent = 0 -/datum/hallucination/fire/New(mob/living/hallucinator) - if(ismonkey(hallucinator)) - fire_icon_state = "monkey_big_fire" + var/fake_firestacks = 0 - else if(!ishuman(hallucinator)) - fire_icon_state = "generic_fire" +/datum/hallucination/fire/proc/make_overlay() + var/mutable_appearance/real_overlay = hallucinator.get_fire_overlay(fake_firestacks) + if(!real_overlay) + return null + if(real_overlay.icon_state == fire_overlay?.icon_state) + return fire_overlay - return ..() + var/image/new_overlay = image(real_overlay.icon, hallucinator, real_overlay.icon_state, real_overlay.layer) + new_overlay.appearance_flags = real_overlay.appearance_flags + return new_overlay /datum/hallucination/fire/start() - fire_overlay = image(fire_icon, hallucinator, fire_icon_state, ABOVE_MOB_LAYER) - SET_PLANE_EXPLICIT(fire_overlay, ABOVE_GAME_PLANE, hallucinator) + fake_firestacks = rand(5, 15) + fire_overlay = make_overlay() + if(!fire_overlay) + return FALSE + hallucinator.client?.images |= fire_overlay to_chat(hallucinator, span_userdanger("You're set on fire!")) - hallucinator.throw_alert(ALERT_FIRE, /atom/movable/screen/alert/fire, override = TRUE) + var/atom/movable/screen/alert/fire/fake/alert = hallucinator.throw_alert(ALERT_FIRE, /atom/movable/screen/alert/fire/fake, override = TRUE) + alert.hallucination_weakref = WEAKREF(src) times_to_lower_stamina = rand(5, 10) addtimer(CALLBACK(src, PROC_REF(start_expanding)), 2 SECONDS) return TRUE @@ -66,8 +75,15 @@ if(QDELETED(src)) return - if(hallucinator.fire_stacks <= 0) + fake_firestacks -= (0.25 * seconds_per_tick) + if(fake_firestacks <= 0) clear_fire() + else + var/new_overlay = make_overlay() + if(new_overlay && new_overlay != fire_overlay) + hallucinator.client?.images -= fire_overlay + fire_overlay = new_overlay + hallucinator.client?.images |= fire_overlay time_spent += seconds_per_tick @@ -100,6 +116,8 @@ /datum/hallucination/fire/proc/update_temp() if(stage <= 0) hallucinator.clear_alert(ALERT_TEMPERATURE, clear_override = TRUE) + if(!active) + qdel(src) else hallucinator.clear_alert(ALERT_TEMPERATURE, clear_override = TRUE) hallucinator.throw_alert(ALERT_TEMPERATURE, /atom/movable/screen/alert/hot, stage, override = TRUE) @@ -117,3 +135,11 @@ #undef RAISE_FIRE_COUNT #undef RAISE_FIRE_TIME + +/// This alert is thrown when hallucinating fire +/atom/movable/screen/alert/fire/fake + /// We need to track the original hallucination so we can pass it to the status effect + var/datum/weakref/hallucination_weakref + +/atom/movable/screen/alert/fire/fake/handle_stop_drop_roll(mob/living/roller) + return !!roller.apply_status_effect(/datum/status_effect/stop_drop_roll/hallucinating, hallucination_weakref) diff --git a/code/modules/hallucination/screwy_health_doll.dm b/code/modules/hallucination/screwy_health_doll.dm index 2a8eeba16e2..35f7356b4d4 100644 --- a/code/modules/hallucination/screwy_health_doll.dm +++ b/code/modules/hallucination/screwy_health_doll.dm @@ -1,6 +1,7 @@ ///Causes the target to see incorrect health damages on the healthdoll /datum/hallucination/fake_health_doll random_hallucination_weight = 12 + hallucination_tier = HALLUCINATION_TIER_COMMON /// The duration of the hallucination var/duration diff --git a/code/modules/hallucination/shock.dm b/code/modules/hallucination/shock.dm index 5c99328dafb..85f144b050e 100644 --- a/code/modules/hallucination/shock.dm +++ b/code/modules/hallucination/shock.dm @@ -1,6 +1,7 @@ /// Causes a fake "zap" to the hallucinator. /datum/hallucination/shock - random_hallucination_weight = 1 + random_hallucination_weight = 1 // really low weight, as it also has a snowflake check to trigger when bumping airlocks + hallucination_tier = HALLUCINATION_TIER_COMMON var/electrocution_icon = 'icons/mob/human/human.dmi' var/electrocution_icon_state = "electrocuted_base" diff --git a/code/modules/hallucination/station_message.dm b/code/modules/hallucination/station_message.dm index 55b44d18463..7f3ebdc6a54 100644 --- a/code/modules/hallucination/station_message.dm +++ b/code/modules/hallucination/station_message.dm @@ -1,6 +1,7 @@ /datum/hallucination/station_message abstract_hallucination_parent = /datum/hallucination/station_message random_hallucination_weight = 1 + hallucination_tier = HALLUCINATION_TIER_RARE /datum/hallucination/station_message/start() qdel(src) // To be implemented by subtypes, call parent for easy cleanup diff --git a/code/modules/hallucination/stray_bullet.dm b/code/modules/hallucination/stray_bullet.dm index 33462d2ab43..5641b6e8cfc 100644 --- a/code/modules/hallucination/stray_bullet.dm +++ b/code/modules/hallucination/stray_bullet.dm @@ -1,6 +1,7 @@ /// Shoots a random, fake projectile to the hallucinator /datum/hallucination/stray_bullet random_hallucination_weight = 7 + hallucination_tier = HALLUCINATION_TIER_UNCOMMON /datum/hallucination/stray_bullet/start() var/list/turf/starting_locations = list() @@ -175,8 +176,8 @@ return var/image/hit_effect = image('icons/effects/blood.dmi', hit_atom, is_wall ? hal_impact_effect_wall : hal_impact_effect, ABOVE_MOB_LAYER) - hit_effect.pixel_x = hit_atom.pixel_x + rand(-4,4) - hit_effect.pixel_y = hit_atom.pixel_y + rand(-4,4) + hit_effect.pixel_w = hit_atom.pixel_x + rand(-4,4) + hit_effect.pixel_z = hit_atom.pixel_y + rand(-4,4) parent.hallucinator.client.images |= hit_effect addtimer(CALLBACK(src, PROC_REF(clean_up_hit), hit_effect), is_wall ? hit_duration_wall : hit_duration) diff --git a/code/modules/hallucination/telepathy.dm b/code/modules/hallucination/telepathy.dm new file mode 100644 index 00000000000..df161579341 --- /dev/null +++ b/code/modules/hallucination/telepathy.dm @@ -0,0 +1,36 @@ +/datum/hallucination/telepathy + random_hallucination_weight = 4 + hallucination_tier = HALLUCINATION_TIER_COMMON + +/datum/hallucination/telepathy/start() + var/datum/action/cooldown/spell/list_target/telepathy/mimiced_type = pick(typesof(/datum/action/cooldown/spell/list_target/telepathy)) + hallucinator.balloon_alert(hallucinator, "you hear a voice") + to_chat(hallucinator, "\ + You hear a voice in your head...\ + [get_telepath_message()]\ + ") + return TRUE + +/datum/hallucination/telepathy/proc/get_telepath_message() + if(prob(0.001)) + return "horse" + + var/memo = pick( + pick_list_replacements(HALLUCINATION_FILE, "advice"), + pick_list_replacements(HALLUCINATION_FILE, "aggressive"), + pick_list_replacements(HALLUCINATION_FILE, "conversation"), + pick_list_replacements(HALLUCINATION_FILE, "didyouhearthat"), + pick_list_replacements(HALLUCINATION_FILE, "doubt"), + pick_list_replacements(HALLUCINATION_FILE, "escape"), + pick_list_replacements(HALLUCINATION_FILE, "getout"), + pick_list_replacements(HALLUCINATION_FILE, "greetings"), + pick_list_replacements(HALLUCINATION_FILE, "suspicion"), + ) + var/names = pick( + first_name(hallucinator.name), + last_name(hallucinator.name), + first_name(hallucinator.real_name), + last_name(hallucinator.real_name), + ) + + return replacetext(memo, "%TARGETNAME%", names) diff --git a/code/modules/hallucination/xeno_attack.dm b/code/modules/hallucination/xeno_attack.dm index 0d8b15490d9..33ebc6e593c 100644 --- a/code/modules/hallucination/xeno_attack.dm +++ b/code/modules/hallucination/xeno_attack.dm @@ -1,6 +1,7 @@ /// Xeno crawls from nearby vent, jumps at you, and goes back in. /datum/hallucination/xeno_attack random_hallucination_weight = 2 + hallucination_tier = HALLUCINATION_TIER_RARE /datum/hallucination/xeno_attack/start() var/turf/xeno_attack_source diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm index 1d9aaa8468e..c6c5f0d9724 100644 --- a/code/modules/hydroponics/grown/chili.dm +++ b/code/modules/hydroponics/grown/chili.dm @@ -25,7 +25,7 @@ desc = "It's spicy! Wait... IT'S BURNING ME!!" icon_state = "chilipepper" bite_consumption_mod = 2 - foodtypes = FRUIT + foodtypes = VEGETABLES wine_power = 20 // Ice Chili @@ -51,7 +51,7 @@ desc = "It's a mutant strain of chili." icon_state = "icepepper" bite_consumption_mod = 5 - foodtypes = FRUIT + foodtypes = VEGETABLES wine_power = 30 // Ghost Chili @@ -78,7 +78,7 @@ desc = "It seems to be vibrating gently." icon_state = "ghostchilipepper" bite_consumption_mod = 5 - foodtypes = FRUIT + foodtypes = VEGETABLES wine_power = 50 // Bell Pepper @@ -103,7 +103,7 @@ name = "bell pepper" desc = "A big mild pepper that's good for many things." icon_state = "bell_pepper" - foodtypes = FRUIT + foodtypes = VEGETABLES /obj/item/food/grown/bell_pepper/make_bakeable() AddComponent(/datum/component/bakeable, /obj/item/food/roasted_bell_pepper, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE) diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 6bfc8bc203a..f23bb43305b 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -55,7 +55,7 @@ name = "orange" desc = "It's a tangy fruit." icon_state = "orange" - foodtypes = ORANGES + foodtypes = ORANGES | FRUIT juice_typepath = /datum/reagent/consumable/orangejuice distill_reagent = /datum/reagent/consumable/ethanol/triple_sec diff --git a/code/modules/hydroponics/grown/eggplant.dm b/code/modules/hydroponics/grown/eggplant.dm index a135c4a2cbe..bf0bb01943c 100644 --- a/code/modules/hydroponics/grown/eggplant.dm +++ b/code/modules/hydroponics/grown/eggplant.dm @@ -20,7 +20,7 @@ name = "eggplant" desc = "Maybe there's a chicken inside?" icon_state = "eggplant" - foodtypes = FRUIT + foodtypes = VEGETABLES wine_power = 20 // Egg-Plant diff --git a/code/modules/hydroponics/grown/garlic.dm b/code/modules/hydroponics/grown/garlic.dm index 755d0c2920a..96a32c37a45 100644 --- a/code/modules/hydroponics/grown/garlic.dm +++ b/code/modules/hydroponics/grown/garlic.dm @@ -18,3 +18,4 @@ icon_state = "garlic" tastes = list("garlic" = 1) wine_power = 10 + foodtypes = VEGETABLES diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm index 4287bf9eb3e..45f4d1251de 100644 --- a/code/modules/hydroponics/grown/onion.dm +++ b/code/modules/hydroponics/grown/onion.dm @@ -24,6 +24,7 @@ icon_state = "onion" tastes = list("onions" = 1) wine_power = 30 + foodtypes = VEGETABLES /obj/item/food/grown/onion/make_processable() AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/onion_slice, 2, 15, screentip_verb = "Cut") @@ -63,6 +64,7 @@ icon_state = "onionslice" food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 2) w_class = WEIGHT_CLASS_TINY + foodtypes = VEGETABLES /obj/item/food/onion_slice/make_bakeable() AddComponent(/datum/component/bakeable, /obj/item/food/onionrings, rand(15 SECONDS, 20 SECONDS), TRUE, TRUE) diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm index dce207302c3..edfa985b4b1 100644 --- a/code/modules/hydroponics/grown/pumpkin.dm +++ b/code/modules/hydroponics/grown/pumpkin.dm @@ -23,7 +23,7 @@ desc = "It's large and scary." icon_state = "pumpkin" bite_consumption_mod = 2 - foodtypes = FRUIT + foodtypes = VEGETABLES juice_typepath = /datum/reagent/consumable/pumpkinjuice wine_power = 20 ///Which type of lantern this gourd produces when carved. @@ -56,7 +56,6 @@ desc = "The pumpkin's toxic sibling." icon_state = "blumpkin" bite_consumption_mod = 3 - foodtypes = FRUIT juice_typepath = /datum/reagent/consumable/blumpkinjuice wine_power = 50 carved_type = /obj/item/clothing/head/utility/hardhat/pumpkinhead/blumpkin diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index 1459887d6fa..65a40fd14e6 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -22,7 +22,7 @@ desc = "I say to-mah-to, you say tom-mae-to." icon_state = "tomato" splat_type = /obj/effect/decal/cleanable/food/tomato_smudge - foodtypes = FRUIT + foodtypes = VEGETABLES grind_results = list(/datum/reagent/consumable/ketchup = 0) juice_typepath = /datum/reagent/consumable/tomatojuice distill_reagent = /datum/reagent/consumable/enzyme @@ -46,7 +46,7 @@ icon_state = "bloodtomato" bite_consumption_mod = 3 splat_type = /obj/effect/gibspawner/generic - foodtypes = FRUIT | GORE + foodtypes = VEGETABLES | GORE grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood = 0) distill_reagent = /datum/reagent/consumable/ethanol/bloody_mary diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 40184ad4d05..52115980dea 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -512,7 +512,7 @@ else var/t_growthstate = clamp(round((age / myseed.maturation) * myseed.growthstages), 1, myseed.growthstages) plant_overlay.icon_state = "[myseed.icon_grow][t_growthstate]" - plant_overlay.pixel_y = myseed.plant_icon_offset + plant_overlay.pixel_z = myseed.plant_icon_offset return plant_overlay /obj/machinery/hydroponics/proc/update_status_light_overlays() @@ -894,7 +894,7 @@ else reagent_source.reagents.trans_to(H.reagents, transfer_amount, transferred_by = user) lastuser = WEAKREF(user) - if(IS_EDIBLE(reagent_source) || istype(reagent_source, /obj/item/reagent_containers/pill)) + if(IS_EDIBLE(reagent_source) || istype(reagent_source, /obj/item/reagent_containers/applicator/pill)) qdel(reagent_source) H.update_appearance() return 1 diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 56b904b560f..fa367a33188 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -844,8 +844,7 @@ if(!.) return - googly = mutable_appearance('icons/obj/service/hydroponics/harvest.dmi', "eyes") - googly.appearance_flags = RESET_COLOR + googly = mutable_appearance('icons/obj/service/hydroponics/harvest.dmi', "eyes", appearance_flags = RESET_COLOR|KEEP_APART) our_plant.add_overlay(googly) /// Makes the plant embed on thrown impact. diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 14c1b828760..528d0740e7b 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -256,7 +256,7 @@ /datum/job/proc/announce_head(mob/living/carbon/human/human, channels, job_title) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels. // BUBBER EDIT CHANGE - ALTERNATIVE_JOB_TITLES if(human) //timer because these should come after the captain announcement - SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_addtimer), CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(aas_config_announce), /datum/aas_config_entry/newhead, list("PERSON" = human.real_name, "RANK" = job_title), null, channels, null, TRUE), 1)) // BUBBER EDIT CHANGE - ALTERNATIVE_JOB_TITLES + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_addtimer), CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(aas_config_announce), /datum/aas_config_entry/newhead, list("PERSON" = human.real_name, "RANK" = job_title), null, channels, null, TRUE), 1)) // BUBBER EDIT CHANGE - ALTERNATIVE_JOB_TITLES //If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1 /datum/job/proc/player_old_enough(client/player) @@ -449,7 +449,7 @@ var/obj/item/modular_computer/pda/pda = equipped.get_item_by_slot(pda_slot) if(istype(pda)) - pda.imprint_id(equipped.real_name, equipped_job.title) + pda.imprint_id(equipped.real_name, equipped_job.title, card) pda.update_ringtone(equipped_job.job_tone) pda.UpdateDisplay() diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index 3498bffedcb..62999eac631 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -100,7 +100,7 @@ return var/assignment = worn_id.get_trim_assignment() if(!isnull(assignment)) - pda.imprint_id(user.real_name, assignment) + pda.imprint_id(user.real_name, assignment, worn_id) /datum/outfit/job/cook/get_types_to_preload() . = ..() diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index ed35cbf365f..c2815993551 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -55,7 +55,7 @@ name = "Head of Personnel" jobtype = /datum/job/head_of_personnel - id = /obj/item/card/id/advanced/silver + id = /obj/item/card/id/advanced/platinum id_trim = /datum/id_trim/job/head_of_personnel uniform = /obj/item/clothing/under/rank/civilian/head_of_personnel backpack_contents = list( diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index 0dc68dc337c..d94760a1c95 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -135,7 +135,7 @@ GLOBAL_LIST_EMPTY(security_officer_distribution) var/obj/item/modular_computer/pda/pda = spawning.get_item_by_slot(ITEM_SLOT_BELT) var/assignment = worn_id.get_trim_assignment() if(istype(pda) && !isnull(assignment)) - pda.imprint_id(spawning.real_name, assignment) + pda.imprint_id(spawning.real_name, assignment, worn_id) var/spawn_point = pick(LAZYACCESS(GLOB.department_security_spawns, department)) diff --git a/code/modules/keybindings/setup.dm b/code/modules/keybindings/setup.dm index d239c48d9ce..2eec6712a46 100644 --- a/code/modules/keybindings/setup.dm +++ b/code/modules/keybindings/setup.dm @@ -33,12 +33,6 @@ var/command = macro_set[key] winset(src, "default-[REF(key)]", "parent=default;name=[key];command=[command]") - //Reactivate any active tgui windows mouse passthroughs macros - for(var/datum/tgui_window/window in tgui_windows) - if(window.mouse_event_macro_set) - window.mouse_event_macro_set = FALSE - window.set_mouse_macro() - update_special_keybinds() /// Manually clears any held keys, in case due to lag or other undefined behavior a key gets stuck. diff --git a/code/modules/library/bibles.dm b/code/modules/library/bibles.dm index 4c31092199d..b14c9baa56b 100644 --- a/code/modules/library/bibles.dm +++ b/code/modules/library/bibles.dm @@ -204,25 +204,30 @@ GLOBAL_LIST_INIT(bibleitemstates, list( /obj/item/book/bible/proc/bless(mob/living/blessed, mob/living/user) if(GLOB.religious_sect) return GLOB.religious_sect.sect_bless(blessed,user) + if(!ishuman(blessed)) - return + return BLESSING_FAILED + var/mob/living/carbon/human/built_in_his_image = blessed for(var/obj/item/bodypart/bodypart as anything in built_in_his_image.bodyparts) if(!IS_ORGANIC_LIMB(bodypart)) balloon_alert(user, "can't heal inorganic!") - return FALSE + return BLESSING_IGNORED var/heal_amt = 10 var/list/hurt_limbs = built_in_his_image.get_damaged_bodyparts(1, 1, BODYTYPE_ORGANIC) - if(length(hurt_limbs)) - for(var/obj/item/bodypart/affecting as anything in hurt_limbs) - if(affecting.heal_damage(heal_amt, heal_amt, required_bodytype = BODYTYPE_ORGANIC)) - built_in_his_image.update_damage_overlays() - built_in_his_image.visible_message(span_notice("[user] heals [built_in_his_image] with the power of [deity_name]!")) - to_chat(built_in_his_image, span_boldnotice("May the power of [deity_name] compel you to be healed!")) - playsound(built_in_his_image, SFX_PUNCH, 25, TRUE, -1) - built_in_his_image.add_mood_event("blessing", /datum/mood_event/blessing) - return TRUE + if(!length(hurt_limbs)) + return BLESSING_IGNORED + + for(var/obj/item/bodypart/affecting as anything in hurt_limbs) + if(affecting.heal_damage(heal_amt, heal_amt, required_bodytype = BODYTYPE_ORGANIC)) + built_in_his_image.update_damage_overlays() + + built_in_his_image.visible_message(span_notice("[user] heals [built_in_his_image] with the power of [deity_name]!")) + to_chat(built_in_his_image, span_boldnotice("May the power of [deity_name] compel you to be healed!")) + playsound(built_in_his_image, SFX_PUNCH, 25, TRUE, -1) + built_in_his_image.add_mood_event("blessing", /datum/mood_event/blessing) + return BLESSING_SUCCESS /obj/item/book/bible/attack(mob/living/target_mob, mob/living/carbon/human/user, params, heal_mode = TRUE) if(!ISADVANCEDTOOLUSER(user)) @@ -244,7 +249,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list( return ..() if(target_mob.stat == DEAD) - if(!GLOB.religious_sect?.sect_dead_bless(target_mob, user)) + if(GLOB.religious_sect?.sect_dead_bless(target_mob, user) == BLESSING_FAILED) target_mob.visible_message(span_danger("[user] smacks [target_mob]'s lifeless corpse with [src].")) playsound(target_mob, SFX_PUNCH, 25, TRUE, -1) return @@ -256,9 +261,13 @@ GLOBAL_LIST_INIT(bibleitemstates, list( var/smack_chance = DEFAULT_SMACK_CHANCE if(GLOB.religious_sect) smack_chance = GLOB.religious_sect.smack_chance - var/success = !prob(smack_chance) && bless(target_mob, user) - if(success) - return + + if(!prob(smack_chance)) + var/bless_result = bless(target_mob, user) + if (bless_result != BLESSING_FAILED) + SEND_SIGNAL(target_mob, COMSIG_LIVING_BLESSED, user, src, bless_result) + return + if(iscarbon(target_mob)) var/mob/living/carbon/carbon_target = target_mob if(!istype(carbon_target.head, /obj/item/clothing/head/helmet)) diff --git a/code/modules/library/bookcase.dm b/code/modules/library/bookcase.dm index 004db281c75..aefd3e1e607 100644 --- a/code/modules/library/bookcase.dm +++ b/code/modules/library/bookcase.dm @@ -17,7 +17,9 @@ /// When enabled, books_to_load number of random books will be generated for this bookcase var/load_random_books = FALSE /// The category of books to pick from when populating random books. - var/random_category = null + var/random_category = BOOK_CATEGORY_RANDOM + /// Probability that a category will be changed to random regardless of what it was set to. + var/category_prob = 25 /// How many random books to generate. var/books_to_load = 0 @@ -51,7 +53,29 @@ //Loads a random selection of books in from the db, adds a copy of their info to a global list //To send to library consoles as a starting inventory if(load_random_books) - create_random_books(books_to_load, src, FALSE, random_category) + var/randomizing_categories = prob(category_prob) || random_category == BOOK_CATEGORY_RANDOM + // We only need to run this special logic if we're randomizing a non-adult bookshelf + if(randomizing_categories && random_category != BOOK_CATEGORY_ADULT) + // Category is manually randomized rather than using BOOK_CATEGORY_RANDOM + // So we can exclude adult books in non-adult bookshelves + // And also weight the prime category more heavily + var/list/category_pool = list( + BOOK_CATEGORY_FICTION, + BOOK_CATEGORY_NONFICTION, + BOOK_CATEGORY_REFERENCE, + BOOK_CATEGORY_RELIGION, + ) + if(random_category != BOOK_CATEGORY_RANDOM) + category_pool += random_category + var/sub_books_to_load = books_to_load + while(sub_books_to_load > 0 && length(category_pool) > 0) + var/cat_amount = min(rand(1, 2), sub_books_to_load) + sub_books_to_load -= cat_amount + create_random_books(amount = cat_amount, location = src, category = pick_n_take(category_pool)) + // Otherwise we can just let the proc handle everything, it will even do randomization for us + else + create_random_books(amount = books_to_load, location = src, category = randomizing_categories ? BOOK_CATEGORY_RANDOM : random_category) + after_random_load() update_appearance() //Make sure you look proper diff --git a/code/modules/library/random_books.dm b/code/modules/library/random_books.dm index 3dcdff50a58..c0a2725638c 100644 --- a/code/modules/library/random_books.dm +++ b/code/modules/library/random_books.dm @@ -11,7 +11,7 @@ /obj/item/book/random icon_state = "random_book" /// The category of books to pick from when creating this book. - var/random_category = null + var/random_category = BOOK_CATEGORY_RANDOM /// If this book has already been 'generated' yet. var/random_loaded = FALSE @@ -21,7 +21,9 @@ /obj/item/book/random/attack_self() if(!random_loaded) - create_random_books(1, loc, TRUE, random_category, src) + // Adult books are excluded unless explicitly set + var/loaded_category = random_category == BOOK_CATEGORY_RANDOM ? pick(BOOK_CATEGORY_FICTION, BOOK_CATEGORY_NONFICTION, BOOK_CATEGORY_RELIGION, BOOK_CATEGORY_REFERENCE) : random_category + create_random_books(amount = 1, location = loc, fail_loud = TRUE, category = loaded_category, existing_book = src) random_loaded = TRUE return ..() @@ -36,7 +38,18 @@ books_to_load += pick(-1,-1,0,1,1) update_appearance() -/proc/create_random_books(amount, location, fail_loud = FALSE, category = null, obj/item/book/existing_book) +/** + * Create a random book or books. + * + * * amount: How many books to create. + * * location: Where to create the books. + * * fail_loud: If TRUE, will create a book with an error message if the database fails. + * * category: The category of books to pick from. + * If null or BOOK_CATEGORY_RANDOM, will pick from any category on a per-book basis. + * * existing_book: If set, will use this book object instead of creating a new one. + * Note passing any amount above 1 with an existing_book will still only create one book. + */ +/proc/create_random_books(amount = 1, atom/location, fail_loud = FALSE, category = BOOK_CATEGORY_RANDOM, obj/item/book/existing_book) . = list() if(!isnum(amount) || amount<1) return @@ -45,7 +58,7 @@ var/error_text = "There once was a book from Nantucket
But the database failed us, so f*$! it.
I tried to be good to you
Now this is an I.O.U
If you're feeling entitled, well, stuff it!

~" existing_book.book_data = new("Strange Book", "???", error_text) return - if(prob(25)) + if(category == BOOK_CATEGORY_RANDOM) category = null var/datum/db_query/query_get_random_books = SSdbcore.NewQuery({" SELECT title, author, content @@ -70,7 +83,7 @@ /obj/structure/bookcase/random/fiction name = "bookcase (Fiction)" - random_category = "Fiction" + random_category = BOOK_CATEGORY_FICTION ///have we spawned the chuuni granter var/static/chuuni_book_spawned = FALSE @@ -81,19 +94,19 @@ /obj/structure/bookcase/random/nonfiction name = "bookcase (Non-Fiction)" - random_category = "Non-fiction" + random_category = BOOK_CATEGORY_NONFICTION /obj/structure/bookcase/random/religion name = "bookcase (Religion)" - random_category = "Religion" + random_category = BOOK_CATEGORY_RELIGION /obj/structure/bookcase/random/adult name = "bookcase (Adult)" - random_category = "Adult" + random_category = BOOK_CATEGORY_ADULT /obj/structure/bookcase/random/reference name = "bookcase (Reference)" - random_category = "Reference" + random_category = BOOK_CATEGORY_REFERENCE ///Chance to spawn a random manual book var/ref_book_prob = 20 diff --git a/code/modules/library/skill_learning/job_skillchips/chef.dm b/code/modules/library/skill_learning/job_skillchips/chef.dm index e457d8773a0..a39342803d8 100644 --- a/code/modules/library/skill_learning/job_skillchips/chef.dm +++ b/code/modules/library/skill_learning/job_skillchips/chef.dm @@ -11,13 +11,13 @@ /obj/item/skillchip/job/chef/Initialize(mapload) . = ..() - style = new + style = new(src) style.refresh_valid_areas() /obj/item/skillchip/job/chef/on_activate(mob/living/carbon/user, silent = FALSE) . = ..() - style.teach(user, make_temporary = TRUE) + style.teach(user) /obj/item/skillchip/job/chef/on_deactivate(mob/living/carbon/user, silent = FALSE) - style.fully_remove(user) + style.unlearn(user) return ..() diff --git a/code/modules/lighting/lighting_corner.dm b/code/modules/lighting/lighting_corner.dm index 912a586bc3b..4c35a8f2bb3 100644 --- a/code/modules/lighting/lighting_corner.dm +++ b/code/modules/lighting/lighting_corner.dm @@ -201,13 +201,13 @@ var/turf/draw_to = master_SW || master_NE || master_SE || master_NW var/mutable_appearance/display = mutable_appearance('icons/turf/debug.dmi', "corner_color", LIGHT_DEBUG_LAYER, draw_to, BALLOON_CHAT_PLANE) if(x > draw_to.x) - display.pixel_x = 16 + display.pixel_w = 16 else - display.pixel_x = -16 + display.pixel_w = -16 if(y > draw_to.y) - display.pixel_y = 16 + display.pixel_z = 16 else - display.pixel_y = -16 + display.pixel_z = -16 display.color = rgb(cache_r * 255, cache_g * 255, cache_b * 255) diff --git a/code/modules/lighting/lighting_source.dm b/code/modules/lighting/lighting_source.dm index f2c3be93143..c3537d5dcd0 100644 --- a/code/modules/lighting/lighting_source.dm +++ b/code/modules/lighting/lighting_source.dm @@ -70,7 +70,7 @@ GLOBAL_LIST_EMPTY(lighting_sheets) update() if(GLOB.light_debug_enabled) - source_atom.debug() + source_atom.debug_lights() /datum/light_source/Destroy(force) remove_lum() diff --git a/code/modules/loadout/categories/neck.dm b/code/modules/loadout/categories/neck.dm index ab28537f20c..9a98870975c 100644 --- a/code/modules/loadout/categories/neck.dm +++ b/code/modules/loadout/categories/neck.dm @@ -39,8 +39,6 @@ name = "Necktie (Loose)" item_path = /obj/item/clothing/neck/tie/detective -/* BUBBER EDIT REMOVAL - duplicate of /datum/loadout_item/neck/bowtie_black /datum/loadout_item/neck/bowtie name = "Bowtie" item_path = /obj/item/clothing/neck/bowtie -BUBBER EDIT END */ diff --git a/code/modules/loadout/categories/pocket.dm b/code/modules/loadout/categories/pocket.dm index 8f4348f5921..cb75e8ca9bb 100644 --- a/code/modules/loadout/categories/pocket.dm +++ b/code/modules/loadout/categories/pocket.dm @@ -43,41 +43,75 @@ return ..() -/datum/loadout_item/pocket_items/lipstick_black - name = "Lipstick (Black)" - item_path = /obj/item/lipstick/black - additional_displayed_text = list("Black") - -/datum/loadout_item/pocket_items/lipstick_blue - name = "Lipstick (Blue)" - item_path = /obj/item/lipstick/blue - additional_displayed_text = list("Blue") - -/datum/loadout_item/pocket_items/lipstick_green - name = "Lipstick (Green)" - item_path = /obj/item/lipstick/green - additional_displayed_text = list("Green") - -/datum/loadout_item/pocket_items/lipstick_jade - name = "Lipstick (Jade)" - item_path = /obj/item/lipstick/jade - additional_displayed_text = list("Jade") - -/datum/loadout_item/pocket_items/lipstick_purple - name = "Lipstick (Purple)" - item_path = /obj/item/lipstick/purple - additional_displayed_text = list("Purple") - -/datum/loadout_item/pocket_items/lipstick_red - name = "Lipstick (Red)" +/datum/loadout_item/pocket_items/lipstick + name = "Lipstick" item_path = /obj/item/lipstick - additional_displayed_text = list("Red") + additional_displayed_text = list("Recolorable") -/datum/loadout_item/pocket_items/lipstick_white - name = "Lipstick (White)" - item_path = /obj/item/lipstick/white - additional_displayed_text = list("White") /* SKYRAT EDIT REMOVAL +/datum/loadout_item/pocket_items/lipstick/on_equip_item( + obj/item/lipstick/equipped_item, + datum/preferences/preference_source, + list/preference_list, + mob/living/carbon/human/equipper, + visuals_only, +) + . = ..() + var/picked_style = style_to_style(preference_list[item_path]?[INFO_LAYER]) + var/picked_color = preference_list[item_path]?[INFO_GREYSCALE] || /obj/item/lipstick::lipstick_color + if(istype(equipped_item)) // can be null for visuals_only + equipped_item.style = picked_style + equipped_item.lipstick_color = picked_color + equipper.update_lips(picked_style, picked_color) + +/// Converts style (readable) to style (internal) +/datum/loadout_item/pocket_items/lipstick/proc/style_to_style(style) + switch(style) + if(UPPER_LIP) + return "lipstick_upper" + if(LOWER_LIP) + return "lipstick_lower" + return "lipstick" + +/datum/loadout_item/pocket_items/lipstick/get_ui_buttons() + . = ..() + UNTYPED_LIST_ADD(., list( + "label" = "Style", + "act_key" = "select_lipstick_style", + "button_icon" = FA_ICON_ARROWS_ROTATE, + "active_key" = INFO_LAYER, + )) + UNTYPED_LIST_ADD(., list( + "label" = "Color", + "act_key" = "select_lipstick_color", + "button_icon" = FA_ICON_PALETTE, + "active_key" = INFO_GREYSCALE, + )) + +/datum/loadout_item/pocket_items/lipstick/handle_loadout_action(datum/preference_middleware/loadout/manager, mob/user, action, params) + switch(action) + if("select_lipstick_style") + var/list/their_loadout = manager.preferences.read_preference(/datum/preference/loadout) + var/old_style = their_loadout?[item_path]?[INFO_LAYER] || MIDDLE_LIP + var/chosen = tgui_input_list(user, "Pick a lipstick style. (This determines where it sits on your sprite.)", "Pick a style", list(UPPER_LIP, MIDDLE_LIP, LOWER_LIP), old_style) + their_loadout = manager.preferences.read_preference(/datum/preference/loadout) // after sleep: sanity check + if(their_loadout?[item_path]) // Validate they still have it equipped + their_loadout[item_path][INFO_LAYER] = chosen + manager.preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], their_loadout) + return TRUE // Update UI + + if("select_lipstick_color") + var/list/their_loadout = manager.preferences.read_preference(/datum/preference/loadout) + var/old_color = their_loadout?[item_path]?[INFO_GREYSCALE] || /obj/item/lipstick::lipstick_color + var/chosen = input(user, "Pick a lipstick color.", "Pick a color", old_color) as color|null + their_loadout = manager.preferences.read_preference(/datum/preference/loadout) // after sleep: sanity check + if(their_loadout?[item_path]) // Validate they still have it equipped + their_loadout[item_path][INFO_GREYSCALE] = chosen + manager.preferences.update_preference(GLOB.preference_entries[/datum/preference/loadout], their_loadout) + return TRUE // Update UI + + return ..() + /datum/loadout_item/pocket_items/plush abstract_type = /datum/loadout_item/pocket_items/plush can_be_named = TRUE @@ -197,11 +231,9 @@ item_path = /obj/item/dice/d00 */ -/* BUBBER EDIT REMOVAL BEGIN - duplicate of /datum/loadout_item/pocket_items/zippolighter /datum/loadout_item/pocket_items/lighter name = "Zippo Lighter" item_path = /obj/item/lighter -BUBBER EDIT REMOVAL END */ /datum/loadout_item/pocket_items/flask name = "Pocket Flask" @@ -223,8 +255,55 @@ BUBBER EDIT REMOVAL END */ name = "Poster (Pinup)" item_path = /obj/item/poster/random_contraband/pinup -/* BUBBER EDIT REMOVAL BEGIN - duplicate of /datum/loadout_item/accessory/wallet +/datum/loadout_item/pocket_items/holodisk + name = "Holodisk" + item_path = /obj/item/disk/holodisk + +// The wallet loadout item is special, and puts the player's ID and other small items into it on initialize (fancy!) /datum/loadout_item/pocket_items/wallet name = "Wallet" item_path = /obj/item/storage/wallet -BUBBER EDIT REMOVAL END */ + +/datum/loadout_item/pocket_items/wallet/insert_path_into_outfit(datum/outfit/outfit, mob/living/carbon/human/equipper, visuals_only = FALSE) + return + +/datum/loadout_item/pocket_items/wallet/on_equip_item( + obj/item/equipped_item, + datum/preferences/preference_source, + list/preference_list, + mob/living/carbon/human/equipper, + visuals_only = FALSE, +) + // Do this at the very end of the setup process so we can insert quirk items and such + if(!visuals_only && !isdummy(equipper)) + RegisterSignal(equipper, COMSIG_HUMAN_CHARACTER_SETUP_FINISHED, PROC_REF(apply_after_setup), override = TRUE) + return NONE + +/datum/loadout_item/pocket_items/wallet/proc/apply_after_setup(mob/living/carbon/human/source, ...) + SIGNAL_HANDLER + equip_wallet(source) + UnregisterSignal(source, COMSIG_HUMAN_CHARACTER_SETUP_FINISHED) + +/datum/loadout_item/pocket_items/wallet/proc/equip_wallet(mob/living/carbon/human/equipper) + var/obj/item/card/id/advanced/id_card = equipper.get_item_by_slot(ITEM_SLOT_ID) + if(istype(id_card, /obj/item/storage/wallet)) // Wallets station trait guard + return + + var/obj/item/storage/wallet/wallet = new(equipper) + if(istype(id_card)) + equipper.temporarilyRemoveItemFromInventory(id_card, force = TRUE) + equipper.equip_to_slot_if_possible(wallet, ITEM_SLOT_ID, initial = TRUE) + id_card.forceMove(wallet) + + for(var/obj/item/thing in equipper?.back) + // leaves a slot free for whatever they may want + if(length(wallet.contents) >= wallet.atom_storage.max_slots - 1) + break + if(thing.w_class > wallet.atom_storage.max_specific_storage) + continue + wallet.atom_storage.attempt_insert(thing, override = TRUE, force = STORAGE_FULLY_LOCKED, messages = FALSE) + + else + // They must have a PDA or some other thing in their ID slot, abort + if(!equipper.equip_to_slot_if_possible(wallet, slot = ITEM_SLOT_BACKPACK, initial = TRUE)) + wallet.forceMove(equipper.drop_location()) diff --git a/code/modules/loadout/categories/shoes.dm b/code/modules/loadout/categories/shoes.dm index e4601ce3e00..8e58dac0aa6 100644 --- a/code/modules/loadout/categories/shoes.dm +++ b/code/modules/loadout/categories/shoes.dm @@ -11,11 +11,9 @@ /datum/loadout_item/shoes/insert_path_into_outfit(datum/outfit/outfit, mob/living/carbon/human/equipper, visuals_only = FALSE) outfit.shoes = item_path -/* BUBBER EDIT REMOVAL BEGIN - duplicate of /datum/loadout_item/shoes/greyscale_sneakers /datum/loadout_item/shoes/sneakers name = "Sneakers (Colourable)" item_path = /obj/item/clothing/shoes/sneakers -BUBBER EDIT REMOVAL END */ /datum/loadout_item/shoes/sandals_laced name = "Sandals (Velcro)" @@ -41,8 +39,6 @@ BUBBER EDIT REMOVAL END */ name = "Boots (Cowboy, Black)" item_path = /obj/item/clothing/shoes/cowboy/black/laced -/* BUBBER EDIT REMOVAL BEGIN - duplicate of /datum/loadout_item/shoes/glow /datum/loadout_item/shoes/glow_shoes name = "Shoes (Glowing, Colourable)" item_path = /obj/item/clothing/shoes/glow -BUBBER EDIT REMOVAL END */ diff --git a/code/modules/loadout/loadout_helpers.dm b/code/modules/loadout/loadout_helpers.dm index 1192dee8110..03d83e4326a 100644 --- a/code/modules/loadout/loadout_helpers.dm +++ b/code/modules/loadout/loadout_helpers.dm @@ -75,17 +75,13 @@ var/list/new_contents = get_all_gear() var/update = NONE for(var/datum/loadout_item/item as anything in loadout_datums) - var/obj/item/equipped = locate(item.item_path) in new_contents - if(isnull(equipped)) - continue update |= item.on_equip_item( - equipped_item = equipped, + equipped_item = locate(item.item_path) in new_contents, preference_source = preference_source, preference_list = preference_list, equipper = src, visuals_only = visuals_only, ) - if(update) update_clothing(update) diff --git a/code/modules/loadout/loadout_items.dm b/code/modules/loadout/loadout_items.dm index 9ab9d18cb06..572b1a88f12 100644 --- a/code/modules/loadout/loadout_items.dm +++ b/code/modules/loadout/loadout_items.dm @@ -261,7 +261,7 @@ GLOBAL_LIST_INIT(all_loadout_categories, init_loadout_categories()) * * Arguments: * * preference_source - the datum/preferences our loadout item originated from - cannot be null - * * equipper - the mob we're equipping this item onto - cannot be null + * * equipper - the mob we're equipping this item onto * * visuals_only - whether or not this is only concerned with visual things (not backpack, not renaming, etc) * * preference_list - what the raw loadout list looks like in the preferences * @@ -274,7 +274,8 @@ GLOBAL_LIST_INIT(all_loadout_categories, init_loadout_categories()) mob/living/carbon/human/equipper, visuals_only = FALSE, ) - ASSERT(!isnull(equipped_item)) + if(isnull(equipped_item)) + return NONE if(!visuals_only) ADD_TRAIT(equipped_item, TRAIT_ITEM_OBJECTIVE_BLOCKED, TRAIT_SOURCE_LOADOUT) diff --git a/code/modules/mafia/controller.dm b/code/modules/mafia/controller.dm index d4edbb37f41..957f7f2bc42 100644 --- a/code/modules/mafia/controller.dm +++ b/code/modules/mafia/controller.dm @@ -710,7 +710,7 @@ GLOBAL_LIST_INIT(mafia_role_by_alignment, setup_mafia_role_by_alignment()) var/req_players = MAFIA_MAX_PLAYER_COUNT var/list/setup = custom_setup if(length(setup)) - req_players = assoc_value_sum(setup) + req_players = counterlist_sum(setup) var/list/filtered_keys_and_pdas = filter_players(req_players) diff --git a/code/modules/mafia/controller_ui.dm b/code/modules/mafia/controller_ui.dm index f45ea3a80aa..83857f66837 100644 --- a/code/modules/mafia/controller_ui.dm +++ b/code/modules/mafia/controller_ui.dm @@ -123,7 +123,7 @@ var/done = FALSE while(!done) - to_chat(usr, "You have a total player count of [assoc_value_sum(debug_setup)] in this setup.") + to_chat(usr, "You have a total player count of [counterlist_sum(debug_setup)] in this setup.") var/chosen_role_name = tgui_input_list(usr, "Select a role!", "Custom Setup Creation", rolelist_dict) if(!chosen_role_name) return diff --git a/code/modules/mafia/map_pieces.dm b/code/modules/mafia/map_pieces.dm index 2d62126466a..78b2b284061 100644 --- a/code/modules/mafia/map_pieces.dm +++ b/code/modules/mafia/map_pieces.dm @@ -36,7 +36,7 @@ var/custom_outfit /datum/map_template/mafia/New(path = null, rename = null, cache = FALSE) - path = "_maps/map_files/Mafia/" + map_suffix + path = "_maps/minigame/mafia/" + map_suffix return ..() //we only have one map in unit tests for consistency. diff --git a/code/modules/manufactorio/_manufacturing.dm b/code/modules/manufactorio/_manufacturing.dm index 4b64d541fd2..5bf3093a92c 100644 --- a/code/modules/manufactorio/_manufacturing.dm +++ b/code/modules/manufactorio/_manufacturing.dm @@ -76,12 +76,12 @@ dir_offset[1] *= 32 dir_offset[2] *= 32 var/image/nonemissive = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_[direction]") - nonemissive.pixel_x = dir_offset[1] - nonemissive.pixel_y = dir_offset[2] + nonemissive.pixel_w = dir_offset[1] + nonemissive.pixel_z = dir_offset[2] nonemissive.color = color var/mutable_appearance/emissive = emissive_appearance(nonemissive.icon, nonemissive.icon_state, offset_spokesman = src, alpha = nonemissive.alpha) - emissive.pixel_y = nonemissive.pixel_y - emissive.pixel_x = nonemissive.pixel_x + emissive.pixel_w = nonemissive.pixel_w + emissive.pixel_z = nonemissive.pixel_z return list(nonemissive, emissive) /// Returns whatever object it may output, or null if it cant do that diff --git a/code/modules/manufactorio/machines/crafter.dm b/code/modules/manufactorio/machines/crafter.dm index 6b1c9160d76..f17efc27c4e 100644 --- a/code/modules/manufactorio/machines/crafter.dm +++ b/code/modules/manufactorio/machines/crafter.dm @@ -104,7 +104,7 @@ var/list/prediff = get_overfloor_objects() var/result = craftsman.construct_item(src, recipe) if(istext(result)) - say("Crafting failed,[result]") + say("Crafting failed[result]") return var/list/diff = get_overfloor_objects() - prediff for(var/atom/movable/diff_result as anything in diff) diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm b/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm index 8501c21cbcc..b5d151dd04f 100644 --- a/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm +++ b/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm @@ -219,8 +219,8 @@ C.Scale(19,19) var/mutable_appearance/puzzle_small = new(C) puzzle_small.layer = layer + 0.1 - puzzle_small.pixel_x = 7 - puzzle_small.pixel_y = 7 + puzzle_small.pixel_w = 7 + puzzle_small.pixel_z = 7 add_overlay(puzzle_small) /obj/structure/puzzle_element/update_icon(updates=ALL) // to prevent update_appearance calls from cutting the overlays and not adding them back diff --git a/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm b/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm index 21bf3da4431..bc36823ebc8 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm @@ -19,8 +19,8 @@ GLOBAL_VAR_INIT(fscpassword, generate_password()) products = list( /obj/item/reagent_containers/syringe = 4, /obj/item/healthanalyzer = 4, - /obj/item/reagent_containers/pill/patch/libital = 5, - /obj/item/reagent_containers/pill/patch/aiuri = 5, + /obj/item/reagent_containers/applicator/patch/libital = 5, + /obj/item/reagent_containers/applicator/patch/aiuri = 5, /obj/item/reagent_containers/cup/bottle/multiver = 1, /obj/item/reagent_containers/cup/bottle/syriniver = 1, /obj/item/reagent_containers/cup/bottle/epinephrine = 3, diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 7fa66c8a65c..a988e736936 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -188,7 +188,7 @@ new /obj/item/clothing/suit/hooded/ian_costume(src) if(67 to 68) var/obj/item/gibtonite/free_bomb = new /obj/item/gibtonite(src) - free_bomb.quality = rand(1, 3) + free_bomb.quality = rand(GIBTONITE_QUALITY_LOW, GIBTONITE_QUALITY_HIGH) free_bomb.GibtoniteReaction(null, "A secure loot closet has spawned a live") if(69 to 70) new /obj/item/stack/ore/bluespace_crystal(src, 5) diff --git a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm index e87fc7f09a1..b2b3d8720ab 100644 --- a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm @@ -317,7 +317,7 @@ if(QDELETED(hit_mineral)) return ..() new /obj/effect/temp_visual/kinetic_blast(hit_mineral) - hit_mineral.gets_drilled(firer, TRUE) + hit_mineral.gets_drilled(firer, 1) if(!iscarbon(firer)) return ..() var/mob/living/carbon/carbon_firer = firer diff --git a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm index be8530a678d..7d01752982d 100644 --- a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm +++ b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm @@ -13,6 +13,8 @@ var/trophy_id /// what type of trophies will block this trophy from being added, must be overriden var/denied_type = /obj/item/crusher_trophy + /// what item will drop if you cut it with wildhunter's knife + var/wildhunter_drop = null /obj/item/crusher_trophy/examine(mob/living/user) . = ..() diff --git a/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm b/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm index 24b5dbc94f0..fdc1564004c 100644 --- a/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm +++ b/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm @@ -10,6 +10,7 @@ denied_type = /obj/item/crusher_trophy/watcher_wing trophy_id = TROPHY_WATCHER bonus_value = 5 + wildhunter_drop = /obj/item/stack/sheet/sinew /obj/item/crusher_trophy/watcher_wing/effect_desc() return "mark detonation to prevent certain creatures from using certain attacks for [bonus_value*0.1] second\s" @@ -33,6 +34,7 @@ icon_state = "magma_wing" gender = NEUTER bonus_value = 5 + wildhunter_drop = /obj/item/stack/sheet/sinew /obj/item/crusher_trophy/blaster_tubes/magma_wing/effect_desc() return "mark detonation to make the next destabilizer shot deal [bonus_value] damage" @@ -50,6 +52,7 @@ desc = "A carefully preserved frozen wing from an icewing watcher. Suitable as a trophy for a kinetic crusher." icon_state = "ice_wing" bonus_value = 8 + wildhunter_drop = /obj/item/stack/sheet/sinew //legion /obj/item/crusher_trophy/legion_skull @@ -58,6 +61,7 @@ icon_state = "legion_skull" denied_type = /obj/item/crusher_trophy/legion_skull bonus_value = 3 + wildhunter_drop = /obj/item/organ/monster_core/regenerative_core/legion // if you killed blood drunk you can afford stabilizer potions sooo.... /obj/item/crusher_trophy/legion_skull/effect_desc() return "a kinetic crusher to recharge [bonus_value*0.1] second\s faster" @@ -80,6 +84,7 @@ denied_type = /obj/item/crusher_trophy/goliath_tentacle bonus_value = 2 trophy_id = TROPHY_GOLIATH_TENTACLE + wildhunter_drop = /obj/item/stack/sheet/animalhide/goliath_hide /// Your missing health is multiplied by this value to find the bonus damage var/missing_health_ratio = 0.1 /// Amount of health you must lose to gain damage, according to the examine text. Cached so we don't recalculate it every examine. @@ -108,6 +113,7 @@ denied_type = /obj/item/crusher_trophy/lobster_claw trophy_id = TROPHY_LOBSTER_CLAW bonus_value = 1 + wildhunter_drop = /obj/item/organ/monster_core/rush_gland /obj/item/crusher_trophy/lobster_claw/effect_desc() return "mark detonation to briefly rebuke the target for [bonus_value] seconds" @@ -123,6 +129,7 @@ desc = "A fang from a brimdemon's corpse." denied_type = /obj/item/crusher_trophy/brimdemon_fang trophy_id = TROPHY_BRIMDEMON_FANG + wildhunter_drop = /obj/item/organ/monster_core/brimdust_sac /// Cartoon punching vfx var/static/list/comic_phrases = list("BOOM", "BANG", "KABLOW", "KAPOW", "OUCH", "BAM", "KAPOW", "WHAM", "POW", "KABOOM") @@ -141,6 +148,7 @@ icon_state = "bileworm_spewlet" desc = "A baby bileworm. Suitable as a trophy for a kinetic crusher." denied_type = /obj/item/crusher_trophy/bileworm_spewlet + wildhunter_drop = /obj/item/stack/sheet/animalhide/bileworm ///item ability that handles the effect var/datum/action/cooldown/mob_cooldown/projectile_attack/dir_shots/spewlet/ability @@ -171,7 +179,7 @@ /obj/item/crusher_trophy/bileworm_spewlet/on_projectile_hit_mineral(turf/closed/mineral, mob/living/user) for(var/turf/closed/mineral/mineral_turf in RANGE_TURFS(1, mineral) - mineral) - mineral_turf.gets_drilled(user, TRUE) + mineral_turf.gets_drilled(user, 1) //yes this is a /mob_cooldown subtype being added to an item. I can't recommend you do what I'm doing /datum/action/cooldown/mob_cooldown/projectile_attack/dir_shots/spewlet diff --git a/code/modules/mining/equipment/kinetic_crusher/trophies_misc.dm b/code/modules/mining/equipment/kinetic_crusher/trophies_misc.dm index f7313eb1ac3..f5817bcaed5 100644 --- a/code/modules/mining/equipment/kinetic_crusher/trophies_misc.dm +++ b/code/modules/mining/equipment/kinetic_crusher/trophies_misc.dm @@ -14,18 +14,18 @@ var/retool_icon = 'icons/obj/mining.dmi' ///Specifies the sprite/icon state which the crusher is changed to as an item. Should appear in the icons/obj/mining.dmi file with accompanying "lit" and "recharging" sprites var/retool_icon_state = "crusher_sword" - ///Specifies the icon state for the crusher's appearance in hand. Should appear in both retool_lefthand_file and retool_righthand_file, which are icons/mob/inhands/weapons/hammers_lefthand.dmi and icons/mob/inhands/weapons/hammers_righthand.dmi by default. + ///Specifies the icon state for the crusher's appearance in hand. Should appear in both retool_lefthand_file and retool_righthand_file. var/retool_inhand_icon = "crusher_sword" - ///For if the retool kit changes the projectile's appearance. The sprite should be in icons/obj/weapons/guns/projectiles.dmi + ///For if the retool kit changes the projectile's appearance. The sprite should be in icons/obj/weapons/guns/projectiles.dmi. var/retool_projectile_icon = "pulse1" - /// Specifies the left hand inhand icon file. If both this and retool_righthand_file are set, changes the inhand files and dimensions as appropriate. + /// Specifies the left hand inhand icon file. Don't forget to set the right hand file as well. var/retool_lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' - /// Specifies the right hand inhand icon file. If both this and retool_lefthand_file are set, changes the inhand files and dimensions as appropriate. + /// Specifies the right hand inhand icon file. Don't forget to set the left hand file as well. var/retool_righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' /// Specifies the X dimensions of the new inhand, only relevant with different inhand files. - var/retool_inhand_X = 32 + var/retool_inhand_x = 32 /// Specifies the Y dimensions of the new inhand, only relevant with different inhand files. - var/retool_inhand_Y = 32 + var/retool_inhand_y = 32 /obj/item/crusher_trophy/retool_kit/effect_desc() return "the crusher to have the appearance of a sword" @@ -39,8 +39,10 @@ pkc.icon_state = retool_icon_state pkc.current_inhand_icon_state = retool_inhand_icon pkc.projectile_icon = retool_projectile_icon - pkc.inhand_x_dimension = retool_inhand_X - pkc.inhand_y_dimension = retool_inhand_Y + pkc.lefthand_file = retool_lefthand_file + pkc.righthand_file = retool_righthand_file + pkc.inhand_x_dimension = retool_inhand_x + pkc.inhand_y_dimension = retool_inhand_y pkc.update_appearance() pkc.update_slot_icon() @@ -83,8 +85,8 @@ retool_inhand_icon = "crusher_glaive" retool_lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' retool_righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' - retool_inhand_X = 64 - retool_inhand_Y = 64 + retool_inhand_x = 64 + retool_inhand_y = 64 /obj/item/crusher_trophy/retool_kit/glaive/effect_desc() return "the crusher to have the appearance of a glaive" diff --git a/code/modules/mining/equipment/monster_organs/monster_organ.dm b/code/modules/mining/equipment/monster_organs/monster_organ.dm index ccd3a08c19c..01bf553c4ca 100644 --- a/code/modules/mining/equipment/monster_organs/monster_organ.dm +++ b/code/modules/mining/equipment/monster_organs/monster_organ.dm @@ -208,6 +208,9 @@ SHOULD_CALL_PARENT(FALSE) CRASH("Someone forgot to make their organ do something when you implant it.") +/obj/item/organ/monster_core/feel_for_damage(self_aware) + return "" + /** * Boilerplate to set the name and icon of the cooldown action. * Makes it call 'ui_action_click' when the action is activated. diff --git a/code/modules/mining/equipment/monster_organs/regenerative_core.dm b/code/modules/mining/equipment/monster_organs/regenerative_core.dm index bcb7bc0455f..bcec0eb6c4e 100644 --- a/code/modules/mining/equipment/monster_organs/regenerative_core.dm +++ b/code/modules/mining/equipment/monster_organs/regenerative_core.dm @@ -36,7 +36,7 @@ /// Log applications and apply moodlet. /obj/item/organ/monster_core/regenerative_core/apply_to(mob/living/target, mob/user) - target.add_mood_event(MOOD_CATEGORY_LEGION_CORE, /datum/mood_event/healsbadman) + target.add_mood_event("legion_core", /datum/mood_event/healsbadman) if (target != user) target.visible_message(span_notice("[user] forces [target] to apply [src]... Black tendrils entangle and reinforce [target.p_them()]!")) SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "other")) diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index 7092c8c0f76..175edfc4f80 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -111,17 +111,15 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) var/obj/effect/extraction_holder/holder_obj = new(get_turf(thing)) holder_obj.appearance = thing.appearance thing.forceMove(holder_obj) - var/mutable_appearance/balloon2 = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_expand", layer = VEHICLE_LAYER) - balloon2.pixel_y = 10 - balloon2.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM + var/mutable_appearance/balloon2 = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_expand", layer = VEHICLE_LAYER, appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM | KEEP_APART) + balloon2.pixel_z = 10 holder_obj.add_overlay(balloon2) addtimer(CALLBACK(src, PROC_REF(create_balloon), thing, user, holder_obj, balloon2), 0.4 SECONDS) return ITEM_INTERACT_SUCCESS /obj/item/extraction_pack/proc/create_balloon(atom/movable/thing, mob/living/user, obj/effect/extraction_holder/holder_obj, mutable_appearance/balloon2) - var/mutable_appearance/balloon = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_balloon", layer = VEHICLE_LAYER) - balloon.pixel_y = 10 - balloon.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM + var/mutable_appearance/balloon = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_balloon", layer = VEHICLE_LAYER, appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM | KEEP_APART) + balloon.pixel_z = 10 holder_obj.cut_overlay(balloon2) holder_obj.add_overlay(balloon) playsound(holder_obj.loc, 'sound/items/fulton/fultext_deploy.ogg', vol = 50, vary = TRUE, extrarange = -3) @@ -162,9 +160,8 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) sleep(7 SECONDS) - var/mutable_appearance/balloon3 = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_retract", layer = VEHICLE_LAYER) - balloon3.pixel_y = 10 - balloon3.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM + var/mutable_appearance/balloon3 = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_retract", layer = VEHICLE_LAYER, appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM | KEEP_APART) + balloon3.pixel_z = 10 holder_obj.cut_overlay(balloon) holder_obj.add_overlay(balloon3) diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 768427f530a..a4384dc47eb 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -190,6 +190,7 @@ max_integrity = 100 seed = /obj/item/seeds/lavaland/polypore wine_power = 20 + foodtypes = VEGETABLES /obj/item/food/grown/ash_flora/Initialize(mapload) . = ..() @@ -238,24 +239,7 @@ icon_state = "cactus_fruit" seed = /obj/item/seeds/lavaland/cactus wine_power = 50 - special_desc_requirement = EXAMINE_CHECK_JOB //SKYRAT EDIT - special_desc_jobs = list("Botanist") //SKYRAT EDIT - special_desc = "This flora is very nutritious and medicinal." //SKYRAT EDIT - -/obj/item/food/grown/ash_flora/seraka - name = "seraka cap" - desc = "Small, deeply flavourful mushrooms originally native to Tizira." - icon_state = "seraka_cap" - seed = /obj/item/seeds/lavaland/seraka - wine_power = 40 - -/obj/item/food/grown/ash_flora/fireblossom - name = "fire blossom" - desc = "A flower from a fire blossom." - icon_state = "fireblossom" - slot_flags = ITEM_SLOT_HEAD - seed = /obj/item/seeds/lavaland/fireblossom - wine_power = 40 + foodtypes = FRUIT /obj/item/food/grown/ash_flora/seraka name = "seraka cap" diff --git a/code/modules/mining/lavaland/mining_loot/consumables.dm b/code/modules/mining/lavaland/mining_loot/consumables.dm index 66470f8be14..58807f80a35 100644 --- a/code/modules/mining/lavaland/mining_loot/consumables.dm +++ b/code/modules/mining/lavaland/mining_loot/consumables.dm @@ -204,7 +204,6 @@ return var/obj/item/organ/wings/functional/wings = new wing_type() wings.Insert(exposed_human) - exposed_human.dna.species.handle_mutant_bodyparts(exposed_human) // BUBBER EDIT OR BEGIN if(had_wings) to_chat(exposed_human, span_userdanger("A terrible pain travels down your back as your wings change shape!")) else @@ -224,7 +223,7 @@ accessory = SSaccessories.sprite_accessories[initial(accessory.key)][initial(accessory.name)] //SKYRAT EDIT CHANGE - ORIGINAL: accessory = SSaccessories.wings_list[initial(accessory.name)] //get the singleton instance var/image/img = image(icon = accessory.icon, icon_state = "m_wingsopen_[accessory.icon_state]_BEHIND") //Process the HUD elements img.transform *= 0.5 - img.pixel_x = -32 + img.pixel_w = -32 if(radial_wings[accessory.name]) stack_trace("Different wing types with repeated names. Please fix as this may cause issues.") else diff --git a/code/modules/mining/lavaland/mining_loot/cursed_katana.dm b/code/modules/mining/lavaland/mining_loot/cursed_katana.dm index ad7cbeb8a54..c7b9fd340e8 100644 --- a/code/modules/mining/lavaland/mining_loot/cursed_katana.dm +++ b/code/modules/mining/lavaland/mining_loot/cursed_katana.dm @@ -20,8 +20,7 @@ to_chat(user, span_userdanger("The mass goes up your arm and goes inside it!")) playsound(user, 'sound/effects/magic/demon_consume.ogg', 50, TRUE) var/index = user.get_held_index_of_item(src) - zone = (index == LEFT_HANDS ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM) - SetSlotFromZone() + swap_zone(IS_LEFT_INDEX(index) ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM) user.temporarilyRemoveItemFromInventory(src, TRUE) Insert(user) diff --git a/code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm b/code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm index 2b8f0b4f80c..c54f2d7152f 100644 --- a/code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm +++ b/code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm @@ -165,7 +165,7 @@ return var/mob/living/carbon/human/consumer = user - var/random = rand(2,4) //SKYRAT EDIT - Commenting out #1 because it makes people invisible. + var/random = rand(1,4) switch(random) if(1) @@ -183,8 +183,7 @@ "lizard_markings" = "Dark Tiger Body", "legs" = DIGITIGRADE_LEGS, ) - consumer.eye_color_left = "#FEE5A3" - consumer.eye_color_right = "#FEE5A3" + consumer.set_eye_color("#FEE5A3") consumer.set_species(/datum/species/lizard) if(2) to_chat(user, span_danger("Your flesh begins to melt! Miraculously, you seem fine otherwise.")) diff --git a/code/modules/mining/lavaland/mining_loot/megafauna/blood_drunk.dm b/code/modules/mining/lavaland/mining_loot/megafauna/blood_drunk.dm index 55db2372a6c..4cccf8993ab 100644 --- a/code/modules/mining/lavaland/mining_loot/megafauna/blood_drunk.dm +++ b/code/modules/mining/lavaland/mining_loot/megafauna/blood_drunk.dm @@ -121,3 +121,45 @@ balloon_alert(user, "[active ? "opened" : "closed"] [src]") playsound(src, 'sound/effects/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) return COMPONENT_NO_DEFAULT_MESSAGE + +// Wildhunter's butchering knife + +/obj/item/knife/hunting/wildhunter + name = "wildhunter's butchering knife" + desc = "A magical knife made out of ashen stone. It was used to butcher local fauna by best hunters. Cuts everything to the simplest." + icon = 'icons/obj/weapons/stabby_wide.dmi' + inhand_icon_state = "wildhuntingknife" + icon_state = "wildhuntingknife" + icon_angle = 180 + force = 20 + wound_bonus = 15 + w_class = WEIGHT_CLASS_NORMAL + sharpness = SHARP_EDGED + attack_verb_continuous = list("slices", "hunts", "butchers", "pierces") + attack_verb_simple = list("slice", "hunt", "butcher", "pierce") + +//best butchering tool +/obj/item/knife/hunting/wildhunter/set_butchering() + AddComponent(\ + /datum/component/butchering, \ + speed = 1.5 SECONDS , \ + effectiveness = 110, \ + bonus_modifier = 0, \ + ) + +/obj/item/knife/hunting/wildhunter/make_stabby() + return + +//cut those trophies +/obj/item/knife/hunting/wildhunter/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) + if(!istype(interacting_with, /obj/item/crusher_trophy)) + return NONE + var/obj/item/crusher_trophy/trophy = interacting_with + if(isnull(trophy.wildhunter_drop)) + return NONE + balloon_alert(user, "cutting trophy...") + if(!do_after(user, 4 SECONDS, trophy)) + return ITEM_INTERACT_BLOCKING + new trophy.wildhunter_drop(trophy.drop_location()) + qdel(trophy) + return ITEM_INTERACT_SUCCESS diff --git a/code/modules/mining/lavaland/mining_loot/megafauna/bubblegum.dm b/code/modules/mining/lavaland/mining_loot/megafauna/bubblegum.dm index 1f1a4a7c50b..71ce1594305 100644 --- a/code/modules/mining/lavaland/mining_loot/megafauna/bubblegum.dm +++ b/code/modules/mining/lavaland/mining_loot/megafauna/bubblegum.dm @@ -123,7 +123,7 @@ var/health_consumed = butchered.maxHealth * 0.1 user.heal_ordered_damage(health_consumed, list(BRUTE, BURN, TOX)) to_chat(user, span_notice("You heal from the corpse of [butchered].")) - var/datum/client_colour/color_effect = user.add_client_colour(/datum/client_colour/bloodlust) + var/datum/client_colour/color_effect = user.add_client_colour(/datum/client_colour/bloodlust, HELMET_TRAIT) QDEL_IN(color_effect, 1 SECONDS) // Soulscythe diff --git a/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm b/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm index a0ef8cd9163..ef2bf0eff00 100644 --- a/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm +++ b/code/modules/mining/lavaland/mining_loot/megafauna/hierophant.dm @@ -124,7 +124,7 @@ var/turf/user_turf = get_turf(user) teleporting = TRUE user.update_mob_action_buttons() - user.visible_message(span_hierophant_warning("[user] starts to glow faintly..."), span_hierophant_warning("You begin channeling [src]'s power..i.")) + user.visible_message(span_hierophant_warning("[user] starts to glow faintly..."), span_hierophant_warning("You begin channeling [src]'s power...")) beacon.icon_state = "hierophant_tele_on" var/obj/effect/temp_visual/hierophant/telegraph/edge/user_telegraph = new /obj/effect/temp_visual/hierophant/telegraph/edge(user_turf) var/obj/effect/temp_visual/hierophant/telegraph/edge/beacon_telegraph = new /obj/effect/temp_visual/hierophant/telegraph/edge(beacon_turf) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 2aa23de7135..8abee83c708 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -123,8 +123,8 @@ icon_state = "necro_bubblegum" base_icon_state = "necro_bubblegum" lid_icon_state = "necro_bubblegum_lid" - lid_x = -26 - lid_y = 2 + lid_w = -26 + lid_z = 2 /obj/structure/closet/crate/necropolis/bubblegum/PopulateContents() new /obj/item/clothing/suit/hooded/hostile_environment(src) diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 24e0f53a87a..31e8cca2ea9 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -373,26 +373,26 @@ switch(input_dir) if(NORTH) - ore_input.pixel_y = 32 - ore_output.pixel_y = -32 + ore_input.pixel_z = 32 + ore_output.pixel_z = -32 if(SOUTH) - ore_input.pixel_y = -32 - ore_output.pixel_y = 32 + ore_input.pixel_z = -32 + ore_output.pixel_z = 32 if(EAST) - ore_input.pixel_x = 32 - ore_output.pixel_x = -32 + ore_input.pixel_w = 32 + ore_output.pixel_w = -32 if(WEST) - ore_input.pixel_x = -32 - ore_output.pixel_x = 32 + ore_input.pixel_w = -32 + ore_output.pixel_w = 32 ore_input.color = COLOR_MODERATE_BLUE ore_output.color = COLOR_SECURITY_RED var/mutable_appearance/light_in = emissive_appearance(ore_input.icon, ore_input.icon_state, offset_spokesman = src, alpha = ore_input.alpha) - light_in.pixel_y = ore_input.pixel_y - light_in.pixel_x = ore_input.pixel_x + light_in.pixel_z = ore_input.pixel_z + light_in.pixel_w = ore_input.pixel_w var/mutable_appearance/light_out = emissive_appearance(ore_output.icon, ore_output.icon_state, offset_spokesman = src, alpha = ore_output.alpha) - light_out.pixel_y = ore_output.pixel_y - light_out.pixel_x = ore_output.pixel_x + light_out.pixel_z = ore_output.pixel_z + light_out.pixel_w = ore_output.pixel_w . += ore_input . += ore_output . += light_in diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index d81a6c01757..ea0345f78d0 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -143,10 +143,6 @@ roundstart_template = /datum/map_template/shuttle/mining/nebula height = 10 -/obj/docking_port/stationary/mining_home/nebula - roundstart_template = /datum/map_template/shuttle/mining/nebula - height = 10 - /obj/docking_port/stationary/mining_home/common name = "SS13: Common Mining Dock" shuttle_id = "commonmining_home" diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 5f5d11ccd02..b8aad68bb85 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -1,8 +1,3 @@ - -#define GIBTONITE_QUALITY_HIGH 3 -#define GIBTONITE_QUALITY_MEDIUM 2 -#define GIBTONITE_QUALITY_LOW 1 - #define ORESTACK_OVERLAYS_MAX 10 /**********************Mineral ores**************************/ @@ -41,8 +36,8 @@ else //amount > stack_overlays, add some. for(var/i in 1 to difference) var/mutable_appearance/newore = mutable_appearance(icon, icon_state) - newore.pixel_x = rand(-8,8) - newore.pixel_y = rand(-8,8) + newore.pixel_w = rand(-8,8) + newore.pixel_z = rand(-8,8) LAZYADD(stack_overlays, newore) if(stack_overlays) @@ -297,7 +292,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ holder.master = src holder.on_attach() rig_overlay = holder - rig_overlay.pixel_y -= 5 + rig_overlay.pixel_z -= 5 add_overlay(rig_overlay) RegisterSignal(src, COMSIG_IGNITER_ACTIVATE, PROC_REF(igniter_prime)) log_bomber(user, "attached [holder] to ", src) @@ -665,7 +660,4 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ qdel(src) return ITEM_INTERACT_SUCCESS -#undef GIBTONITE_QUALITY_HIGH -#undef GIBTONITE_QUALITY_LOW -#undef GIBTONITE_QUALITY_MEDIUM #undef ORESTACK_OVERLAYS_MAX diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index c156e39bbfc..be7e5a03940 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -280,8 +280,7 @@ if(humanc) // Quirks may change manifest datapoints, so inject only after assigning quirks GLOB.manifest.inject(humanc, humanc.client) // SKYRAT EDIT - Added humanc.client - ALTERNATIVE_JOB_TITLES - - + SEND_SIGNAL(humanc, COMSIG_HUMAN_CHARACTER_SETUP_FINISHED) var/area/station/arrivals = GLOB.areas_by_type[/area/station/hallway/secondary/entry] if(humanc && arrivals && !arrivals.power_environ) //arrivals depowered humanc.put_in_hands(new /obj/item/crowbar/large/emergency(get_turf(humanc))) //if hands full then just drops on the floor diff --git a/code/modules/mob/dead/new_player/poll.dm b/code/modules/mob/dead/new_player/poll.dm index e9760741627..c51b036e32e 100644 --- a/code/modules/mob/dead/new_player/poll.dm +++ b/code/modules/mob/dead/new_player/poll.dm @@ -295,7 +295,7 @@ GLOBAL_PROTECT(poll_options) output += "Revoting is enabled." output += "Please sort the options in the order of most preferred to least preferred
" if(!length(voted_for) || poll.allow_revoting) - output += {"
+ output += {" diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d364de468f2..4520d274b50 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -236,7 +236,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) if(hair_color) hair_overlay.color = hair_color hair_overlay.alpha = 200 - hair_overlay.pixel_y = S.y_offset + hair_overlay.pixel_z = S.y_offset add_overlay(hair_overlay) /* @@ -942,6 +942,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(!SSpoints_of_interest.is_valid_poi(chosen_target)) return + if (chosen_target == usr) + return + do_observe(chosen_target) /mob/dead/observer/proc/do_observe(mob/mob_eye) diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index 0353144157e..d564fd69eb8 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -38,7 +38,8 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new) user.reset_perspective(null) user.orbiting_ref = ref if (auto_observe) - user.do_observe(poi) + if (poi != user) + user.do_observe(poi) return TRUE if ("refresh") ui.send_full_update() diff --git a/code/modules/mob/eye/camera/remote.dm b/code/modules/mob/eye/camera/remote.dm index ff1dd9612eb..fc680b9e6dd 100644 --- a/code/modules/mob/eye/camera/remote.dm +++ b/code/modules/mob/eye/camera/remote.dm @@ -121,10 +121,36 @@ for(var/i = 0; i < max(sprint, initial); i += 20) var/turf/step = get_turf(get_step_multiz(src, direction)) if(step) - setLoc(step) + if(!(ISINRANGE_EX(step.x, TRANSITIONEDGE, world.maxx - TRANSITIONEDGE) && ISINRANGE_EX(step.y, TRANSITIONEDGE, world.maxy - TRANSITIONEDGE))) + transition_step(step, direction) + else + setLoc(step) last_moved = world.timeofday + wait_time if(acceleration) sprint = min(sprint + momentum, max_sprint) else sprint = initial + +/mob/eye/camera/remote/proc/transition_step(turf/destination, direction) + var/datum/space_level/from = SSmapping.get_level(destination.z) + var/datum/space_level/into = from.neigbours["[direction]"] + if(into && allow_z_transition(from, into)) + var/dest_x = destination.x + var/dest_y = destination.y + switch(direction) + if(NORTH) + dest_y = 1+TRANSITIONEDGE + if(SOUTH) + dest_y = world.maxy-TRANSITIONEDGE + if(EAST) + dest_x = 1+TRANSITIONEDGE + if(WEST) + dest_x = world.maxx-TRANSITIONEDGE + var/turf/new_destination = locate(dest_x, dest_y, into.z_value) + setLoc(new_destination || destination) + else + setLoc(destination) + +/mob/eye/camera/remote/proc/allow_z_transition(datum/space_level/from, datum/space_level/into) + return from == into diff --git a/code/modules/mob/living/basic/basic.dm b/code/modules/mob/living/basic/basic.dm index ba2f14e861d..b73bd672512 100644 --- a/code/modules/mob/living/basic/basic.dm +++ b/code/modules/mob/living/basic/basic.dm @@ -297,7 +297,7 @@ 'icons/mob/effects/onfire.dmi', fire_icon, -HIGHEST_LAYER, - appearance_flags = RESET_COLOR, + appearance_flags = RESET_COLOR|KEEP_APART, ) return GLOB.fire_appearances[fire_icon] diff --git a/code/modules/mob/living/basic/blob_minions/blobbernaut.dm b/code/modules/mob/living/basic/blob_minions/blobbernaut.dm index a548a30be6a..3db90eedd9b 100644 --- a/code/modules/mob/living/basic/blob_minions/blobbernaut.dm +++ b/code/modules/mob/living/basic/blob_minions/blobbernaut.dm @@ -72,9 +72,8 @@ // take 2.5% of max health as damage when not near the blob or if the naut has no factory, 5% if both apply_damage(maxHealth * BLOBMOB_BLOBBERNAUT_HEALTH_DECAY * damage_sources * seconds_per_tick, damagetype = TOX) // We reduce brute damage - var/mutable_appearance/harming = mutable_appearance('icons/mob/nonhuman-player/blob.dmi', "nautdamage", MOB_LAYER + 0.01) - harming.appearance_flags = RESET_COLOR - harming.color = atom_colours[FIXED_COLOUR_PRIORITY] || COLOR_WHITE + var/mutable_appearance/harming = mutable_appearance('icons/mob/nonhuman-player/blob.dmi', "nautdamage", MOB_LAYER + 0.01, appearance_flags = RESET_COLOR|KEEP_APART) + harming = color_atom_overlay(harming) harming.dir = dir flick_overlay_view(harming, 0.8 SECONDS) return TRUE diff --git a/code/modules/mob/living/basic/bots/repairbot/repairbot.dm b/code/modules/mob/living/basic/bots/repairbot/repairbot.dm index 775e22101bc..09739aeebcf 100644 --- a/code/modules/mob/living/basic/bots/repairbot/repairbot.dm +++ b/code/modules/mob/living/basic/bots/repairbot/repairbot.dm @@ -3,8 +3,8 @@ name = "\improper Repairbot" desc = "I can fix it!" icon = 'icons/mob/silicon/aibots.dmi' - icon_state = "repairbot_base" - base_icon_state = "repairbot_base" + icon_state = "repairbot1" + base_icon_state = "repairbot" pass_flags = parent_type::pass_flags | PASSTABLE layer = BELOW_MOB_LAYER anchored = FALSE @@ -95,8 +95,8 @@ START_PROCESSING(SSobj, src) /mob/living/basic/bot/repairbot/proc/set_color(new_color) - add_atom_colour(new_color, FIXED_COLOUR_PRIORITY) toolbox_color = new_color + update_appearance() /mob/living/basic/bot/repairbot/attackby(obj/item/potential_stack, mob/living/carbon/human/user, list/modifiers) if(!istype(potential_stack, /obj/item/stack)) @@ -110,7 +110,10 @@ continue var/obj/item/stack/our_sheet = locate(content) in src if(isnull(our_sheet)) - potential_stack.forceMove(src) + if(!user.transferItemToLoc(potential_stack, src)) + user.balloon_alert(user, "stuck to your hand!") + return + balloon_alert(src, "inserted") return if(our_sheet.amount >= our_sheet.max_amount) user?.balloon_alert(user, "full!") @@ -119,7 +122,9 @@ user?.balloon_alert(user, "not suitable!") return var/atom/movable/to_move = potential_stack.split_stack(user, min(our_sheet.max_amount - our_sheet.amount, potential_stack.amount)) - to_move.forceMove(src) + if(!user.transferItemToLoc(to_move, src)) + user.balloon_alert(user, "stuck to your hand!") + return balloon_alert(src, "inserted") return @@ -258,22 +263,20 @@ /mob/living/basic/bot/repairbot/update_overlays() . = ..() - . += mutable_appearance(icon, "repairbot[bot_mode_flags & BOT_MODE_ON]", appearance_flags = RESET_COLOR) + var/mutable_appearance/our_box = mutable_appearance(icon, "repairbot_box", BELOW_MOB_LAYER - 0.02) + our_box.color = toolbox_color + . += our_box if(our_glass) - var/mutable_appearance/glass = mutable_appearance(icon, "repairbot_glass_overlay", BELOW_MOB_LAYER - 0.02, appearance_flags = RESET_COLOR) - glass.pixel_x = -6 - glass.pixel_y = -5 + var/mutable_appearance/glass = mutable_appearance(icon, "repairbot_glass_overlay", BELOW_MOB_LAYER - 0.02, appearance_flags = RESET_COLOR|KEEP_APART) + glass.pixel_w = -6 + glass.pixel_z = -5 . += glass if(our_iron) - var/mutable_appearance/iron = mutable_appearance(icon, "repairbot_iron_overlay", BELOW_MOB_LAYER - 0.02, appearance_flags = RESET_COLOR) - iron.pixel_y = -5 - iron.pixel_x = 7 + var/mutable_appearance/iron = mutable_appearance(icon, "repairbot_iron_overlay", BELOW_MOB_LAYER - 0.02, appearance_flags = RESET_COLOR|KEEP_APART) + iron.pixel_w = 7 + iron.pixel_z = -5 . += iron -/mob/living/basic/bot/repairbot/update_icon_state() - . = ..() - icon_state = base_icon_state - /mob/living/basic/bot/repairbot/generate_speak_list() return neutral_voicelines + emagged_voicelines @@ -353,7 +356,8 @@ /mob/living/basic/bot/repairbot/mob_pickup(mob/living/user) var/obj/item/carried_repairbot/carried = new(get_turf(src)) carried.set_bot(src) - carried.add_atom_colour(toolbox_color, FIXED_COLOUR_PRIORITY) + if(carried.icon_state == "toolbox_default") + carried.add_atom_colour(toolbox_color, FIXED_COLOUR_PRIORITY) user.visible_message(span_warning("[user] scoops up [src]!")) user.put_in_hands(carried) @@ -369,6 +373,7 @@ /obj/item/carried_repairbot/proc/set_bot(mob/living/basic/bot/repairbot/repairbot) var/obj/item/bot_toolbox = repairbot.toolbox + name = repairbot.name icon = bot_toolbox::icon icon_state = bot_toolbox::icon_state lefthand_file = bot_toolbox::lefthand_file diff --git a/code/modules/mob/living/basic/drone/_drone.dm b/code/modules/mob/living/basic/drone/_drone.dm index 7490a463977..8807f35e038 100644 --- a/code/modules/mob/living/basic/drone/_drone.dm +++ b/code/modules/mob/living/basic/drone/_drone.dm @@ -210,6 +210,7 @@ TRAIT_SILICON_ACCESS, TRAIT_REAGENT_SCANNER, TRAIT_UNOBSERVANT, + TRAIT_SILICON_EMOTES_ALLOWED, ), INNATE_TRAIT) listener = new(list(ALARM_ATMOS, ALARM_FIRE, ALARM_POWER), list(z)) diff --git a/code/modules/mob/living/basic/drone/drone_tools.dm b/code/modules/mob/living/basic/drone/drone_tools.dm index dfb05a8d3a9..5e8af8fe5b5 100644 --- a/code/modules/mob/living/basic/drone/drone_tools.dm +++ b/code/modules/mob/living/basic/drone/drone_tools.dm @@ -47,14 +47,11 @@ random_color = FALSE -/obj/item/screwdriver/drone/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file) +/obj/item/screwdriver/drone/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) . = ..() if(!isinhands) return - - var/mutable_appearance/head = mutable_appearance(icon_file, "screwdriver_head") - head.appearance_flags = RESET_COLOR - . += head + . += mutable_appearance(icon_file, "screwdriver_head", appearance_flags = RESET_COLOR) /obj/item/wrench/drone name = "built-in wrench" diff --git a/code/modules/mob/living/basic/drone/visuals_icons.dm b/code/modules/mob/living/basic/drone/visuals_icons.dm index 32ff97da305..401f55751c4 100644 --- a/code/modules/mob/living/basic/drone/visuals_icons.dm +++ b/code/modules/mob/living/basic/drone/visuals_icons.dm @@ -38,7 +38,7 @@ if(istype(head, /obj/item/clothing/mask)) used_head_icon = 'icons/mob/clothing/mask.dmi' var/mutable_appearance/head_overlay = head.build_worn_icon(default_layer = DRONE_HEAD_LAYER, default_icon_file = used_head_icon) - head_overlay.pixel_y -= 15 + head_overlay.pixel_z -= 15 drone_overlays[DRONE_HEAD_LAYER] = head_overlay diff --git a/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon.dm b/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon.dm index 0b27ac6958e..adce439095e 100644 --- a/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon.dm +++ b/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon.dm @@ -75,7 +75,7 @@ /mob/living/basic/mining/demon_afterimage/Initialize(mapload) . = ..() AddElement(/datum/element/simple_flying) - AddElement(/datum/element/temporary_atom, life_time = existence_period) + fade_into_nothing(life_time = existence_period) ///afterimage subtypes summoned by the crusher /mob/living/basic/mining/demon_afterimage/crusher diff --git a/code/modules/mob/living/basic/lavaland/gutlunchers/gutluncher_foodtrough.dm b/code/modules/mob/living/basic/lavaland/gutlunchers/gutluncher_foodtrough.dm index 0180c4f1797..bbc6d6e95fb 100644 --- a/code/modules/mob/living/basic/lavaland/gutlunchers/gutluncher_foodtrough.dm +++ b/code/modules/mob/living/basic/lavaland/gutlunchers/gutluncher_foodtrough.dm @@ -32,8 +32,8 @@ var/image/ore_icon = image(icon = initial(ore_item.icon), icon_state = initial(ore_item.icon_state), layer = LOW_ITEM_LAYER) var/list/pixel_positions = list_of_materials[ore_entry] ore_icon.transform = ore_icon.transform.Scale(0.4, 0.4) - ore_icon.pixel_x = pixel_positions["pixel_x"] - ore_icon.pixel_y = pixel_positions["pixel_y"] + ore_icon.pixel_w = pixel_positions["pixel_x"] + ore_icon.pixel_z = pixel_positions["pixel_y"] . += ore_icon /obj/structure/ore_container/food_trough/gutlunch_trough diff --git a/code/modules/mob/living/basic/lavaland/legion/legion.dm b/code/modules/mob/living/basic/lavaland/legion/legion.dm index 7047664386a..6a2d3840884 100644 --- a/code/modules/mob/living/basic/lavaland/legion/legion.dm +++ b/code/modules/mob/living/basic/lavaland/legion/legion.dm @@ -60,7 +60,7 @@ UnregisterSignal(stored_mob, COMSIG_LIVING_REVIVE) ai_controller.clear_blackboard_key(BB_LEGION_CORPSE) stored_mob.remove_status_effect(/datum/status_effect/grouped/stasis, STASIS_LEGION_EATEN) - stored_mob.add_mood_event(MOOD_CATEGORY_LEGION_CORE, /datum/mood_event/healsbadman/long_term) // This will still probably mostly be gone before you are alive + stored_mob.add_mood_event("legion_core", /datum/mood_event/healsbadman/long_term) // This will still probably mostly be gone before you are alive stored_mob = null /mob/living/basic/mining/legion/death(gibbed) diff --git a/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm b/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm index 984080907c2..daa10681794 100644 --- a/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm +++ b/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm @@ -72,7 +72,7 @@ return FALSE if (target.stat <= SOFT_CRIT && !(organ_flags & ORGAN_FAILING)) - target.add_mood_event(MOOD_CATEGORY_LEGION_CORE, /datum/mood_event/healsbadman) + target.add_mood_event("legion_core", /datum/mood_event/healsbadman) target.apply_status_effect(applied_status) if (target != user) @@ -164,3 +164,7 @@ to_chat(finder, span_notice("Its pulsing tendrils reach all throughout the body.")) if(prob(stage * 2)) infest() + +/obj/item/organ/legion_tumour/feel_for_damage(self_aware) + // keep stealthy for now, revisit later + return "" diff --git a/code/modules/mob/living/basic/lavaland/mook/mook_village.dm b/code/modules/mob/living/basic/lavaland/mook/mook_village.dm index ca2719ed7c6..2f51b43ee96 100644 --- a/code/modules/mob/living/basic/lavaland/mook/mook_village.dm +++ b/code/modules/mob/living/basic/lavaland/mook/mook_village.dm @@ -16,8 +16,8 @@ for(var/obj/item/stack/ore/ore_item in contents) var/image/ore_icon = image(icon = initial(ore_item.icon), icon_state = initial(ore_item.icon_state), layer = LOW_ITEM_LAYER) ore_icon.transform = ore_icon.transform.Scale(0.6, 0.6) - ore_icon.pixel_x = rand(9, 17) - ore_icon.pixel_y = rand(2, 4) + ore_icon.pixel_w = rand(9, 17) + ore_icon.pixel_z = rand(2, 4) . += ore_icon /obj/effect/landmark/mook_village diff --git a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm index 4241eb4295e..a21f0b47e01 100644 --- a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm +++ b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm @@ -31,6 +31,21 @@ /datum/ai_planning_subtree/find_and_hunt_target/play_with_owner/raptor, ) +/datum/ai_controller/basic_controller/raptor/TryPossessPawn(atom/new_pawn) + . = ..() + if(. & AI_CONTROLLER_INCOMPATIBLE) + return + RegisterSignal(new_pawn, COMSIG_AI_BLACKBOARD_KEY_SET(BB_RAPTOR_COWARD), PROC_REF(on_cowardly_set)) + RegisterSignal(new_pawn, COMSIG_AI_BLACKBOARD_KEY_CLEARED(BB_RAPTOR_COWARD), PROC_REF(on_cowardly_clear)) + +/datum/ai_controller/basic_controller/raptor/proc/on_cowardly_set(datum/source) + SIGNAL_HANDLER + ADD_TRAIT(pawn, TRAIT_MOB_DIFFICULT_TO_MOUNT, REF(src)) + +/datum/ai_controller/basic_controller/raptor/proc/on_cowardly_clear(datum/source) + SIGNAL_HANDLER + REMOVE_TRAIT(pawn, TRAIT_MOB_DIFFICULT_TO_MOUNT, REF(src)) + /datum/ai_controller/basic_controller/raptor/on_mob_eat() . = ..() clear_blackboard_key(BB_RAPTOR_TROUGH_TARGET) diff --git a/code/modules/mob/living/basic/lavaland/watcher/watcher_gaze.dm b/code/modules/mob/living/basic/lavaland/watcher/watcher_gaze.dm index 2df2c3b35e3..53fef0e912b 100644 --- a/code/modules/mob/living/basic/lavaland/watcher/watcher_gaze.dm +++ b/code/modules/mob/living/basic/lavaland/watcher/watcher_gaze.dm @@ -58,10 +58,10 @@ var/image/flashed_overlay = image( icon = 'icons/effects/eldritch.dmi', loc = viewer, - icon_state = "eye_flash", - pixel_x = -viewer.pixel_x, - pixel_y = -viewer.pixel_y, + icon_state = "eye_flash" ) + flashed_overlay.pixel_w = -viewer.pixel_x + flashed_overlay.pixel_z = -viewer.pixel_y flick_overlay_global(flashed_overlay, show_to = GLOB.clients, duration = animation_time) stage_timer = addtimer(CALLBACK(src, PROC_REF(hide_eye)), animation_time, TIMER_STOPPABLE) var/mob/living/living_owner = owner @@ -83,7 +83,9 @@ /// Display an animated overlay over our head to indicate what's going on /datum/action/cooldown/mob_cooldown/watcher_gaze/proc/show_indicator_overlay(overlay_state) clear_current_overlay() - current_overlay = image(icon = 'icons/effects/eldritch.dmi', loc = owner, icon_state = overlay_state, pixel_x = -owner.pixel_x, pixel_y = 28, layer = ABOVE_ALL_MOB_LAYER) + current_overlay = image(icon = 'icons/effects/eldritch.dmi', loc = owner, icon_state = overlay_state, layer = ABOVE_ALL_MOB_LAYER) + current_overlay.pixel_w = -owner.pixel_x + current_overlay.pixel_z = 28 SET_PLANE_EXPLICIT(current_overlay, ABOVE_LIGHTING_PLANE, owner) for(var/client/add_to in GLOB.clients) add_to.images += current_overlay diff --git a/code/modules/mob/living/basic/pets/dog/corgi.dm b/code/modules/mob/living/basic/pets/dog/corgi.dm index ed43aa2b1d5..483eaae601d 100644 --- a/code/modules/mob/living/basic/pets/dog/corgi.dm +++ b/code/modules/mob/living/basic/pets/dog/corgi.dm @@ -174,7 +174,7 @@ if(stat == DEAD || HAS_TRAIT(src, TRAIT_FAKEDEATH)) head_icon = equipped_head_fashion_item.get_overlay(dir = EAST) - head_icon.pixel_y = -8 + head_icon.pixel_z = -8 head_icon.transform = head_icon.transform.Turn(180) else head_icon = equipped_head_fashion_item.get_overlay() @@ -194,7 +194,7 @@ if(stat == DEAD || HAS_TRAIT(src, TRAIT_FAKEDEATH)) back_icon = equipped_back_fashion_item.get_overlay(dir = EAST) - back_icon.pixel_y = -11 + back_icon.pixel_z = -11 back_icon.transform = back_icon.transform.Turn(180) else back_icon = equipped_back_fashion_item.get_overlay() diff --git a/code/modules/mob/living/basic/pets/gondolas/gondola.dm b/code/modules/mob/living/basic/pets/gondolas/gondola.dm index e607a13bf1e..e23848064a9 100644 --- a/code/modules/mob/living/basic/pets/gondolas/gondola.dm +++ b/code/modules/mob/living/basic/pets/gondolas/gondola.dm @@ -57,11 +57,11 @@ //Offset the face to match the Gondola's height. switch(height) if("gondola_body_medium") - eyes_overlay.pixel_y = -4 - moustache_overlay.pixel_y = -4 + eyes_overlay.pixel_z = -4 + moustache_overlay.pixel_z = -4 if("gondola_body_short") - eyes_overlay.pixel_y = -8 - moustache_overlay.pixel_y = -8 + eyes_overlay.pixel_z = -8 + moustache_overlay.pixel_z = -8 cut_overlays(TRUE) add_overlay(body_overlay) diff --git a/code/modules/mob/living/basic/ruin_defender/mimic/mimic.dm b/code/modules/mob/living/basic/ruin_defender/mimic/mimic.dm index 26e897456c5..59ce68cf573 100644 --- a/code/modules/mob/living/basic/ruin_defender/mimic/mimic.dm +++ b/code/modules/mob/living/basic/ruin_defender/mimic/mimic.dm @@ -49,9 +49,10 @@ GLOBAL_LIST_INIT(animatable_blacklist, typecacheof(list( // Aggro when you try to open them. Will also pickup loot when spawns and drop it when dies. /mob/living/basic/mimic/crate name = "crate" - desc = "A rectangular steel crate." + desc = "A very hostile rectangular steel crate." icon = 'icons/obj/storage/crates.dmi' icon_state = "crate" + base_icon_state = "crate" icon_living = "crate" attack_verb_continuous = "bites" attack_verb_simple = "bite" @@ -70,6 +71,8 @@ GLOBAL_LIST_INIT(animatable_blacklist, typecacheof(list( var/storage_capacity = 50 ///A cap for mobs. Mobs count towards the item cap. Same purpose as above. var/mob_storage_capacity = 10 + ///Nullspaced crate that we are pretending to be + var/atom/movable/crate = /obj/structure/closet/crate // Pickup loot /mob/living/basic/mimic/crate/Initialize(mapload) @@ -82,7 +85,14 @@ GLOBAL_LIST_INIT(animatable_blacklist, typecacheof(list( for(var/obj/item/item in loc) item.forceMove(src) + crate = new crate(null) // Nullspaced so we don't accidentally spew it out when opening + icon = crate.icon + icon_state = crate.icon_state + base_icon_state = crate.base_icon_state + icon_living = icon_state + /mob/living/basic/mimic/crate/Destroy() + QDEL_NULL(crate) lock = null return ..() @@ -134,6 +144,11 @@ GLOBAL_LIST_INIT(animatable_blacklist, typecacheof(list( if(istype(mover, /obj/structure/closet)) return FALSE +/mob/living/basic/mimic/crate/examine(mob/user) + if(ai_controller?.ai_status == AI_STATUS_OFF && !client) + return crate.examine(user) + return ..() + /** * Used to open and close the mimic * @@ -149,14 +164,14 @@ GLOBAL_LIST_INIT(animatable_blacklist, typecacheof(list( if(!opened) ADD_TRAIT(src, TRAIT_UNDENSE, MIMIC_TRAIT) opened = TRUE - icon_state = "crateopen" + icon_state = "[base_icon_state]open" playsound(src, 'sound/machines/crate/crate_open.ogg', 50, TRUE) for(var/atom/movable/movable as anything in src) movable.forceMove(loc) else REMOVE_TRAIT(src, TRAIT_UNDENSE, MIMIC_TRAIT) opened = FALSE - icon_state = "crate" + icon_state = base_icon_state playsound(src, 'sound/machines/crate/crate_close.ogg', 50, TRUE) for(var/atom/movable/movable as anything in get_turf(src)) if(movable != src && insert(movable) == CANT_INSERT_FULL) diff --git a/code/modules/mob/living/basic/space_fauna/ghost.dm b/code/modules/mob/living/basic/space_fauna/ghost.dm index 00bcc45445e..c240425d905 100644 --- a/code/modules/mob/living/basic/space_fauna/ghost.dm +++ b/code/modules/mob/living/basic/space_fauna/ghost.dm @@ -75,7 +75,7 @@ ghost_hair = mutable_appearance('icons/mob/human/human_face.dmi', "[hair_style.icon_state]", -HAIR_LAYER) ghost_hair.alpha = 200 ghost_hair.color = ghost_hair_color - ghost_hair.pixel_y = hair_style.y_offset + ghost_hair.pixel_z = hair_style.y_offset add_overlay(ghost_hair) if(!isnull(ghost_facial_hairstyle) && ghost_facial_hairstyle != "Shaved") diff --git a/code/modules/mob/living/basic/space_fauna/robot_customer.dm b/code/modules/mob/living/basic/space_fauna/robot_customer.dm index 667adb7d268..27e20122087 100644 --- a/code/modules/mob/living/basic/space_fauna/robot_customer.dm +++ b/code/modules/mob/living/basic/space_fauna/robot_customer.dm @@ -46,7 +46,7 @@ icon = customer_info.base_icon icon_state = customer_info.base_icon_state name = "[pick(customer_info.name_prefixes)]-bot" - color = rgb(rand(80,255), rand(80,255), rand(80,255)) + add_atom_colour(rgb(rand(80,255), rand(80,255), rand(80,255)), FIXED_COLOUR_PRIORITY) clothes_set = pick(customer_info.clothing_sets) update_appearance(UPDATE_ICON) @@ -82,13 +82,8 @@ underlays.Cut() underlays += new_underlays - var/mutable_appearance/features = mutable_appearance(icon, "[icon_state]_features") - features.appearance_flags = RESET_COLOR - . += features - - var/mutable_appearance/clothes = mutable_appearance(icon, clothes_set) - clothes.appearance_flags = RESET_COLOR - . += clothes + . += mutable_appearance(icon, "[icon_state]_features", appearance_flags = RESET_COLOR|KEEP_APART) + . += mutable_appearance(icon, clothes_set, appearance_flags = RESET_COLOR|KEEP_APART) var/bonus_overlays = customer_info.get_overlays(src) if(bonus_overlays) diff --git a/code/modules/mob/living/basic/trooper/abductor.dm b/code/modules/mob/living/basic/trooper/abductor.dm index 8163fb72c5a..1a3ea4b6288 100644 --- a/code/modules/mob/living/basic/trooper/abductor.dm +++ b/code/modules/mob/living/basic/trooper/abductor.dm @@ -3,13 +3,13 @@ name = "Abductor Agent" desc = "Mezaflorp?" faction = list(ROLE_SYNDICATE) - loot = list(/obj/effect/mob_spawn/corpse/human/abductor) mob_spawner = /obj/effect/mob_spawn/corpse/human/abductor + corpse = /obj/effect/mob_spawn/corpse/human/abductor /mob/living/basic/trooper/abductor/melee melee_damage_lower = 15 melee_damage_upper = 15 - loot = list(/obj/effect/gibspawner/human) + corpse = /obj/effect/gibspawner/human attack_verb_continuous = "beats" attack_verb_simple = "beat" attack_sound = 'sound/items/weapons/egloves.ogg' @@ -18,7 +18,7 @@ var/projectile_deflect_chance = 0 /mob/living/basic/trooper/abductor/ranged - loot = list(/obj/effect/gibspawner/human) + corpse = /obj/effect/gibspawner/human ai_controller = /datum/ai_controller/basic_controller/trooper/ranged r_hand = /obj/item/gun/energy/alien /// Type of bullet we use diff --git a/code/modules/mob/living/basic/trooper/nanotrasen.dm b/code/modules/mob/living/basic/trooper/nanotrasen.dm index 6d285b871d8..80f0f348624 100644 --- a/code/modules/mob/living/basic/trooper/nanotrasen.dm +++ b/code/modules/mob/living/basic/trooper/nanotrasen.dm @@ -5,7 +5,7 @@ melee_damage_lower = 10 melee_damage_upper = 15 faction = list(ROLE_DEATHSQUAD) - loot = list(/obj/effect/mob_spawn/corpse/human/nanotrasensoldier) + corpse = /obj/effect/mob_spawn/corpse/human/nanotrasensoldier mob_spawner = /obj/effect/mob_spawn/corpse/human/nanotrasensoldier /mob/living/basic/trooper/nanotrasen/assess_threat(judgement_criteria, lasercolor, datum/callback/weaponcheck) @@ -56,7 +56,7 @@ ranged_cooldown = 3 SECONDS projectilesound = 'sound/items/weapons/gun/smg/shot.ogg' r_hand = /obj/item/gun/ballistic/automatic/ar - loot = list(/obj/effect/mob_spawn/corpse/human/nanotrasenassaultsoldier) + corpse = /obj/effect/mob_spawn/corpse/human/nanotrasenassaultsoldier mob_spawner = /obj/effect/mob_spawn/corpse/human/nanotrasenassaultsoldier /mob/living/basic/trooper/nanotrasen/ranged/elite @@ -71,7 +71,7 @@ projectilesound = 'sound/items/weapons/laser.ogg' ranged_cooldown = 5 SECONDS faction = list(ROLE_DEATHSQUAD) - loot = list(/obj/effect/gibspawner/human) + corpse = /obj/effect/gibspawner/human mob_spawner = /obj/effect/mob_spawn/corpse/human/nanotrasenelitesoldier r_hand = /obj/item/gun/energy/pulse/carbine/lethal diff --git a/code/modules/mob/living/basic/trooper/pirate.dm b/code/modules/mob/living/basic/trooper/pirate.dm index 0af2f2aa697..af8ae0cdfd2 100644 --- a/code/modules/mob/living/basic/trooper/pirate.dm +++ b/code/modules/mob/living/basic/trooper/pirate.dm @@ -6,8 +6,8 @@ response_help_simple = "push" speak_emote = list("yarrs") faction = list(FACTION_PIRATE) - loot = list(/obj/effect/mob_spawn/corpse/human/pirate) mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate + corpse = /obj/effect/mob_spawn/corpse/human/pirate /// The amount of money to steal with a melee attack var/plunder_credits = 25 @@ -30,10 +30,10 @@ light_power = 2.5 light_color = COLOR_SOFT_RED loot = list( - /obj/effect/mob_spawn/corpse/human/pirate/melee, /obj/item/melee/energy/sword/pirate, ) mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/melee + corpse = /obj/effect/mob_spawn/corpse/human/pirate/melee r_hand = /obj/item/melee/energy/sword/pirate plunder_credits = 50 //they hit hard so they steal more @@ -41,8 +41,9 @@ name = "Space Pirate Swashbuckler" unsuitable_atmos_damage = 0 minimum_survivable_temperature = 0 - loot = list(/obj/effect/mob_spawn/corpse/human/pirate/melee/space) + loot = null mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/melee/space + corpse = /obj/effect/mob_spawn/corpse/human/pirate/melee/space /mob/living/basic/trooper/pirate/melee/space/Initialize(mapload) . = ..() @@ -50,8 +51,8 @@ /mob/living/basic/trooper/pirate/ranged name = "Pirate Gunner" - loot = list(/obj/effect/mob_spawn/corpse/human/pirate/ranged) mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/ranged + corpse = /obj/effect/mob_spawn/corpse/human/pirate/ranged r_hand = /obj/item/gun/energy/laser ai_controller = /datum/ai_controller/basic_controller/trooper/ranged /// Type of bullet we use @@ -77,7 +78,7 @@ name = "Space Pirate Gunner" unsuitable_atmos_damage = 0 minimum_survivable_temperature = 0 - loot = list(/obj/effect/mob_spawn/corpse/human/pirate/ranged/space) + corpse = /obj/effect/mob_spawn/corpse/human/pirate/ranged/space mob_spawner = /obj/effect/mob_spawn/corpse/human/pirate/ranged/space r_hand = /obj/item/gun/energy/e_gun/lethal diff --git a/code/modules/mob/living/basic/trooper/russian.dm b/code/modules/mob/living/basic/trooper/russian.dm index a3c3f6a5605..6085b086cd6 100644 --- a/code/modules/mob/living/basic/trooper/russian.dm +++ b/code/modules/mob/living/basic/trooper/russian.dm @@ -16,19 +16,15 @@ mob_spawner = /obj/effect/mob_spawn/corpse/human/russian r_hand = /obj/item/knife/kitchen - loot = list( - /obj/effect/mob_spawn/corpse/human/russian, - /obj/item/knife/kitchen, - ) + corpse = /obj/effect/mob_spawn/corpse/human/russian + loot = list(/obj/item/knife/kitchen) /mob/living/basic/trooper/russian/ranged ai_controller = /datum/ai_controller/basic_controller/trooper/ranged mob_spawner = /obj/effect/mob_spawn/corpse/human/russian/ranged r_hand = /obj/item/gun/ballistic/automatic/pistol - loot = list( - /obj/effect/mob_spawn/corpse/human/russian/ranged, - /obj/item/gun/ballistic/revolver/nagant, - ) + corpse = /obj/effect/mob_spawn/corpse/human/russian/ranged + loot = list(/obj/item/gun/ballistic/revolver/nagant) var/casingtype = /obj/item/ammo_casing/n762 var/projectilesound = 'sound/items/weapons/gun/revolver/shot.ogg' @@ -37,4 +33,4 @@ AddComponent(/datum/component/ranged_attacks, casing_type = casingtype, projectile_sound = projectilesound, cooldown_time = 1 SECONDS) /mob/living/basic/trooper/russian/ranged/lootless - loot = list() + loot = null diff --git a/code/modules/mob/living/basic/trooper/syndicate.dm b/code/modules/mob/living/basic/trooper/syndicate.dm index 6d4766db8cd..5aedfaec494 100644 --- a/code/modules/mob/living/basic/trooper/syndicate.dm +++ b/code/modules/mob/living/basic/trooper/syndicate.dm @@ -3,14 +3,14 @@ name = "Syndicate Operative" desc = "Death to Nanotrasen." faction = list(ROLE_SYNDICATE) - loot = list(/obj/effect/mob_spawn/corpse/human/syndicatesoldier) + corpse = /obj/effect/mob_spawn/corpse/human/syndicatesoldier mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatesoldier /mob/living/basic/trooper/syndicate/space name = "Syndicate Commando" maxHealth = 170 health = 170 - loot = list(/obj/effect/gibspawner/human) + corpse = /obj/effect/gibspawner/human unsuitable_atmos_damage = 0 minimum_survivable_temperature = 0 mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatecommando @@ -29,7 +29,7 @@ /mob/living/basic/trooper/syndicate/melee //dude with a knife and no shields melee_damage_lower = 15 melee_damage_upper = 15 - loot = list(/obj/effect/gibspawner/human) + corpse = /obj/effect/gibspawner/human attack_verb_continuous = "slashes" attack_verb_simple = "slash" attack_sound = 'sound/items/weapons/bladeslice.ogg' @@ -99,7 +99,7 @@ ///////////////Guns//////////// /mob/living/basic/trooper/syndicate/ranged - loot = list(/obj/effect/gibspawner/human) + corpse = /obj/effect/gibspawner/human ai_controller = /datum/ai_controller/basic_controller/trooper/ranged r_hand = /obj/item/gun/ballistic/automatic/pistol /// Type of bullet we use @@ -125,7 +125,7 @@ /mob/living/basic/trooper/syndicate/ranged/infiltrator //shuttle loan event projectilesound = 'sound/items/weapons/gun/smg/shot_suppressed.ogg' - loot = list(/obj/effect/mob_spawn/corpse/human/syndicatesoldier) + corpse = /obj/effect/mob_spawn/corpse/human/syndicatesoldier /mob/living/basic/trooper/syndicate/ranged/space name = "Syndicate Commando" @@ -159,12 +159,12 @@ name = "spaceport security" desc = "Premier corporate security forces for all spaceports found along the Orion Trail." faction = list(FACTION_ORION) - loot = list() + corpse = null /mob/living/basic/trooper/syndicate/ranged/smg/pilot //caravan ambush ruin name = "Syndicate Salvage Pilot" - loot = list(/obj/effect/mob_spawn/corpse/human/syndicatepilot) mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatepilot + corpse = /obj/effect/mob_spawn/corpse/human/syndicatepilot /mob/living/basic/trooper/syndicate/ranged/smg/space name = "Syndicate Commando" diff --git a/code/modules/mob/living/basic/trooper/trooper.dm b/code/modules/mob/living/basic/trooper/trooper.dm index 7c9fd698d08..1df73b15a1d 100644 --- a/code/modules/mob/living/basic/trooper/trooper.dm +++ b/code/modules/mob/living/basic/trooper/trooper.dm @@ -19,7 +19,9 @@ ai_controller = /datum/ai_controller/basic_controller/trooper /// Loot this mob drops on death. - var/loot = list(/obj/effect/mob_spawn/corpse/human) + var/list/loot + /// Corpse to spawn + var/corpse = /obj/effect/mob_spawn/corpse/human /// Path of the mob spawner we base the mob's visuals off of. var/mob_spawner = /obj/effect/mob_spawn/corpse/human /// Path of the right hand held item we give to the mob's visuals. @@ -30,7 +32,8 @@ /mob/living/basic/trooper/Initialize(mapload) . = ..() apply_dynamic_human_appearance(src, mob_spawn_path = mob_spawner, r_hand = r_hand, l_hand = l_hand) - if(LAZYLEN(loot)) + if(LAZYLEN(loot) || corpse) + LAZYOR(loot, corpse) loot = string_list(loot) AddElement(/datum/element/death_drops, loot) AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_SHOE) diff --git a/code/modules/mob/living/basic/turtle/turtle.dm b/code/modules/mob/living/basic/turtle/turtle.dm index 81661a586e6..07acd549b37 100644 --- a/code/modules/mob/living/basic/turtle/turtle.dm +++ b/code/modules/mob/living/basic/turtle/turtle.dm @@ -174,12 +174,12 @@ . = ..() if(stat == DEAD) var/mutable_appearance/dead_overlay = mutable_appearance(icon = 'icons/mob/simple/pets.dmi', icon_state = developed_path ? "dead_tree" : "growing_tree") - dead_overlay.pixel_y = -2 + dead_overlay.pixel_z = -2 . += dead_overlay return var/pixel_offset = resting ? -2 : 2 var/mutable_appearance/living_tree = grown_tree ? grown_tree : mutable_appearance(icon = icon, icon_state = "growing_tree") - living_tree.pixel_y = pixel_offset + living_tree.pixel_z = pixel_offset . += living_tree /mob/living/basic/turtle/update_resting() diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 23065c7edcc..416dc6d2b8f 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -193,8 +193,7 @@ rate_of_change = ", but it's clotting up quickly!" else // flick through our wounds to see if there are any bleeding ones getting worse or holding flow (maybe move this to handle_blood and cache it so we don't need to cycle through the wounds so much) - for(var/i in all_wounds) - var/datum/wound/iter_wound = i + for(var/datum/wound/iter_wound as anything in all_wounds) if(!iter_wound.blood_flow) continue var/iter_wound_roc = iter_wound.get_bleed_rate_of_change() @@ -219,17 +218,16 @@ /mob/living/carbon/restore_blood() blood_volume = BLOOD_VOLUME_NORMAL - for(var/i in bodyparts) - var/obj/item/bodypart/BP = i - BP.setBleedStacks(0) + for(var/obj/item/bodypart/bodypart_to_restore as anything in bodyparts) + bodypart_to_restore.setBleedStacks(0) /**************************************************** BLOOD TRANSFERS ****************************************************/ //Gets blood from mob to a container or other mob, preserving all data in it. -/mob/living/proc/transfer_blood_to(atom/movable/AM, amount, forced, ignore_incompatibility) - if(!blood_volume || !AM.reagents) +/mob/living/proc/transfer_blood_to(atom/movable/receiver, amount, forced, ignore_incompatibility) + if(!blood_volume || !receiver.reagents) return FALSE if(blood_volume < BLOOD_VOLUME_BAD && !forced) return FALSE @@ -245,24 +243,23 @@ var/list/blood_data = get_blood_data(blood_id) - if(iscarbon(AM)) - var/mob/living/carbon/C = AM - if(blood_id == C.get_blood_id())//both mobs have the same blood substance + if(iscarbon(receiver)) + var/mob/living/carbon/carbon_receiver = receiver + if(blood_id == carbon_receiver.get_blood_id()) //both mobs have the same blood substance if(blood_id == /datum/reagent/blood) //normal blood if(blood_data["viruses"]) - for(var/thing in blood_data["viruses"]) - var/datum/disease/D = thing - if((D.spread_flags & DISEASE_SPREAD_SPECIAL) || (D.spread_flags & DISEASE_SPREAD_NON_CONTAGIOUS)) + for(var/datum/disease/blood_disease as anything in blood_data["viruses"]) + if((blood_disease.spread_flags & DISEASE_SPREAD_SPECIAL) || (blood_disease.spread_flags & DISEASE_SPREAD_NON_CONTAGIOUS)) continue - C.ForceContractDisease(D) - if(!(blood_data["blood_type"] in get_safe_blood(C.dna.blood_type)) && !(ignore_incompatibility)) - C.reagents.add_reagent(/datum/reagent/toxin, amount * 0.5) + carbon_receiver.ForceContractDisease(blood_disease) + if(!(blood_data["blood_type"] in get_safe_blood(carbon_receiver.dna.blood_type)) && !(ignore_incompatibility)) + carbon_receiver.reagents.add_reagent(/datum/reagent/toxin, amount * 0.5) return TRUE - C.blood_volume = min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_MAX_LETHAL) + carbon_receiver.blood_volume = min(carbon_receiver.blood_volume + round(amount, 0.1), BLOOD_VOLUME_MAX_LETHAL) return TRUE - AM.reagents.add_reagent(blood_id, amount, blood_data, bodytemperature) + receiver.reagents.add_reagent(blood_id, amount, blood_data, bodytemperature) return TRUE @@ -275,16 +272,15 @@ //set the blood data blood_data["viruses"] = list() - for(var/thing in diseases) - var/datum/disease/D = thing - blood_data["viruses"] += D.Copy() + for(var/datum/disease/disease as anything in diseases) + blood_data["viruses"] += disease.Copy() blood_data["blood_DNA"] = dna.unique_enzymes if(LAZYLEN(disease_resistances)) blood_data["resistances"] = disease_resistances.Copy() var/list/temp_chem = list() - for(var/datum/reagent/R in reagents.reagent_list) - temp_chem[R.type] = R.volume + for(var/datum/reagent/blood_reagent in reagents.reagent_list) + temp_chem[blood_reagent.type] = blood_reagent.volume blood_data["trace_chem"] = list2params(temp_chem) if(mind) blood_data["mind"] = mind @@ -303,9 +299,8 @@ blood_data["features"] = dna.features blood_data["factions"] = faction blood_data["quirks"] = list() - for(var/V in quirks) - var/datum/quirk/T = V - blood_data["quirks"] += T.type + for(var/datum/quirk/quirk as anything in quirks) + blood_data["quirks"] += quirk.type return blood_data //get the id of the substance this mob use as blood. @@ -360,12 +355,12 @@ return donor_blood_data["blood_type"] in get_safe_blood(patient_blood_data["blood_type"]) //to add a splatter of blood or other mob liquid. -/mob/living/proc/add_splatter_floor(turf/T, small_drip) +/mob/living/proc/add_splatter_floor(turf/splatter_turf, small_drip) if(get_blood_id() != /datum/reagent/blood) return - if(!T) - T = get_turf(src) - if(isclosedturf(T) || (isgroundlessturf(T) && !GET_TURF_BELOW(T))) + if(!splatter_turf) + splatter_turf = get_turf(src) + if(isclosedturf(splatter_turf) || (isgroundlessturf(splatter_turf) && !GET_TURF_BELOW(splatter_turf))) return // BUBBER EDIT BEGIN - Blood pooling for(var/obj/effect/decal/cleanable/blood/blood_effect in T) @@ -374,7 +369,7 @@ var/list/temp_blood_DNA if(small_drip) // Only a certain number of drips (or one large splatter) can be on a given turf. - var/obj/effect/decal/cleanable/blood/drip/drop = locate() in T + var/obj/effect/decal/cleanable/blood/drip/drop = locate() in splatter_turf if(drop) if(drop.drips < 5) drop.drips++ @@ -385,39 +380,39 @@ temp_blood_DNA = GET_ATOM_BLOOD_DNA(drop) //we transfer the dna from the drip to the splatter qdel(drop)//the drip is replaced by a bigger splatter else - drop = new(T, get_static_viruses()) + drop = new(splatter_turf, get_static_viruses()) drop.transfer_mob_blood_dna(src) return // Find a blood decal or create a new one. - var/obj/effect/decal/cleanable/blood/B = locate() in T - if(!B) - B = new /obj/effect/decal/cleanable/blood/splatter(T, get_static_viruses()) - if(QDELETED(B)) //Give it up + var/obj/effect/decal/cleanable/blood/blood_spew = locate() in splatter_turf + if(!blood_spew) + blood_spew = new /obj/effect/decal/cleanable/blood/splatter(splatter_turf, get_static_viruses()) + if(QDELETED(blood_spew)) //Give it up return - B.bloodiness = min((B.bloodiness + BLOOD_AMOUNT_PER_DECAL), BLOOD_POOL_MAX) - B.transfer_mob_blood_dna(src) //give blood info to the blood decal. + blood_spew.bloodiness = min((blood_spew.bloodiness + BLOOD_AMOUNT_PER_DECAL), BLOOD_POOL_MAX) + blood_spew.transfer_mob_blood_dna(src) //give blood info to the blood decal. if(temp_blood_DNA) - B.add_blood_DNA(temp_blood_DNA) + blood_spew.add_blood_DNA(temp_blood_DNA) -/mob/living/carbon/human/add_splatter_floor(turf/T, small_drip) +/mob/living/carbon/human/add_splatter_floor(turf/splatter_turf, small_drip) if(!HAS_TRAIT(src, TRAIT_NOBLOOD)) - ..() + . = ..() -/mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip) - if(!T) - T = get_turf(src) - var/obj/effect/decal/cleanable/xenoblood/B = locate() in T.contents - if(!B) - B = new(T) - B.add_blood_DNA(list("UNKNOWN DNA" = "X*")) +/mob/living/carbon/alien/add_splatter_floor(turf/splatter_turf, small_drip) + if(!splatter_turf) + splatter_turf = get_turf(src) + var/obj/effect/decal/cleanable/xenoblood/xeno_blood_splatter = locate() in splatter_turf.contents + if(!xeno_blood_splatter) + xeno_blood_splatter = new(splatter_turf) + xeno_blood_splatter.add_blood_DNA(list("UNKNOWN DNA" = "X*")) -/mob/living/silicon/robot/add_splatter_floor(turf/T, small_drip) - if(!T) - T = get_turf(src) - var/obj/effect/decal/cleanable/oil/B = locate() in T.contents - if(!B) - B = new(T) +/mob/living/silicon/robot/add_splatter_floor(turf/splatter_turf, small_drip) + if(!splatter_turf) + splatter_turf = get_turf(src) + var/obj/effect/decal/cleanable/oil/oil_splatter = locate() in splatter_turf.contents + if(!oil_splatter) + oil_splatter = new(splatter_turf) /mob/living/proc/get_blood_alcohol_content() var/blood_alcohol_content = 0 diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 8365fe9a9f5..2e53d8dad8e 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -276,6 +276,17 @@ if(LAZYLEN(trauma_text)) return "Mental trauma: [english_list(trauma_text, and_text = ", and ")]." +/obj/item/organ/brain/feel_for_damage(self_aware) + if(damage < low_threshold) + return "" + if(self_aware) + if(damage < high_threshold) + return span_warning("Your brain hurts a bit.") + return span_warning("Your brain hurts a lot.") + if(damage < high_threshold) + return span_warning("It feels a bit fuzzy.") + return span_warning("It aches incessantly.") + /obj/item/organ/brain/attack(mob/living/carbon/C, mob/user) if(!istype(C)) return ..() @@ -568,7 +579,9 @@ add_trauma_to_traumas(actual_trauma) if(owner) actual_trauma.owner = owner - SEND_SIGNAL(owner, COMSIG_CARBON_GAIN_TRAUMA, trauma) + if(SEND_SIGNAL(owner, COMSIG_CARBON_GAIN_TRAUMA, trauma, resilience) & COMSIG_CARBON_BLOCK_TRAUMA) + qdel(actual_trauma) + return FALSE actual_trauma.on_gain() log_game("[key_name_and_tag(owner)] has gained the following brain trauma: [trauma.type]") if(resilience) diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index 1c6c35b506b..21cb7d606de 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -181,46 +181,26 @@ icon_state = "stomach-x" w_class = WEIGHT_CLASS_BULKY actions_types = list(/datum/action/cooldown/alien/regurgitate) - var/list/atom/movable/stomach_contents = list() + organ_traits = list(TRAIT_STRONG_STOMACH) -/obj/item/organ/stomach/alien/Destroy() - QDEL_LIST(stomach_contents) - return ..() +/obj/item/organ/stomach/alien/stomach_acid_power(atom/movable/nomnom) + return 75 -/obj/item/organ/stomach/alien/on_life(seconds_per_tick, times_fired) +/obj/item/organ/stomach/alien/consume_thing(atom/movable/thing) . = ..() - if(!owner || SSmobs.times_fired % 3 != 0) - return - // Digest the stuff in our stomach, just a bit - var/static/list/digestable_cache = typecacheof(list(/mob/living, /obj/item/food, /obj/item/reagent_containers)) - for(var/atom/movable/thing as anything in stomach_contents) - if(!digestable_cache[thing.type]) - continue - thing.acid_act(75, 10) - -/obj/item/organ/stomach/alien/proc/consume_thing(atom/movable/thing) - RegisterSignal(thing, COMSIG_MOVABLE_MOVED, PROC_REF(content_moved)) - RegisterSignal(thing, COMSIG_QDELETING, PROC_REF(content_deleted)) if(isliving(thing)) RegisterSignal(thing, COMSIG_LIVING_DEATH, PROC_REF(content_died)) - stomach_contents += thing - thing.forceMove(owner || src) // We assert that if we have no owner, we will not be nullspaced + +/obj/item/organ/stomach/alien/content_moved(atom/movable/source) + if(source.loc == src || source.loc == owner) + return + UnregisterSignal(source, COMSIG_LIVING_DEATH) /obj/item/organ/stomach/alien/proc/content_died(atom/movable/source) SIGNAL_HANDLER + // Can fully digest corpses qdel(source) -/obj/item/organ/stomach/alien/proc/content_deleted(atom/movable/source) - SIGNAL_HANDLER - stomach_contents -= source - -/obj/item/organ/stomach/alien/proc/content_moved(atom/movable/source) - SIGNAL_HANDLER - if(source.loc == src || source.loc == owner) // not in us? out da list then - return - stomach_contents -= source - UnregisterSignal(source, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_DEATH, COMSIG_QDELETING)) - /obj/item/organ/stomach/alien/on_mob_insert(mob/living/carbon/stomach_owner, special, movement_flags) RegisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE, PROC_REF(something_moved)) return ..() @@ -229,15 +209,6 @@ UnregisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE) return ..() -/obj/item/organ/stomach/alien/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) - . = ..() - if(loc == null && owner) - for(var/atom/movable/thing as anything in contents) - thing.forceMove(owner) - else if(loc != null) - for(var/atom/movable/thing as anything in contents) - thing.forceMove(src) - /obj/item/organ/stomach/alien/proc/something_moved(mob/living/source, mob/living/user, direction) SIGNAL_HANDLER relaymove(user, direction) @@ -327,8 +298,17 @@ owner.gib(DROP_ALL_REMAINS) qdel(src) -/obj/item/organ/stomach/alien/proc/eject_stomach(list/turf/targets, spit_range, content_speed, particle_delay, particle_count=4) +/obj/item/organ/stomach/alien/empty_contents(chance = 100, damaging = FALSE, min_amount = 0) + // Under high pressure from all the acid! + return eject_stomach(border_diamond_range_turfs(get_turf(src), 3), 3, 1, 1, 4) + +/obj/item/organ/stomach/alien/on_vomit(mob/living/carbon/vomiter, distance, force) + // If you get a xeno to vomit, you may be able to recover your comrades' corpses + empty_contents(chance = 100) + +/obj/item/organ/stomach/alien/proc/eject_stomach(list/turf/targets, spit_range, content_speed, particle_delay, particle_count = 4) var/atom/spit_as = owner || src + var/ejected = length(stomach_contents) // Throw out the stuff in our stomach for(var/atom/movable/thing as anything in stomach_contents) thing.forceMove(spit_as.drop_location()) @@ -345,3 +325,5 @@ acid_reagents.my_atom = acid acid_reagents.add_reagent(/datum/reagent/toxin/acid, 30) acid.move_at(my_target, particle_delay, spit_range) + + return ejected diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 53d5e50203a..917ab423864 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -436,7 +436,7 @@ /mob/living/carbon/proc/vomit(vomit_flags = VOMIT_CATEGORY_DEFAULT, vomit_type = /obj/effect/decal/cleanable/vomit/toxic, lost_nutrition = 10, distance = 1, purge_ratio = 0.1) var/force = (vomit_flags & MOB_VOMIT_FORCE) if((HAS_TRAIT(src, TRAIT_NOHUNGER) || HAS_TRAIT(src, TRAIT_TOXINLOVER)) && !force) - return TRUE + return FALSE if(!force && HAS_TRAIT(src, TRAIT_STRONG_STOMACH)) lost_nutrition *= 0.5 @@ -1211,7 +1211,7 @@ return if(result) var/chosenart = artnames[result] - var/datum/martial_art/MA = new chosenart + var/datum/martial_art/MA = new chosenart(src) MA.teach(src) log_admin("[key_name(usr)] has taught [MA] to [key_name(src)].") message_admins(span_notice("[key_name_admin(usr)] has taught [MA] to [key_name_admin(src)].")) diff --git a/code/modules/mob/living/carbon/carbon_update_icons.dm b/code/modules/mob/living/carbon/carbon_update_icons.dm index 1c64bfcf7fe..a8134e78eed 100644 --- a/code/modules/mob/living/carbon/carbon_update_icons.dm +++ b/code/modules/mob/living/carbon/carbon_update_icons.dm @@ -286,7 +286,7 @@ 'icons/mob/effects/onfire.dmi', fire_icon, -HIGHEST_LAYER, - appearance_flags = RESET_COLOR, + appearance_flags = RESET_COLOR|KEEP_APART, ) return GLOB.fire_appearances[fire_icon] @@ -459,9 +459,9 @@ /mob/living/carbon/proc/update_hud_back(obj/item/I) return -//Overlays for the worn overlay so you can overlay while you overlay -//eg: ammo counters, primed grenade flashing, etc. -//"icon_file" is used automatically for inhands etc. to make sure it gets the right inhand file +/// Overlays for the worn overlay so you can overlay while you overlay +/// eg: ammo counters, primed grenade flashing, etc. +/// "icon_file" is used automatically for inhands etc. to make sure it gets the right inhand file // SKYRAT EDIT CHANGE BEGIN - CUSTOMIZATION // obj/item/proc/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file) - original /obj/item/proc/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, mutant_styles = NONE) @@ -474,6 +474,13 @@ . += emissive_blocker(standing.icon, standing.icon_state, src, alpha = standing.alpha) SEND_SIGNAL(src, COMSIG_ITEM_GET_WORN_OVERLAYS, ., standing, isinhands, icon_file) +/// worn_overlays to use when you'd want to use KEEP_APART. Don't use KEEP_APART neither there nor here, as it would break floating overlays +/obj/item/proc/separate_worn_overlays(mutable_appearance/standing, mutable_appearance/draw_target, isinhands = FALSE, icon_file) + SHOULD_CALL_PARENT(TRUE) + RETURN_TYPE(/list) + . = list() + SEND_SIGNAL(src, COMSIG_ITEM_GET_SEPARATE_WORN_OVERLAYS, ., standing, draw_target, isinhands, icon_file) + ///Checks to see if any bodyparts need to be redrawn, then does so. update_limb_data = TRUE redraws the limbs to conform to the owner. ///Returns an integer representing the number of limbs that were updated. /mob/living/carbon/proc/update_body_parts(update_limb_data) @@ -614,11 +621,9 @@ GLOBAL_LIST_EMPTY(masked_leg_icons_cache) * * Arguments: * * limb_overlay - The limb image being masked, not necessarily the original limb image as it could be an overlay on top of it - * * image_dir - Direction of the masked images. - * * Returns the list of masked images, or `null` if the limb_overlay didn't exist */ -/obj/item/bodypart/leg/proc/generate_masked_leg(mutable_appearance/limb_overlay, image_dir = NONE) +/obj/item/bodypart/leg/proc/generate_masked_leg(mutable_appearance/limb_overlay) RETURN_TYPE(/list) if(!limb_overlay) return @@ -647,11 +652,9 @@ GLOBAL_LIST_EMPTY(masked_leg_icons_cache) var/mutable_appearance/new_leg_appearance = new(limb_overlay) new_leg_appearance.icon = new_leg_icon new_leg_appearance.layer = -BODYPARTS_LAYER - new_leg_appearance.dir = image_dir //for some reason, things do not work properly otherwise . += new_leg_appearance var/mutable_appearance/new_leg_appearance_lower = new(limb_overlay) new_leg_appearance_lower.icon = new_leg_icon_lower new_leg_appearance_lower.layer = -BODYPARTS_LOW_LAYER - new_leg_appearance_lower.dir = image_dir . += new_leg_appearance_lower return . diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index ccbf735bd85..c83fcacb510 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -84,17 +84,15 @@ //These procs fetch a cumulative total damage from all bodyparts /mob/living/carbon/getBruteLoss() var/amount = 0 - for(var/X in bodyparts) - var/obj/item/bodypart/BP = X - amount += BP.brute_dam - return amount + for(var/obj/item/bodypart/bodypart as anything in bodyparts) + amount += bodypart.brute_dam + return round(amount, DAMAGE_PRECISION) /mob/living/carbon/getFireLoss() var/amount = 0 - for(var/X in bodyparts) - var/obj/item/bodypart/BP = X - amount += BP.burn_dam - return amount + for(var/obj/item/bodypart/bodypart as anything in bodyparts) + amount += bodypart.burn_dam + return round(amount, DAMAGE_PRECISION) /mob/living/carbon/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE, required_bodytype) if(!can_adjust_brute_loss(amount, forced, required_bodytype)) diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index e30b29fdae8..0c4a16a244e 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -2,12 +2,6 @@ #define ADD_NEWLINE_IF_NECESSARY(list) if(length(list) > 0 && list[length(list)]) { list += "" } #define CARBON_EXAMINE_EMBEDDING_MAX_DIST 4 -/mob/living/carbon/human/get_examine_name(mob/user) - if(!HAS_TRAIT(user, TRAIT_PROSOPAGNOSIA)) - return ..() - - return "Unknown" - /mob/living/carbon/human/get_examine_icon(mob/user) return null @@ -62,6 +56,8 @@ disabled += body_part missing -= body_part.body_zone for(var/obj/item/embedded as anything in body_part.embedded_objects) + if(embedded.get_embed().stealthy_embed) + continue var/harmless = embedded.get_embed().is_harmless() var/stuck_wordage = harmless ? "stuck to" : "embedded in" var/embed_line = "\a [embedded]" @@ -84,7 +80,7 @@ damage_text = "limp and lifeless" else damage_text = (body_part.brute_dam >= body_part.burn_dam) ? body_part.heavy_brute_msg : body_part.heavy_burn_msg - . += span_boldwarning("[capitalize(t_his)] [body_part.plaintext_zone] is [damage_text]!") + . += span_boldwarning("[capitalize(t_his)] [body_part.plaintext_zone] looks [damage_text]!") //stores missing limbs var/l_limbs_missing = 0 @@ -641,7 +637,37 @@ if(HAS_TRAIT(src, TRAIT_UNKNOWN) || HAS_TRAIT(src, TRAIT_INVISIBLE_MAN)) return - if((wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))) + var/limbs_text = get_mismatched_limb_text() + if(LAZYLEN(limbs_text)) + . += limbs_text + + var/agetext = get_age_text() + if(agetext) + . += agetext + +/// Reports all body parts which are mismatched with the user's species +/mob/living/carbon/human/proc/get_mismatched_limb_text() + var/list/covered = get_covered_body_zones() + var/list/texts = list() + for(var/obj/item/bodypart/part as anything in bodyparts) + var/part_id = part.limb_id + var/obj/item/bodypart/expected_part = dna?.species?.bodypart_overrides[part.body_zone] + var/expected_id = initial(expected_part?.limb_id) + // only report abnormal bodyparts + if(part_id == expected_id) + continue + // same shape bodyparts are concealed by clothing + // this means you can see ex. digitigrade legs through clothes + // but you can't see ex. cybernetic legs through clothes + if(part.bodyshape == initial(expected_part?.bodyshape) && (part.body_zone in covered)) + continue + texts += span_notice("[p_They()] [p_have()] \a [part].") + + return texts + +/// Reports how old the mob appears to be +/mob/living/carbon/human/proc/get_age_text() + if((wear_mask?.flags_inv & HIDEFACE) || (head?.flags_inv & HIDEFACE)) return var/age_text @@ -658,7 +684,8 @@ age_text = "very old" if(101 to INFINITY) age_text = "withering away" - . += list(span_notice("[p_They()] appear[p_s()] to be [age_text].")) + + return span_notice("[p_They()] appear[p_s()] to be [age_text].") #undef ADD_NEWLINE_IF_NECESSARY #undef CARBON_EXAMINE_EMBEDDING_MAX_DIST diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index f55db37dc65..e085e2a88bd 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -976,17 +976,22 @@ GLOBAL_LIST_EMPTY(features_by_species) var/attack_direction = get_dir(user, target) var/attack_type = attacking_bodypart.attack_type var/unarmed_sharpness = attacking_bodypart.unarmed_sharpness //SKYRAT EDIT ADDITION - If unarmed damage sharpness needs to be taken into account. - if(atk_effect == ATTACK_EFFECT_KICK || grappled) //kicks and punches when grappling bypass armor slightly. + var/kicking = (atk_effect == ATTACK_EFFECT_KICK) + var/final_armor_block = armor_block + if(kicking || grappled) //kicks and punches when grappling bypass armor slightly. if(damage >= 9) target.force_say() log_combat(user, target, grappled ? "grapple punched" : "kicked") - target.apply_damage(damage, attack_type, affecting, armor_block - limb_accuracy, attack_direction = attack_direction) + final_armor_block -= limb_accuracy + target.apply_damage(damage, attack_type, affecting, final_armor_block, attack_direction = attack_direction) else // Normal attacks do not gain the benefit of armor penetration. target.apply_damage(damage, attack_type, affecting, armor_block, attack_direction = attack_direction, sharpness = unarmed_sharpness) //SKYRAT EDIT - Applies sharpness if it does - ORIGINAL: target.apply_damage(damage, attack_type, affecting, armor_block, attack_direction = attack_direction) if(damage >= 9) target.force_say() log_combat(user, target, "punched") + SEND_SIGNAL(target, COMSIG_HUMAN_GOT_PUNCHED, user, damage, attack_type, affecting, final_armor_block, kicking) + // If our target is staggered and has sustained enough damage, we can apply a randomly determined status effect to inflict when we punch them. // The effects are based on the punching effectiveness of our attacker. Some effects are not reachable by the average human, and require augmentation to reach or being a species with a heavy punch effectiveness. // Or they're just drunk enough. @@ -1065,7 +1070,7 @@ GLOBAL_LIST_EMPTY(features_by_species) if(!istype(owner)) //sanity check for drones. return if(owner.mind) - attacker_style = owner.mind.martial_art + attacker_style = GET_ACTIVE_MARTIAL_ART(owner) if((owner != target) && target.check_block(owner, 0, owner.name, attack_type = UNARMED_ATTACK)) log_combat(owner, target, "attempted to touch") target.visible_message(span_warning("[owner] attempts to touch [target]!"), \ diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 77ea483b98d..b28a8928b75 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -186,8 +186,8 @@ /datum/emote/living/carbon/human/blink/run_emote(mob/living/carbon/human/user, params, type_override, intentional) . = ..() - // Set to update_body until update_body_parts_head_only is fixed - user.update_body() // Refreshing instantly makes the user blink + var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES) + eyes.blink() /datum/emote/living/carbon/human/blink_r key = "blink_r" @@ -204,9 +204,10 @@ /datum/emote/living/carbon/human/blink_r/run_emote(mob/user, params, type_override, intentional) . = ..() - // Set to update_body until update_body_parts_head_only is fixed + var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES) for (var/i in 1 to 3) - addtimer(CALLBACK(user, TYPE_PROC_REF(/mob, update_body)), i * 0.3 SECONDS) + addtimer(CALLBACK(eyes, TYPE_PROC_REF(/obj/item/organ/eyes, blink), 0.1 SECONDS, FALSE), i * 0.2 SECONDS) + eyes.animate_eyelids(user) ///Snowflake emotes only for le epic chimp /datum/emote/living/carbon/human/monkey diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b92fbc7ac17..c40b4d1e510 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -445,7 +445,7 @@ /mob/living/carbon/human/try_inject(mob/user, target_zone, injection_flags) . = ..() if(!. && (injection_flags & INJECT_TRY_SHOW_ERROR_MESSAGE) && user) - balloon_alert(user, "no exposed skin on [target_zone || check_zone(user.zone_selected)]!") + balloon_alert(user, "no exposed skin on [parse_zone(target_zone || check_zone(user.zone_selected))]!") /mob/living/carbon/human/get_butt_sprite() var/obj/item/bodypart/chest/chest = get_bodypart(BODY_ZONE_CHEST) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index db24746290a..0f842edb04d 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -566,14 +566,16 @@ combined_msg += span_notice("You check yourself for injuries.") - var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + var/list/missing = GLOB.all_body_zones.Copy() for(var/obj/item/bodypart/body_part as anything in bodyparts) missing -= body_part.body_zone if(body_part.bodypart_flags & BODYPART_PSEUDOPART) //don't show injury text for fake bodyparts; ie chainsaw arms or synthetic armblades continue - body_part.check_for_injuries(src, combined_msg) + var/bodypart_report = body_part.check_for_injuries(src) + if(bodypart_report) + combined_msg += "[span_notice("↳")] [bodypart_report]" //SKYRAT EDIT ADDITION BEGIN - MEDICAL if(body_part.current_gauze) @@ -581,109 +583,33 @@ //SKYRAT EDIT END for(var/t in missing) - combined_msg += span_bolddanger("Your [parse_zone(t)] is missing!") + combined_msg += span_boldannounce("↳ Your [parse_zone(t)] is missing!") - if(is_bleeding()) - var/list/obj/item/bodypart/bleeding_limbs = list() - for(var/obj/item/bodypart/part as anything in bodyparts) - if(part.get_modified_bleed_rate()) - bleeding_limbs += part + var/tox = getToxLoss() + (disgust / 5) + (HAS_TRAIT(src, TRAIT_SELF_AWARE) ? 0 : (rand(-3, 0) * 5)) + switch(tox) + if(10 to 20) + combined_msg += span_danger("You feel sick.") + if(20 to 40) + combined_msg += span_danger("You feel nauseated.") + if(40 to INFINITY) + combined_msg += span_danger("You feel very unwell!") - var/num_bleeds = LAZYLEN(bleeding_limbs) - var/bleed_text = "You are bleeding from your" - switch(num_bleeds) - if(1 to 2) - bleed_text += " [bleeding_limbs[1].name][num_bleeds == 2 ? " and [bleeding_limbs[2].name]" : ""]" - if(3 to INFINITY) - for(var/i in 1 to (num_bleeds - 1)) - var/obj/item/bodypart/BP = bleeding_limbs[i] - bleed_text += " [BP.name]," - bleed_text += " and [bleeding_limbs[num_bleeds].name]" - bleed_text += "!" - combined_msg += bleed_text + var/oxy = getOxyLoss() + (losebreath * 4) + (blood_volume < BLOOD_VOLUME_NORMAL ? ((BLOOD_VOLUME_NORMAL - blood_volume) * 0.1) : 0) + (HAS_TRAIT(src, TRAIT_SELF_AWARE) ? 0 : (rand(-3, 0) * 5)) + switch(oxy) + if(10 to 20) + combined_msg += span_danger("You feel lightheaded.") + if(20 to 40) + combined_msg += losebreath ? span_danger("You're choking!") : span_danger("Your thinking is clouded and distant.") + if(40 to INFINITY) + combined_msg += span_danger("You feel like you're about to pass out!") if(getStaminaLoss()) if(getStaminaLoss() > 30) combined_msg += span_info("You're completely exhausted.") else combined_msg += span_info("You feel fatigued.") - if(HAS_TRAIT(src, TRAIT_SELF_AWARE)) - if(toxloss) - if(toxloss > 10) - combined_msg += span_danger("You feel sick.") - else if(toxloss > 20) - combined_msg += span_danger("You feel nauseated.") - else if(toxloss > 40) - combined_msg += span_danger("You feel very unwell!") - if(oxyloss) - if(oxyloss > 10) - combined_msg += span_danger("You feel lightheaded.") - else if(oxyloss > 20) - combined_msg += span_danger("Your thinking is clouded and distant.") - else if(oxyloss > 30) - combined_msg += span_danger("You're choking!") - if(!HAS_TRAIT(src, TRAIT_NOHUNGER)) - switch(nutrition) - if(NUTRITION_LEVEL_FULL to INFINITY) - combined_msg += span_info("You're completely stuffed!") - if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL) - combined_msg += span_info("You're well fed!") - if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED) - combined_msg += span_info("You're not hungry.") - if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED) - combined_msg += span_info("You could use a bite to eat.") - if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) - combined_msg += span_info("You feel quite hungry.") - if(0 to NUTRITION_LEVEL_STARVING) - combined_msg += span_danger("You're starving!") - - //Compiles then shows the list of damaged organs and broken organs - var/list/broken = list() - var/list/damaged = list() - var/broken_message - var/damaged_message - var/broken_plural - var/damaged_plural - //Sets organs into their proper list - for(var/obj/item/organ/organ as anything in organs) - if(organ.organ_flags & ORGAN_FAILING) - if(broken.len) - broken += ", " - broken += organ.name - else if(organ.damage > organ.low_threshold) - if(damaged.len) - damaged += ", " - damaged += organ.name - //Checks to enforce proper grammar, inserts words as necessary into the list - if(broken.len) - if(broken.len > 1) - broken.Insert(broken.len, "and ") - broken_plural = TRUE - else - var/holder = broken[1] //our one and only element - if(holder[length(holder)] == "s") - broken_plural = TRUE - //Put the items in that list into a string of text - for(var/B in broken) - broken_message += B - combined_msg += span_warning("Your [broken_message] [broken_plural ? "are" : "is"] non-functional!") - if(damaged.len) - if(damaged.len > 1) - damaged.Insert(damaged.len, "and ") - damaged_plural = TRUE - else - var/holder = damaged[1] - if(holder[length(holder)] == "s") - damaged_plural = TRUE - for(var/D in damaged) - damaged_message += D - combined_msg += span_info("Your [damaged_message] [damaged_plural ? "are" : "is"] hurt.") - - if(quirks.len) - combined_msg += span_notice("You have these quirks: [get_quirk_string(FALSE, CAT_QUIRK_ALL)].") - - to_chat(src, boxed_message(combined_msg.Join("\n"))) + to_chat(src, boxed_message(combined_msg.Join("
"))) /mob/living/carbon/human/damage_clothes(damage_amount, damage_type = BRUTE, damage_flag = 0, def_zone) if(damage_type != BRUTE && damage_type != BURN) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index fcc3d890fea..ab449284b1a 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -369,3 +369,17 @@ user.visible_message(span_notice("[user] fixes some of the [message] [src]'s [affecting.name]."), \ span_notice("You fix some of the [message] [src == user ? "your" : "[src]'s"] [affecting.name].")) return TRUE + +/// Sets both mob's and eye organ's eye color values +/// If color_right is not passed, its assumed to be the same as color_left +/mob/living/carbon/human/proc/set_eye_color(color_left, color_right) + if (!color_right) + color_right = color_left + eye_color_left = color_left + eye_color_right = color_right + // Doesn't assign eye color if they already have one from their type + var/obj/item/organ/eyes/eyes = get_organ_by_type(/obj/item/organ/eyes) + if (istype(eyes) && !initial(eyes.eye_color_left) && !initial(eyes.eye_color_right)) + eyes.eye_color_left = color_left + eyes.eye_color_right = color_right + eyes.refresh(src, FALSE) diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index 54c07bc3049..4ff2c7678d9 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -246,7 +246,7 @@ There are several things that need to be remembered: if (glove_offset && (!feature_y_offset || glove_offset["y"] > feature_y_offset)) feature_y_offset = glove_offset["y"] - gloves_overlay.pixel_y += feature_y_offset + gloves_overlay.pixel_z += feature_y_offset // We dont have any >2 hands human species (and likely wont ever), so theres no point in splitting this because: // It will only run if the left hand OR the right hand is missing, and it wont run if both are missing because you cant wear gloves with no arms @@ -446,7 +446,7 @@ There are several things that need to be remembered: if (foot_offset && foot_offset["y"] > feature_y_offset) feature_y_offset = foot_offset["y"] - shoes_overlay.pixel_y += feature_y_offset + shoes_overlay.pixel_z += feature_y_offset overlays_standing[SHOES_LAYER] = shoes_overlay apply_overlay(SHOES_LAYER) @@ -1132,7 +1132,7 @@ mutant_styles: The mutant style - taur bodytype, STYLE_TESHARI, etc. // SKYRAT E var/mob/living/carbon/wearer = loc var/is_digi = istype(wearer) && (wearer.bodyshape & BODYSHAPE_DIGITIGRADE) /*&& !wearer.is_digitigrade_squished()*/ // BUBBER EDIT TODO - Leg squishing skyrat killed - var/mutable_appearance/standing // this is the actual resulting MA + var/mutable_appearance/draw_target // MA of the item itself, not the final result var/icon/building_icon // used to construct an icon across multiple procs before converting it to MA if(female_uniform) building_icon = wear_female_version( @@ -1149,10 +1149,9 @@ mutant_styles: The mutant style - taur bodytype, STYLE_TESHARI, etc. // SKYRAT E greyscale_colors = greyscale_colors, ) if(building_icon) - standing = mutable_appearance(building_icon, layer = -layer2use) - - // no special handling done, default it - standing ||= mutable_appearance(file2use, t_state, layer = -layer2use) + draw_target = mutable_appearance(building_icon) + else + draw_target = mutable_appearance(file2use, t_state) // SKYRAT EDIT ADDITION START - Taur-friendly uniforms and suits if (mutant_styles & STYLE_TAUR_ALL) @@ -1164,19 +1163,27 @@ mutant_styles: The mutant style - taur bodytype, STYLE_TESHARI, etc. // SKYRAT E //Get the overlays for this item when it's being worn //eg: ammo counters, primed grenade flashes, etc. - var/list/worn_overlays = worn_overlays(standing, isinhands, file2use, mutant_styles) // SKYRAT EDIT CHANGE - ORIGINAL: var/list/worn_overlays = worn_overlays(standing, isinhands, file2use) + var/list/worn_overlays = worn_overlays(draw_target, isinhands, file2use, mutant_styles) // BUBBER EDIT CHANGE - adds mutant_styles if(length(worn_overlays)) - standing.overlays += worn_overlays + draw_target.overlays += worn_overlays + draw_target = color_atom_overlay(draw_target) + + // Okay so this has to be done because some overlays, like blood, want to be KEEP_APART + // but KEEP_APART breaks float layering, so what we need to do is make fake KEEP_APART for us to use + var/mutable_appearance/standing = mutable_appearance(layer = -layer2use, appearance_flags = KEEP_TOGETHER) + standing.overlays += draw_target + var/list/separate_overlays = separate_worn_overlays(standing, draw_target, isinhands, file2use) + if(length(separate_overlays)) + standing.overlays += separate_overlays standing = center_image(standing, isinhands ? inhand_x_dimension : worn_x_dimension, isinhands ? inhand_y_dimension : worn_y_dimension) //Worn offsets var/list/offsets = get_worn_offsets(isinhands) - standing.pixel_x += offsets[1] - standing.pixel_y += offsets[2] + standing.pixel_w += offsets[1] + standing.pixel_z += offsets[2] standing.alpha = alpha - standing = color_atom_overlay(standing) return standing @@ -1316,7 +1323,7 @@ mutant_styles: The mutant style - taur bodytype, STYLE_TESHARI, etc. // SKYRAT E else return - appearance.pixel_y += final_offset + appearance.pixel_z += final_offset return appearance /** diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index e27dd8d9275..da4c245a57a 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -33,6 +33,7 @@ BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/mushroom, BODY_ZONE_CHEST = /obj/item/bodypart/chest/mushroom, ) + /// Martial art for the mushpeople var/datum/martial_art/mushpunch/mush /datum/species/mush/check_roundstart_eligible() @@ -40,14 +41,12 @@ /datum/species/mush/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load, regenerate_icons) . = ..() - if(ishuman(C)) - mush = new() - mush.teach(C) - mush.allow_temp_override = FALSE + mush = new(src) + mush.locked_to_use = TRUE + mush.teach(C) /datum/species/mush/on_species_loss(mob/living/carbon/C) . = ..() - mush.fully_remove(C) QDEL_NULL(mush) /datum/species/mush/handle_chemical(datum/reagent/chem, mob/living/carbon/human/affected, seconds_per_tick, times_fired) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 4ecf026d675..220c2446163 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -2871,8 +2871,20 @@ GLOBAL_LIST_EMPTY(fire_appearances) return mob_mood.clear_mood_event(category) -/mob/living/played_game() - . = ..() +/// This should be called by games when the gamer reaches a winning state, just sends a signal +/mob/living/proc/won_game() + SHOULD_CALL_PARENT(TRUE) + SEND_SIGNAL(src, COMSIG_MOB_WON_VIDEOGAME) + +/// This should be called by games when the gamer reaches a losing state, just sends a signal +/mob/living/proc/lost_game() + SHOULD_CALL_PARENT(TRUE) + SEND_SIGNAL(src, COMSIG_MOB_LOST_VIDEOGAME) + +/// This should be called by games whenever the gamer interacts with the device, sends a signal and grants us a moodlet +/mob/living/proc/played_game() + SHOULD_CALL_PARENT(TRUE) + SEND_SIGNAL(src, COMSIG_MOB_PLAYED_VIDEOGAME) add_mood_event("gaming", /datum/mood_event/gaming) /** @@ -3058,7 +3070,7 @@ GLOBAL_LIST_EMPTY(fire_appearances) /** * Totals the physical cash on the mob and returns the total. */ -/mob/living/verb/tally_physical_credits() +/mob/living/proc/tally_physical_credits() //Here is all the possible non-ID payment methods. var/list/counted_money = list() var/physical_cash_total = 0 diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 50724d3ef82..18d81d176b5 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -666,8 +666,8 @@ /mob/living/proc/do_slap_animation(atom/slapped) do_attack_animation(slapped, no_effect=TRUE) var/mutable_appearance/glove_appearance = mutable_appearance('icons/effects/effects.dmi', "slapglove") - glove_appearance.pixel_y = 10 // should line up with head - glove_appearance.pixel_x = 10 + glove_appearance.pixel_z = 10 // should line up with head + glove_appearance.pixel_w = 10 var/atom/movable/flick_visual/glove = slapped.flick_overlay_view(glove_appearance, 1 SECONDS) // And animate the attack! @@ -685,7 +685,7 @@ if(. & COMPONENT_NO_EXPOSE_REAGENTS) return - if(methods & (INGEST | INHALE)) + if(show_message && (methods & (INGEST | INHALE))) taste_list(reagents) var/touch_protection = (methods & (VAPOR | TOUCH)) ? getarmor(null, BIO) * 0.01 : 0 diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 25cf6e26dbe..aefeb6ec27f 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -234,3 +234,8 @@ /// Modify this via add_offsets and remove_offsets, /// NOT directly (and definitely avoid modifying offsets directly) VAR_PRIVATE/list/offsets + + /// Lazylist of martial arts this mob knows + /// First element is the current martial art - any other elements are "saved" for if they unlearn the first one + /// Reference handling is done by the martial arts themselves + var/list/datum/martial_art/martial_arts diff --git a/code/modules/mob/living/living_fov.dm b/code/modules/mob/living/living_fov.dm index 0f400017515..1df8e610155 100644 --- a/code/modules/mob/living/living_fov.dm +++ b/code/modules/mob/living/living_fov.dm @@ -2,59 +2,62 @@ /mob/living/proc/in_fov(atom/observed_atom, ignore_self = FALSE) if(ignore_self && observed_atom == src) return TRUE + if(is_blind()) return FALSE - . = FALSE + var/turf/my_turf = get_turf(src) //Because being inside contents of something will cause our x,y to not be updated // If turf doesn't exist, then we wouldn't get a fov check called by `play_fov_effect` or presumably other new stuff that might check this. // ^ If that case has changed and you need that check, add it. var/rel_x = observed_atom.x - my_turf.x var/rel_y = observed_atom.y - my_turf.y - if(fov_view) - if(rel_x >= -1 && rel_x <= 1 && rel_y >= -1 && rel_y <= 1) //Cheap way to check inside that 3x3 box around you - return TRUE //Also checks if both are 0 to stop division by zero - - // Get the vector length so we can create a good directional vector - var/vector_len = sqrt(abs(rel_x) ** 2 + abs(rel_y) ** 2) - - /// Getting a direction vector - var/dir_x - var/dir_y - switch(dir) - if(SOUTH) - dir_x = 0 - dir_y = -vector_len - if(NORTH) - dir_x = 0 - dir_y = vector_len - if(EAST) - dir_x = vector_len - dir_y = 0 - if(WEST) - dir_x = -vector_len - dir_y = 0 - - ///Calculate angle - var/angle = arccos((dir_x * rel_x + dir_y * rel_y) / (sqrt(dir_x**2 + dir_y**2) * sqrt(rel_x**2 + rel_y**2))) - - /// Calculate vision angle and compare - var/vision_angle = (360 - fov_view) / 2 - if(angle < vision_angle) - . = TRUE - else - . = TRUE // Handling nearsightnedness - if(. && is_nearsighted_currently()) - if((rel_x >= NEARSIGHTNESS_FOV_BLINDNESS || rel_x <= -NEARSIGHTNESS_FOV_BLINDNESS) || (rel_y >= NEARSIGHTNESS_FOV_BLINDNESS || rel_y <= -NEARSIGHTNESS_FOV_BLINDNESS)) + if(is_nearsighted_currently()) + if(abs(rel_x) >= NEARSIGHTNESS_FOV_BLINDNESS || abs(rel_y) >= NEARSIGHTNESS_FOV_BLINDNESS) return FALSE + if(!fov_view) + return TRUE + + if(rel_x >= -1 && rel_x <= 1 && rel_y >= -1 && rel_y <= 1) //Cheap way to check inside that 3x3 box around you + return TRUE //Also checks if both are 0 to stop division by zero + + // Get the vector length so we can create a good directional vector + var/vector_len = sqrt(abs(rel_x) ** 2 + abs(rel_y) ** 2) + + /// Getting a direction vector + var/dir_x + var/dir_y + switch(dir) + if(SOUTH) + dir_x = 0 + dir_y = -vector_len + if(NORTH) + dir_x = 0 + dir_y = vector_len + if(EAST) + dir_x = vector_len + dir_y = 0 + if(WEST) + dir_x = -vector_len + dir_y = 0 + + ///Calculate angle + var/angle = arccos((dir_x * rel_x + dir_y * rel_y) / (sqrt(dir_x**2 + dir_y**2) * sqrt(rel_x**2 + rel_y**2))) + + /// Calculate vision angle and compare + var/vision_angle = (360 - abs(fov_view)) / 2 + if(fov_view > 0) + return angle < vision_angle + return angle > vision_angle + /// Updates the applied FOV value and applies the handler to client if able /mob/living/proc/update_fov() var/highest_fov for(var/trait_type in fov_traits) var/fov_type = fov_traits[trait_type] - if(fov_type > highest_fov) + if(!highest_fov || fov_type > highest_fov) // Forward-facing FOV always takes priority over reversed FOV highest_fov = fov_type fov_view = highest_fov if(HAS_TRAIT(src, TRAIT_EXPANDED_FOV)) @@ -76,16 +79,14 @@ /// Adds a trait which limits a user's FOV /mob/living/proc/add_fov_trait(source, type) - LAZYINITLIST(fov_traits) - fov_traits[source] = type + LAZYSET(fov_traits, source, type) update_fov() /// Removes a trait which limits a user's FOV /mob/living/proc/remove_fov_trait(source, type) if(!fov_traits) //Clothing equip/unequip is bad code and invokes this several times return - fov_traits -= source - UNSETEMPTY(fov_traits) + LAZYREMOVE(fov_traits, source) update_fov() //did you know you can subtype /image and /mutable_appearance? // Stop telling them that they might actually do it diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index aace2e55923..9773dd3c915 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -298,7 +298,11 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( understood = FALSE var/speaker_is_signing = HAS_TRAIT(speaker, TRAIT_SIGN_LANG) - + var/use_runechat = client?.prefs.read_preference(/datum/preference/toggle/enable_runechat) + if (stat == UNCONSCIOUS || stat == HARD_CRIT) + use_runechat = FALSE + else if (!ismob(speaker) && !client?.prefs.read_preference(/datum/preference/toggle/enable_runechat_non_mobs)) + use_runechat = FALSE // if someone is whispering we make an extra type of message that is obfuscated for people out of range // Less than or equal to 0 means normal hearing. More than 0 and less than or equal to EAVESDROP_EXTRA_RANGE means @@ -317,9 +321,12 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( if(speaker_is_signing) deaf_message = "[span_name("[speaker]")] [speaker.get_default_say_verb()] something, but the motions are too subtle to make out from afar." else if(can_hear()) // If we can't hear we want to continue to the default deaf message - var/mob/living/living_speaker = speaker - if(istype(living_speaker) && living_speaker.is_mouth_covered()) // Can't see them speak if their mouth is covered - return FALSE + if(isliving(speaker)) + var/mob/living/living_speaker = speaker + var/mouth_hidden = living_speaker.is_mouth_covered() || HAS_TRAIT(living_speaker, TRAIT_FACE_COVERED) + if(!HAS_TRAIT(src, TRAIT_EMPATH) && mouth_hidden) // Can't see them speak if their mouth is covered or hidden, unless we're an empath + return FALSE + deaf_message = "[span_name("[speaker]")] [speaker.verb_whisper] something, but you are too far away to hear [speaker.p_them()]." if(deaf_message) @@ -344,7 +351,7 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( deaf_type = MSG_AUDIBLE // Create map text prior to modifying message for goonchat, sign lang edition - if (client?.prefs.read_preference(/datum/preference/toggle/enable_runechat) && !(stat == UNCONSCIOUS || stat == HARD_CRIT || is_blind()) && (client.prefs.read_preference(/datum/preference/toggle/enable_runechat_non_mobs) || ismob(speaker))) + if (use_runechat && !is_blind()) if (message_mods[MODE_CUSTOM_SAY_ERASE_INPUT]) create_chat_message(speaker, null, message_mods[MODE_CUSTOM_SAY_EMOTE], spans, EMOTE_MESSAGE) else @@ -367,7 +374,7 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( deaf_type = MSG_AUDIBLE // Since you should be able to hear yourself without looking // Create map text prior to modifying message for goonchat - if (client?.prefs.read_preference(/datum/preference/toggle/enable_runechat) && !(stat == UNCONSCIOUS || stat == HARD_CRIT) && (ismob(speaker) || client.prefs.read_preference(/datum/preference/toggle/enable_runechat_non_mobs)) && can_hear()) + if (use_runechat && can_hear()) if (message_mods[MODE_CUSTOM_SAY_ERASE_INPUT]) create_chat_message(speaker, null, message_mods[MODE_CUSTOM_SAY_EMOTE], spans, EMOTE_MESSAGE) else diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index e2938cad871..349a3f71535 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -84,7 +84,7 @@ RegisterSignal(ai_tracking_tool, COMSIG_TRACKABLE_TRACKING_TARGET, PROC_REF(on_track_target)) RegisterSignal(ai_tracking_tool, COMSIG_TRACKABLE_GLIDE_CHANGED, PROC_REF(tracked_glidesize_changed)) - add_traits(list(TRAIT_PULL_BLOCKED, TRAIT_AI_ACCESS, TRAIT_HANDS_BLOCKED), INNATE_TRAIT) + add_traits(list(TRAIT_PULL_BLOCKED, TRAIT_AI_ACCESS, TRAIT_HANDS_BLOCKED, TRAIT_CAN_GET_AI_TRACKING_MESSAGE), INNATE_TRAIT) alert_control = new(src, list(ALARM_ATMOS, ALARM_FIRE, ALARM_POWER, ALARM_CAMERA, ALARM_BURGLAR, ALARM_MOTION), list(z), camera_view = TRUE) RegisterSignal(alert_control.listener, COMSIG_ALARM_LISTENER_TRIGGERED, PROC_REF(alarm_triggered)) @@ -428,9 +428,6 @@ Holopad.attack_ai_secondary(src) //may as well recycle else to_chat(src, span_notice("Unable to project to the holopad.")) - if(href_list["track"]) - ai_tracking_tool.track_name(src, href_list["track"]) - return if (href_list["ai_take_control"]) //Mech domination var/obj/vehicle/sealed/mecha/M = locate(href_list["ai_take_control"]) in GLOB.mechas_list if (!M) diff --git a/code/modules/mob/living/silicon/ai/ai_portrait_picker.dm b/code/modules/mob/living/silicon/ai/ai_portrait_picker.dm index 5415b7b1931..6fde565d50f 100644 --- a/code/modules/mob/living/silicon/ai/ai_portrait_picker.dm +++ b/code/modules/mob/living/silicon/ai/ai_portrait_picker.dm @@ -79,11 +79,11 @@ var/mutable_appearance/MA = mutable_appearance(portrait_icon) if(w == 23 || h == 23) to_chat(ai, span_notice("Small note: 23x23 Portraits are accepted, but they do not fit perfectly inside the display frame.")) - MA.pixel_x = 5 + MA.pixel_w = 5 MA.pixel_z = 5 else if(w == 24 || h == 24) to_chat(ai, span_notice("Portrait Accepted. Enjoy!")) - MA.pixel_x = 4 + MA.pixel_w = 4 MA.pixel_z = 4 else to_chat(ai, span_warning("Sorry, only 23x23 and 24x24 Portraits are accepted.")) diff --git a/code/modules/mob/living/silicon/ai/ai_say.dm b/code/modules/mob/living/silicon/ai/ai_say.dm index 4b697fc1b66..b5dbcd4215f 100644 --- a/code/modules/mob/living/silicon/ai/ai_say.dm +++ b/code/modules/mob/living/silicon/ai/ai_say.dm @@ -1,12 +1,17 @@ -/mob/living/silicon/ai/compose_track_href(atom/movable/speaker, namepart) +//the following 2 procs are staying here because its for AI and its shells (also AI controlled) +/mob/living/silicon/compose_track_href(atom/movable/speaker, namepart) + if(!HAS_TRAIT(src, TRAIT_CAN_GET_AI_TRACKING_MESSAGE)) + return "" var/mob/M = speaker.GetSource() if(M) return "" return "" -/mob/living/silicon/ai/compose_job(atom/movable/speaker, message_langs, raw_message, radio_freq) +/mob/living/silicon/compose_job(atom/movable/speaker, message_langs, raw_message, radio_freq) //Also includes the for AI hrefs, for convenience. - return "[radio_freq ? " (" + speaker.get_job() + ")" : ""]" + "[speaker.GetSource() ? "" : ""]" + if(!HAS_TRAIT(src, TRAIT_CAN_GET_AI_TRACKING_MESSAGE)) + return "" + return "[radio_freq ? " (" + speaker.GetJob() + ")" : ""]" + "[speaker.GetSource() ? "" : ""]" /mob/living/silicon/ai/try_speak(message, ignore_spam = FALSE, forced = null, filterproof = FALSE) // AIs cannot speak if silent AI is on. diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm index 049243d90f1..a920780af4e 100644 --- a/code/modules/mob/living/silicon/ai/multicam.dm +++ b/code/modules/mob/living/silicon/ai/multicam.dm @@ -91,7 +91,6 @@ /turf/open/ai_visible/Initialize(mapload) . = ..() RegisterSignal(SSmapping, COMSIG_PLANE_OFFSET_INCREASE, PROC_REF(multiz_offset_increase)) - multiz_offset_increase(SSmapping) /turf/open/ai_visible/proc/multiz_offset_increase(datum/source) SIGNAL_HANDLER diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index c2287b0af06..fb337b8df09 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -62,6 +62,7 @@ var/obj/item/borg/upgrade/ai/board = new(src) make_shell(board) add_to_upgrades(board) + ADD_TRAIT(src, TRAIT_CAN_GET_AI_TRACKING_MESSAGE, INNATE_TRAIT) else //MMI stuff. Held togheter by magic. ~Miauw if(!mmi?.brainmob) @@ -1067,7 +1068,7 @@ 'icons/mob/effects/onfire.dmi', fire_icon, -HIGHEST_LAYER, - appearance_flags = RESET_COLOR, + appearance_flags = RESET_COLOR|KEEP_APART, ) GLOB.fire_appearances[fire_icon] = new_fire_overlay diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 3281d38b08f..5b8af577a20 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -245,6 +245,21 @@ return to_chat(usr, href_list["printlawtext"]) + if(href_list["track"]) + if(!can_track(href_list["track"])) + to_chat(src, span_info("This person is not currently on cameras.")) + return + var/mob/living/silicon/ai/AI + var/mob/living/silicon/robot/shell/shell + if(!isAI(src)) + shell = src + AI = shell.mainframe + AI.deployed_shell.undeploy() + else + AI = src + + AI.ai_tracking_tool.track_name(src, href_list["track"]) + return /mob/living/silicon/proc/statelaws(force = 0) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 4798752969a..582fff71599 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -1156,11 +1156,7 @@ Pass a positive integer as an argument to override a bot's default speed. var/list/path_images = active_hud_list[DIAG_PATH_HUD] LAZYCLEARLIST(path_images) if(length(newpath)) - var/mutable_appearance/path_image = new /mutable_appearance() - path_image.icon = path_image_icon - path_image.icon_state = path_image_icon_state - path_image.layer = BOT_PATH_LAYER - path_image.appearance_flags = RESET_COLOR|RESET_TRANSFORM + var/mutable_appearance/path_image = mutable_appearance(path_image_icon, path_image_icon_state, BOT_PATH_LAYER, appearance_flags = RESET_COLOR|RESET_TRANSFORM|KEEP_APART) path_image.color = path_image_color for(var/i in 1 to newpath.len) var/turf/T = newpath[i] diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index cfea3a8e562..b42f19389ff 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -192,9 +192,9 @@ //Repairbot assemblies /obj/item/bot_assembly/repairbot - desc = "It's a toolbox with tiles sticking out the top." name = "Repairbot Chasis" - icon_state = "repairbot_base" + desc = "It's a toolbox with tiles sticking out the top." + icon_state = "repairbot_box" throwforce = 10 created_name = "Repairbot" ///the toolbox our repairbot is made of @@ -221,9 +221,9 @@ /obj/item/bot_assembly/repairbot/update_overlays() . = ..() if(build_step >= ASSEMBLY_FIRST_STEP) - . += mutable_appearance(icon, "repairbot_base_sensor", appearance_flags = RESET_COLOR) + . += mutable_appearance(icon, "repairbot_base_sensor", appearance_flags = RESET_COLOR|KEEP_APART) if(build_step >= ASSEMBLY_SECOND_STEP) - . += mutable_appearance(icon, "repairbot_base_arms", appearance_flags = RESET_COLOR) + . += mutable_appearance(icon, "repairbot_base_arms", appearance_flags = RESET_COLOR|KEEP_APART) /obj/item/bot_assembly/repairbot/attackby(obj/item/item, mob/user, params) ..() diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index e1117e3200f..26db36e7ce7 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -86,7 +86,7 @@ suffix = null if(name == "\improper MULEbot") name = "\improper MULEbot [id]" - set_home(loc) + set_home(get_turf(src)) /mob/living/simple_animal/bot/mulebot/Exited(atom/movable/gone, direction) . = ..() @@ -226,7 +226,7 @@ if(!load || ismob(load)) //mob offsets and such are handled by the riding component / buckling return var/mutable_appearance/load_overlay = mutable_appearance(load.icon, load.icon_state, layer + 0.01) - load_overlay.pixel_y = initial(load.pixel_y) + 11 + load_overlay.pixel_z = initial(load.pixel_z) + 11 . += load_overlay /mob/living/simple_animal/bot/mulebot/ex_act(severity) @@ -853,7 +853,7 @@ if(!isobserver(load)) return var/mutable_appearance/ghost_overlay = mutable_appearance('icons/mob/simple/mob.dmi', "ghost", layer + 0.01) //use a generic ghost icon, otherwise you can metagame who's dead if they have a custom ghost set - ghost_overlay.pixel_y = 12 + ghost_overlay.pixel_z = 12 . += ghost_overlay /mob/living/simple_animal/bot/mulebot/paranormal/get_load_name() //Don't reveal the name of ghosts so we can't metagame who died and all that. diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index d3c9556a9d1..1af4234db35 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -37,7 +37,7 @@ Difficulty: Medium rapid_melee = 5 // starts fast because the saw's closed. gets reduced appropriately when extended, see their transform_weapon ability pixel_x = -16 base_pixel_x = -16 - crusher_loot = list(/obj/item/melee/cleaving_saw, /obj/item/gun/energy/recharge/kinetic_accelerator, /obj/item/crusher_trophy/miner_eye) + crusher_loot = list(/obj/item/melee/cleaving_saw, /obj/item/gun/energy/recharge/kinetic_accelerator, /obj/item/crusher_trophy/miner_eye, /obj/item/knife/hunting/wildhunter) loot = list(/obj/item/melee/cleaving_saw, /obj/item/gun/energy/recharge/kinetic_accelerator) wander = FALSE del_on_death = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index c601148a418..690bda8a13a 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -161,7 +161,7 @@ if(isgolem(victim) && victim.has_status_effect(/datum/status_effect/golem/gold)) return TRUE - return istype(victim.mind?.martial_art, /datum/martial_art/the_sleeping_carp) + return istype(GET_ACTIVE_MARTIAL_ART(victim), /datum/martial_art/the_sleeping_carp) /obj/effect/temp_visual/at_shield name = "anti-toolbox field" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index ba7e8e9b60d..a33d685dd6c 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -361,9 +361,11 @@ . += "Combat Mode: [combat_mode ? "On" : "Off"]" /mob/living/simple_animal/proc/drop_loot() - if(loot.len) - for(var/i in loot) - new i(loc) + if (!length(loot)) + return + for(var/i in loot) + new i(drop_location()) + loot.Cut() /mob/living/simple_animal/death(gibbed) drop_loot() diff --git a/code/modules/mob/mob_arcade.dm b/code/modules/mob/mob_arcade.dm deleted file mode 100644 index 0026ecaae0c..00000000000 --- a/code/modules/mob/mob_arcade.dm +++ /dev/null @@ -1,23 +0,0 @@ -/** - * This proc sends the COMSIG_MOB_WON_VIDEOGAME signal - * - * This should be called by games when the gamer reaches a winning state - */ -/mob/proc/won_game() - SEND_SIGNAL(src, COMSIG_MOB_WON_VIDEOGAME) - -/** - * This proc sends the COMSIG_MOB_LOST_VIDEOGAME signal - * - * This should be called by games when the gamer reaches a losing state - */ -/mob/proc/lost_game() - SEND_SIGNAL(src, COMSIG_MOB_LOST_VIDEOGAME) - -/** - * This proc sends the COMSIG_MOB_PLAYED_VIDEOGAME signal - * - * This should be called by games whenever the gamer interacts with the device - */ -/mob/proc/played_game() - SEND_SIGNAL(src, COMSIG_MOB_PLAYED_VIDEOGAME) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index b33c4d36ee6..5c98c066f37 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -187,7 +187,10 @@ /// On [/mob] so clientless mobs will throw alerts properly. var/list/alerts = list() var/list/screens = list() + /// Assoc list of client_colour datum -> source it came from var/list/client_colours = list() + /// List of filter names used in the past client color update for cleanup + var/list/color_filter_store = list() var/hud_type = /datum/hud var/datum/focus //What receives our keyboard inputs. src by default diff --git a/code/modules/mob_spawn/corpses/mining_corpses.dm b/code/modules/mob_spawn/corpses/mining_corpses.dm index e9a4a9b0504..2fb841fab84 100644 --- a/code/modules/mob_spawn/corpses/mining_corpses.dm +++ b/code/modules/mob_spawn/corpses/mining_corpses.dm @@ -352,7 +352,7 @@ glasses = /obj/item/clothing/glasses/blindfold mask = /obj/item/clothing/mask/breath shoes = /obj/item/clothing/shoes/sneakers/black - r_pocket = /obj/item/reagent_containers/pill/shadowtoxin + r_pocket = /obj/item/reagent_containers/applicator/pill/shadowtoxin accessory = /obj/item/clothing/accessory/medal/plasma/nobel_science diff --git a/code/modules/mob_spawn/ghost_roles/space_roles.dm b/code/modules/mob_spawn/ghost_roles/space_roles.dm index 7e62fe529ee..1c41188eab9 100644 --- a/code/modules/mob_spawn/ghost_roles/space_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/space_roles.dm @@ -197,7 +197,7 @@ mob_species = /datum/species/human you_are_text = "You are an actor/actress working for Sophronia Broadcasting Inc., stationed onboard the local TV studio." flavour_text = "You last remember corporate told everyone to go to cryosleep for whatever reason, where did everyone else go?" - important_text = "Work as a team with your fellow actors and the director to make entertainment for the massses." + important_text = "Work as a team with your fellow actors and the director to make entertainment for the masses." outfit = /datum/outfit/actor spawner_job_path = /datum/job/ghost_role diff --git a/code/modules/mod/mod_clothes.dm b/code/modules/mod/mod_clothes.dm index 8c4e5481b14..28428a8fe13 100644 --- a/code/modules/mod/mod_clothes.dm +++ b/code/modules/mod/mod_clothes.dm @@ -9,11 +9,11 @@ body_parts_covered = HEAD heat_protection = HEAD cold_protection = HEAD - item_flags = IMMUTABLE_SLOW // Even without a hat stabilizer, hats can be worn - however, they'll fall off very easily /obj/item/clothing/head/mod/Initialize(mapload) . = ..() + ADD_TRAIT(src, TRAIT_NO_SPEED_POTION, INNATE_TRAIT) AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE) /obj/item/clothing/suit/mod @@ -33,9 +33,12 @@ body_parts_covered = CHEST|GROIN heat_protection = CHEST|GROIN cold_protection = CHEST|GROIN - item_flags = IMMUTABLE_SLOW drop_sound = null +/obj/item/clothing/suit/mod/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NO_SPEED_POTION, INNATE_TRAIT) + /obj/item/clothing/gloves/mod name = "MOD gauntlets" desc = "A pair of gauntlets for a MODsuit." @@ -47,11 +50,14 @@ body_parts_covered = HANDS|ARMS heat_protection = HANDS|ARMS cold_protection = HANDS|ARMS - item_flags = IMMUTABLE_SLOW equip_sound = null pickup_sound = null drop_sound = null +/obj/item/clothing/gloves/mod/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NO_SPEED_POTION, INNATE_TRAIT) + /obj/item/clothing/shoes/mod name = "MOD boots" desc = "A pair of boots for a MODsuit." @@ -63,6 +69,10 @@ body_parts_covered = FEET|LEGS heat_protection = FEET|LEGS cold_protection = FEET|LEGS - item_flags = IGNORE_DIGITIGRADE | IMMUTABLE_SLOW + item_flags = IGNORE_DIGITIGRADE fastening_type = SHOES_SLIPON equip_sound = null + +/obj/item/clothing/shoes/mod/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NO_SPEED_POTION, INNATE_TRAIT) diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index 57ea7712703..8fd3e2b7190 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -694,9 +694,19 @@ wearer.update_spacesuit_hud_icon(state_to_use || "0") /obj/item/mod/control/proc/update_speed() - for(var/obj/item/part as anything in get_parts(all = TRUE)) - part.slowdown = slowdown_deployed / length(mod_parts) - var/datum/mod_part/part_datum = get_part_datum(part) + var/total_slowdown = 0 + var/prevent_slowdown = HAS_TRAIT(src, TRAIT_SPEED_POTIONED) + if (!prevent_slowdown) + total_slowdown += slowdown_deployed + + var/list/module_slowdowns = list() + SEND_SIGNAL(src, COMSIG_MOD_UPDATE_SPEED, module_slowdowns, prevent_slowdown) + for (var/module_slow in module_slowdowns) + total_slowdown += module_slow + + for(var/datum/mod_part/part_datum as anything in get_part_datums(all = TRUE)) + var/obj/item/part = part_datum.part_item + part.slowdown = total_slowdown / length(mod_parts) if (!part_datum.sealed) part.slowdown = max(part.slowdown, 0) wearer?.update_equipment_speed_mods() @@ -756,15 +766,17 @@ /obj/item/mod/control/proc/on_potion(atom/movable/source, obj/item/slimepotion/speed/speed_potion, mob/living/user) SIGNAL_HANDLER - if(slowdown_deployed <= 0) + if(HAS_TRAIT(src, TRAIT_SPEED_POTIONED)) to_chat(user, span_warning("[src] has already been coated with red, that's as fast as it'll go!")) return SPEED_POTION_STOP + if(active) to_chat(user, span_warning("It's too dangerous to smear [speed_potion] on [src] while it's active!")) return SPEED_POTION_STOP + to_chat(user, span_notice("You slather the red gunk over [src], making it faster.")) set_mod_color(color_transition_filter(COLOR_RED)) - slowdown_deployed = 0 + ADD_TRAIT(src, TRAIT_SPEED_POTIONED, SLIME_POTION_TRAIT) update_speed() qdel(speed_potion) return SPEED_POTION_STOP diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm index de46319c6d5..d3115648477 100644 --- a/code/modules/mod/mod_theme.dm +++ b/code/modules/mod/mod_theme.dm @@ -121,6 +121,7 @@ part_datum.part_item = mod_part mod.mod_parts["[mod_part.slot_flags]"] = part_datum parts += mod_part + for(var/obj/item/part as anything in parts) part.name = "[name] [part.name]" part.desc = "[part.desc] [desc]" @@ -132,6 +133,7 @@ part.max_heat_protection_temperature = max_heat_protection_temperature part.min_cold_protection_temperature = min_cold_protection_temperature part.siemens_coefficient = siemens_coefficient + set_skin(mod, skin || default_skin) /datum/mod_theme/proc/set_skin(obj/item/mod/control/mod, skin) @@ -633,7 +635,7 @@ /obj/item/reagent_containers/cup/bottle, /obj/item/reagent_containers/cup/tube, /obj/item/reagent_containers/hypospray, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator, /obj/item/reagent_containers/syringe, /obj/item/stack/medical, /obj/item/sensor_device, @@ -744,7 +746,7 @@ /obj/item/reagent_containers/cup/bottle, /obj/item/reagent_containers/cup/tube, /obj/item/reagent_containers/hypospray, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator/pill, /obj/item/reagent_containers/syringe, /obj/item/stack/medical, /obj/item/sensor_device, @@ -1158,7 +1160,7 @@ complexity_max = DEFAULT_MAX_COMPLEXITY + 3 max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT siemens_coefficient = 0 - slowdown_deployed = 0.5 + slowdown_deployed = 0 ui_theme = "syndicate" resistance_flags = FIRE_PROOF inbuilt_modules = list(/obj/item/mod/module/armor_booster) @@ -1265,7 +1267,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT complexity_max = DEFAULT_MAX_COMPLEXITY + 3 siemens_coefficient = 0 - slowdown_deployed = 0.5 + slowdown_deployed = 0 ui_theme = "syndicate" inbuilt_modules = list(/obj/item/mod/module/armor_booster) allowed_suit_storage = list( @@ -1422,7 +1424,7 @@ /obj/item/reagent_containers/cup/tube, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/hypospray, - /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/applicator/pill, /obj/item/reagent_containers/syringe, /obj/item/restraints/handcuffs, /obj/item/sensor_device, @@ -1698,8 +1700,8 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT complexity_max = DEFAULT_MAX_COMPLEXITY + 3 siemens_coefficient = 0 - slowdown_deployed = 0.5 - ui_theme = "terminal" + slowdown_deployed = 0 + ui_theme = "ntos_terminal" inbuilt_modules = list(/obj/item/mod/module/armor_booster) allowed_suit_storage = list( /obj/item/ammo_box, diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm index 050bee6ff2b..08f104a95a0 100644 --- a/code/modules/mod/mod_types.dm +++ b/code/modules/mod/mod_types.dm @@ -523,6 +523,7 @@ starting_frequency = MODLINK_FREQ_SYNDICATE req_access = null applied_cell = /obj/item/stock_parts/power_store/cell/super + insignia_type = /obj/item/mod/module/insignia/syndie theme = /datum/mod_theme/responsory/traitor applied_modules = list( /obj/item/mod/module/storage/syndicate, diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm index 8dd5d5a494a..0bca7e87d2f 100644 --- a/code/modules/mod/modules/_module.dm +++ b/code/modules/mod/modules/_module.dm @@ -338,6 +338,7 @@ SIGNAL_HANDLER if(source == device) + device.moveToNullspace() device = null qdel(src) diff --git a/code/modules/mod/modules/module_kinesis.dm b/code/modules/mod/modules/module_kinesis.dm index 733e5ab40d9..436d3dc9e87 100644 --- a/code/modules/mod/modules/module_kinesis.dm +++ b/code/modules/mod/modules/module_kinesis.dm @@ -162,8 +162,7 @@ ADD_TRAIT(grabbed_atom, TRAIT_NO_FLOATING_ANIM, REF(src)) RegisterSignal(grabbed_atom, COMSIG_MOVABLE_SET_ANCHORED, PROC_REF(on_setanchored)) playsound(grabbed_atom, 'sound/items/weapons/contractor_baton/contractorbatonhit.ogg', 75, TRUE) - kinesis_icon = mutable_appearance(icon = 'icons/effects/effects.dmi', icon_state = "kinesis", layer = grabbed_atom.layer - 0.1) - kinesis_icon.appearance_flags = RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM + kinesis_icon = mutable_appearance(icon = 'icons/effects/effects.dmi', icon_state = "kinesis", layer = grabbed_atom.layer - 0.1, appearance_flags = RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM|KEEP_APART) kinesis_icon.overlays += emissive_appearance(icon = 'icons/effects/effects.dmi', icon_state = "kinesis", offset_spokesman = grabbed_atom) grabbed_atom.add_overlay(kinesis_icon) kinesis_beam = mod.wearer.Beam(grabbed_atom, "kinesis") diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm index 2c39d3ebdbd..9dce0940b3f 100644 --- a/code/modules/mod/modules/modules_antag.dm +++ b/code/modules/mod/modules/modules_antag.dm @@ -18,17 +18,15 @@ mask_worn_overlay = TRUE /// Whether or not this module removes pressure protection. var/remove_pressure_protection = TRUE - /// Speed added to the control unit. - var/speed_added = 0.5 - /// Speed that we actually added. - var/actual_speed_added = 0 + /// Slowdown added to the control unit while this module is disabled + var/space_slowdown = 0.5 /// Armor values added to the suit parts. var/datum/armor/armor_mod = /datum/armor/mod_module_armor_boost /// List of parts of the suit that are spaceproofed, for giving them back the pressure protection. var/list/spaceproofed = list() /obj/item/mod/module/armor_booster/no_speedbost - speed_added = 0 + space_slowdown = 0 /datum/armor/mod_module_armor_boost melee = 25 @@ -37,36 +35,37 @@ energy = 15 /obj/item/mod/module/armor_booster/on_part_activation() + RegisterSignal(mod, COMSIG_MOD_UPDATE_SPEED, PROC_REF(on_update_speed)) var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES) if(istype(head_cover)) head_cover.flash_protect = FLASH_PROTECTION_WELDER + mod.update_speed() /obj/item/mod/module/armor_booster/on_part_deactivation(deleting = FALSE) if(deleting) return + UnregisterSignal(mod, COMSIG_MOD_UPDATE_SPEED) var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES) if(istype(head_cover)) head_cover.flash_protect = initial(head_cover.flash_protect) + mod.update_speed() /obj/item/mod/module/armor_booster/on_activation() playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) balloon_alert(mod.wearer, "armor boosted, EVA lost") - actual_speed_added = max(0, min(mod.slowdown_deployed, speed_added)) var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES) if(head_cover) RegisterSignal(mod, COMSIG_MOD_PART_SEALED, PROC_REF(seal_helmet)) seal_helmet(mod, head_cover) - var/list/mod_parts = mod.get_parts(all = TRUE) for(var/obj/item/part as anything in mod.get_parts(all = TRUE)) part.set_armor(part.get_armor().add_other_armor(armor_mod)) - part.slowdown -= speed_added / length(mod_parts) if(!remove_pressure_protection || !isclothing(part)) continue var/obj/item/clothing/clothing_part = part if(clothing_part.clothing_flags & STOPSPRESSUREDAMAGE) clothing_part.clothing_flags &= ~STOPSPRESSUREDAMAGE spaceproofed[clothing_part] = TRUE - mod.wearer.update_equipment_speed_mods() + mod.update_speed() /obj/item/mod/module/armor_booster/on_deactivation(display_message = TRUE, deleting = FALSE) if(!deleting) @@ -76,18 +75,21 @@ if(head_cover) UnregisterSignal(mod, COMSIG_MOD_PART_SEALED) REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) - var/list/mod_parts = mod.get_parts(all = TRUE) for(var/obj/item/part as anything in mod.get_parts(all = TRUE)) part.set_armor(part.get_armor().subtract_other_armor(armor_mod)) - part.slowdown += speed_added / length(mod_parts) if(!remove_pressure_protection || !isclothing(part)) continue var/obj/item/clothing/clothing_part = part if(spaceproofed[clothing_part]) clothing_part.clothing_flags |= STOPSPRESSUREDAMAGE - mod.wearer.update_equipment_speed_mods() + mod.update_speed() spaceproofed = list() +/obj/item/mod/module/armor_booster/proc/on_update_speed(datum/source, list/module_slowdowns, prevent_slowdown) + SIGNAL_HANDLER + if (!active) + module_slowdowns += space_slowdown + /obj/item/mod/module/armor_booster/generate_worn_overlay(mutable_appearance/standing) overlay_state_inactive = "[initial(overlay_state_inactive)]-[mod.skin]" overlay_state_active = "[initial(overlay_state_active)]-[mod.skin]" diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm index af22a60d383..9af2ea0bc5a 100644 --- a/code/modules/mod/modules/modules_engineering.dm +++ b/code/modules/mod/modules/modules_engineering.dm @@ -61,15 +61,24 @@ /// A list of traits to add to the wearer when we're active (see: Magboots) var/list/active_traits = list(TRAIT_NO_SLIP_WATER, TRAIT_NO_SLIP_ICE, TRAIT_NO_SLIP_SLIDE, TRAIT_NEGATES_GRAVITY) +/obj/item/mod/module/magboot/on_install() + RegisterSignal(mod, COMSIG_MOD_UPDATE_SPEED, PROC_REF(on_update_speed)) + +/obj/item/mod/module/magboot/on_uninstall(deleting) + UnregisterSignal(mod, COMSIG_MOD_UPDATE_SPEED) + /obj/item/mod/module/magboot/on_activation() mod.wearer.add_traits(active_traits, REF(src)) - mod.slowdown += slowdown_active - mod.wearer.update_equipment_speed_mods() + mod.update_speed() /obj/item/mod/module/magboot/on_deactivation(display_message = TRUE, deleting = FALSE) mod.wearer.remove_traits(active_traits, REF(src)) - mod.slowdown -= slowdown_active - mod.wearer.update_equipment_speed_mods() + mod.update_speed() + +/obj/item/mod/module/magboot/proc/on_update_speed(datum/source, list/module_slowdowns, prevent_slowdown) + SIGNAL_HANDLER + if (!prevent_slowdown && active) + module_slowdowns += slowdown_active /obj/item/mod/module/magboot/advanced name = "MOD advanced magnetic stability module" diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index 54ebd998326..d10e0fc83ac 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -441,8 +441,7 @@ . = ..() if(!active) return - var/mutable_appearance/light_icon = mutable_appearance(overlay_icon_file, "module_light_on", layer = standing.layer + 0.2) - light_icon.appearance_flags = RESET_COLOR + var/mutable_appearance/light_icon = mutable_appearance(overlay_icon_file, "module_light_on", layer = standing.layer + 0.2, appearance_flags = RESET_COLOR) light_icon.color = light_color . += light_icon diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm index f1b9154358b..989481af76c 100644 --- a/code/modules/mod/modules/modules_maint.dm +++ b/code/modules/mod/modules/modules_maint.dm @@ -135,8 +135,8 @@ return ..() /obj/item/mod/module/visor/rave/on_activation() - rave_screen = mod.wearer.add_client_colour(/datum/client_colour/rave) - rave_screen.update_colour(rainbow_order[rave_number]) + rave_screen = mod.wearer.add_client_colour(/datum/client_colour/rave, REF(src)) + rave_screen.update_color(rainbow_order[rave_number]) music_player.start_music(mod.wearer) /obj/item/mod/module/visor/rave/on_deactivation(display_message = TRUE, deleting = FALSE) @@ -161,7 +161,7 @@ if(rave_number > length(rainbow_order)) rave_number = 1 mod.wearer.update_clothing(mod.slot_flags) - rave_screen.update_colour(rainbow_order[rave_number]) + rave_screen.update_color(rainbow_order[rave_number]) /obj/item/mod/module/visor/rave/get_configuration() . = ..() diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm index 97346262e56..3e9d47ebfb0 100644 --- a/code/modules/mod/modules/modules_supply.dm +++ b/code/modules/mod/modules/modules_supply.dm @@ -369,9 +369,7 @@ /// Armor values per tile. var/datum/armor/armor_mod = /datum/armor/mod_ash_accretion /// Speed added when you're fully covered in ash. - var/speed_added = 0.5 - /// Speed that we actually added. - var/actual_speed_added = 0 + var/speed_added = -0.5 /// Turfs that let us accrete ash. var/static/list/accretion_turfs /// Turfs that let us keep ash. @@ -409,24 +407,30 @@ /obj/item/mod/module/ash_accretion/on_part_activation() mod.wearer.add_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src)) RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) + RegisterSignal(mod, COMSIG_MOD_UPDATE_SPEED, PROC_REF(on_update_speed)) /obj/item/mod/module/ash_accretion/on_part_deactivation(deleting = FALSE) mod.wearer.remove_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src)) UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED) + UnregisterSignal(mod, COMSIG_MOD_UPDATE_SPEED) if(!traveled_tiles) return var/datum/armor/to_remove = get_armor_by_type(armor_mod) for(var/obj/item/part as anything in mod.get_parts(all = TRUE)) part.set_armor(part.get_armor().subtract_other_armor(to_remove.generate_new_with_multipliers(list(ARMOR_ALL = traveled_tiles)))) if(traveled_tiles == max_traveled_tiles) - mod.slowdown += speed_added - mod.wearer.update_equipment_speed_mods() + mod.update_speed() traveled_tiles = 0 /obj/item/mod/module/ash_accretion/generate_worn_overlay(mutable_appearance/standing) overlay_state_inactive = "[initial(overlay_state_inactive)]-[mod.skin]" return ..() +/obj/item/mod/module/ash_accretion/proc/on_update_speed(datum/source, list/module_slowdowns, prevent_slowdown) + SIGNAL_HANDLER + if (traveled_tiles == max_traveled_tiles) + module_slowdowns += speed_added + /obj/item/mod/module/ash_accretion/proc/on_move(atom/source, atom/oldloc, dir, forced) if(!isturf(mod.wearer.loc)) //dont lose ash from going in a locker return @@ -443,18 +447,15 @@ mod.wearer.color = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,3) //make them super light animate(mod.wearer, 1 SECONDS, color = null, flags = ANIMATION_PARALLEL) playsound(src, 'sound/effects/sparks/sparks1.ogg', 100, TRUE) - actual_speed_added = max(0, min(mod.slowdown_deployed, speed_added)) - mod.slowdown -= actual_speed_added - mod.wearer.update_equipment_speed_mods() + mod.update_speed() else if(is_type_in_typecache(mod.wearer.loc, keep_turfs)) return else if(traveled_tiles <= 0) return - if(traveled_tiles == max_traveled_tiles) - mod.slowdown += actual_speed_added - mod.wearer.update_equipment_speed_mods() traveled_tiles-- + if(traveled_tiles == max_traveled_tiles - 1) // Just lost our speed buff + mod.update_speed() for(var/obj/item/part as anything in mod.get_parts(all = TRUE)) part.set_armor(part.get_armor().subtract_other_armor(armor_mod)) if(traveled_tiles <= 0) @@ -606,8 +607,8 @@ /obj/structure/mining_bomb/proc/generate_image() explosion_image = image('icons/effects/96x96.dmi', "judicial_explosion") - explosion_image.pixel_x = -32 - explosion_image.pixel_y = -32 + explosion_image.pixel_w = -32 + explosion_image.pixel_z = -32 SET_PLANE_EXPLICIT(explosion_image, ABOVE_GAME_PLANE, src) /obj/structure/mining_bomb/proc/prime(atom/movable/firer) diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 6f9bee3170b..fcad39f80ff 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -987,6 +987,30 @@ return stored_files return stored_files + inserted_disk.stored_files +/// Returns how relevant the current security level is: +#define ALERT_RELEVANCY_SAFE 0 /// * 0: User is not in immediate danger and not needed for some station-critical task. +#define ALERT_RELEVANCY_WARN 1 /// * 1: Danger is around, but the user is not directly needed to handle it. +#define ALERT_RELEVANCY_PERTINENT 2/// * 2: Danger is around and the user is responsible for handling it. +/obj/item/modular_computer/proc/get_security_level_relevancy() + switch(SSsecurity_level.get_current_level_as_number()) + if(SEC_LEVEL_DELTA) + return ALERT_RELEVANCY_PERTINENT + if(SEC_LEVEL_RED) // all-hands-on-deck situations, everyone is responsible for combatting a threat + return ALERT_RELEVANCY_PERTINENT + if(SEC_LEVEL_BLUE) // suspected threat. security needs to be alert and possibly preparing for it, no further concerns + if(ACCESS_SECURITY in computer_id_slot.access) + return ALERT_RELEVANCY_PERTINENT + else + return ALERT_RELEVANCY_WARN + if(SEC_LEVEL_GREEN) // no threats, no concerns + return ALERT_RELEVANCY_SAFE + + return 0 + +#undef ALERT_RELEVANCY_SAFE +#undef ALERT_RELEVANCY_WARN +#undef ALERT_RELEVANCY_PERTINENT + /** * Debug ModPC * Used to spawn all programs for Create and Destroy unit test. diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm index bd19b1b4fe9..608a12a2183 100644 --- a/code/modules/modular_computers/computers/item/computer_ui.dm +++ b/code/modules/modular_computers/computers/item/computer_ui.dm @@ -120,6 +120,10 @@ "alert" = program.alert_pending, )) + data["alert_style"] = get_security_level_relevancy() + data["alert_color"] = SSsecurity_level?.current_security_level?.announcement_color + data["alert_name"] = SSsecurity_level?.current_security_level?.name_shortform + return data // Handles user's GUI input diff --git a/code/modules/modular_computers/computers/item/pda.dm b/code/modules/modular_computers/computers/item/pda.dm index 623b10b84a9..00c24663455 100644 --- a/code/modules/modular_computers/computers/item/pda.dm +++ b/code/modules/modular_computers/computers/item/pda.dm @@ -27,6 +27,7 @@ looping_sound = FALSE shell_capacity = SHELL_CAPACITY_SMALL + action_slots = ALL ///The item currently inserted into the PDA, starts with a pen. var/obj/item/inserted_item = /obj/item/pen diff --git a/code/modules/modular_computers/file_system/programs/arcade.dm b/code/modules/modular_computers/file_system/programs/arcade.dm index a731e95a944..1fa50303f6d 100644 --- a/code/modules/modular_computers/file_system/programs/arcade.dm +++ b/code/modules/modular_computers/file_system/programs/arcade.dm @@ -37,7 +37,7 @@ heads_up = "Are you a bad enough dude to grief the station?" boss_name = "George Melon" -/datum/computer_file/program/arcade/proc/game_check(mob/user) +/datum/computer_file/program/arcade/proc/game_check(mob/living/user) sleep(0.5 SECONDS) user?.mind?.adjust_experience(/datum/skill/gaming, 1) if(boss_hp <= 0) @@ -49,7 +49,7 @@ computer.update_appearance() ticket_count += 1 user?.mind?.adjust_experience(/datum/skill/gaming, 50) - usr.won_game() + user.won_game() sleep(1 SECONDS) else if(player_hp <= 0 || player_mp <= 0) heads_up = "You have been defeated... how will the station survive?" @@ -59,10 +59,10 @@ if(istype(computer)) computer.update_appearance() user?.mind?.adjust_experience(/datum/skill/gaming, 10) - usr.lost_game() + user.lost_game() sleep(1 SECONDS) -/datum/computer_file/program/arcade/proc/enemy_check(mob/user) +/datum/computer_file/program/arcade/proc/enemy_check(mob/living/user) var/boss_attackamt = 0 //Spam protection from boss attacks as well. var/boss_mpamt = 0 var/bossheal = 0 @@ -88,7 +88,7 @@ player_hp -= boss_attackamt pause_state = FALSE - game_check() + game_check(user) /datum/computer_file/program/arcade/ui_assets(mob/user) return list( @@ -109,12 +109,15 @@ /datum/computer_file/program/arcade/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() - usr.played_game() + var/mob/living/gamer = ui.user + if (!istype(gamer)) + return + gamer.played_game() var/gamerSkillLevel = 0 var/gamerSkill = 0 - if(usr?.mind) - gamerSkillLevel = usr.mind.get_skill_level(/datum/skill/gaming) - gamerSkill = usr.mind.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER) + if(gamer?.mind) + gamerSkillLevel = gamer.mind.get_skill_level(/datum/skill/gaming) + gamerSkill = gamer.mind.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER) switch(action) if("Attack") var/attackamt = 0 //Spam prevention. @@ -125,8 +128,8 @@ playsound(computer.loc, 'sound/machines/arcade/hit.ogg', 50, TRUE) boss_hp -= attackamt sleep(1 SECONDS) - game_check() - enemy_check() + game_check(gamer) + enemy_check(gamer) return TRUE if("Heal") var/healamt = 0 //More Spam Prevention. @@ -143,8 +146,8 @@ player_hp += healamt player_mp -= healcost sleep(1 SECONDS) - game_check() - enemy_check() + game_check(gamer) + enemy_check(gamer) return TRUE if("Recharge_Power") var/rechargeamt = 0 //As above. @@ -155,22 +158,22 @@ playsound(computer.loc, 'sound/machines/arcade/mana.ogg', 50, TRUE) player_mp += rechargeamt sleep(1 SECONDS) - game_check() - enemy_check() + game_check(gamer) + enemy_check(gamer) return TRUE if("Dispense_Tickets") if(computer.stored_paper <= 0) - to_chat(usr, span_notice("Printer is out of paper.")) + to_chat(gamer, span_notice("Printer is out of paper.")) return else computer.visible_message(span_notice("\The [computer] prints out paper.")) if(ticket_count >= 1) new /obj/item/stack/arcadeticket((get_turf(computer)), 1) - to_chat(usr, span_notice("[computer] dispenses a ticket!")) + to_chat(gamer, span_notice("[computer] dispenses a ticket!")) ticket_count -= 1 computer.stored_paper -= 1 else - to_chat(usr, span_notice("You don't have any stored tickets!")) + to_chat(gamer, span_notice("You don't have any stored tickets!")) return TRUE if("Start_Game") game_active = TRUE diff --git a/code/modules/modular_computers/file_system/programs/robotact.dm b/code/modules/modular_computers/file_system/programs/robotact.dm index 927e09c044a..90064ee3c04 100644 --- a/code/modules/modular_computers/file_system/programs/robotact.dm +++ b/code/modules/modular_computers/file_system/programs/robotact.dm @@ -5,7 +5,7 @@ extended_desc = "A built-in app for cyborg self-management and diagnostics." ui_header = "robotact.gif" //DEBUG -- new icon before PR program_open_overlay = "command" - program_flags = NONE + program_flags = PROGRAM_HEADER undeletable = TRUE can_run_on_flags = PROGRAM_PDA size = 5 diff --git a/code/modules/modular_computers/file_system/programs/virtual_pet.dm b/code/modules/modular_computers/file_system/programs/virtual_pet.dm index 9047e3014e6..7f51c419b75 100644 --- a/code/modules/modular_computers/file_system/programs/virtual_pet.dm +++ b/code/modules/modular_computers/file_system/programs/virtual_pet.dm @@ -214,18 +214,19 @@ GLOBAL_LIST_EMPTY(virtual_pets_list) /datum/computer_file/program/virtual_pet/proc/alter_profile_picture() var/image/pet_preview = image(icon = 'icons/ui/virtualpet/pet_state.dmi', icon_state = "pet_preview") - if(LAZYACCESS(pet.atom_colours, FIXED_COLOUR_PRIORITY)) - pet_preview.color = pet.atom_colours[FIXED_COLOUR_PRIORITY] + if(pet.cached_color_filter) + pet_preview.color = apply_matrix_to_color(COLOR_WHITE, pet.cached_color_filter["color"], pet.cached_color_filter["space"] || COLORSPACE_RGB) + else if (pet.color) + pet_preview.color = pet.color if(length(selected_hat)) var/mutable_appearance/our_selected_hat = selected_hat["appearance"] - var/mutable_appearance/hat_preview = mutable_appearance(our_selected_hat.icon, our_selected_hat.icon_state) - hat_preview.pixel_y = -9 + selected_hat["worn_offset"] + var/mutable_appearance/hat_preview = mutable_appearance(our_selected_hat.icon, our_selected_hat.icon_state, appearance_flags = RESET_COLOR|KEEP_APART) + hat_preview.pixel_z = -9 + selected_hat["worn_offset"] var/list/spec_hat = special_hat_placement[selected_hat["type"]]?["south"] if(spec_hat) hat_preview.pixel_w += spec_hat[1] hat_preview.pixel_z += spec_hat[2] - hat_preview.appearance_flags = RESET_COLOR pet_preview.add_overlay(hat_preview) profile_picture = getFlatIcon(pet_preview, no_anim = TRUE) @@ -504,7 +505,7 @@ GLOBAL_LIST_EMPTY(virtual_pets_list) else selected_hat["type"] = chosen_type var/state_to_use = initial(chosen_type.worn_icon_state) || initial(chosen_type.icon_state) - var/mutable_appearance/selected_hat_appearance = mutable_appearance(initial(chosen_type.worn_icon), state_to_use, appearance_flags = RESET_COLOR) + var/mutable_appearance/selected_hat_appearance = mutable_appearance(initial(chosen_type.worn_icon), state_to_use, appearance_flags = RESET_COLOR|KEEP_APART) selected_hat["worn_offset"] = initial(chosen_type.worn_y_offset) var/list/scale_list = special_hat_placement[chosen_type]?["scale"] if(scale_list) @@ -584,7 +585,7 @@ GLOBAL_LIST_EMPTY(virtual_pets_list) announce_global_updates(message = "has found a chocolate at [selected_area.name]") selected_area = null var/obj/item/food/virtual_chocolate/chocolate = new(get_turf(computer)) - chocolate.AddElement(/datum/element/temporary_atom, life_time = 30 SECONDS) //we cant maintain its existence for too long! + chocolate.fade_into_nothing(life_time = 30 SECONDS) //we cant maintain its existence for too long! /datum/computer_file/program/virtual_pet/proc/recall_pet(mob/living/friend) animate(pet, transform = matrix().Scale(0.3, 0.3), time = 1.5 SECONDS) diff --git a/code/modules/paperwork/desk_bell.dm b/code/modules/paperwork/desk_bell.dm index 7c2b96f3217..5dc1db7a3f5 100644 --- a/code/modules/paperwork/desk_bell.dm +++ b/code/modules/paperwork/desk_bell.dm @@ -9,6 +9,8 @@ anchored = FALSE pass_flags = PASSTABLE // Able to place on tables max_integrity = 5000 // To make attacking it not instantly break it + throwforce = 2 + interaction_flags_mouse_drop = NEED_HANDS /// The amount of times this bell has been rang, used to check the chance it breaks var/times_rang = 0 @@ -60,6 +62,10 @@ times_rang += weapon.force ring_bell(user) +/obj/structure/desk_bell/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + . = ..() + ring_bell() + // Fix the clapper /obj/structure/desk_bell/screwdriver_act(mob/living/user, obj/item/tool) if(broken_ringer) @@ -91,7 +97,10 @@ /// Check if the clapper breaks, and if it does, break it /obj/structure/desk_bell/proc/check_clapper(mob/living/user) if(((times_rang >= 10000) || prob(times_rang/100)) && ring_cooldown_length) - to_chat(user, span_notice("You hear [src]'s clapper fall off of its hinge. Nice job, you broke it.")) + if (user) + to_chat(user, span_notice("You hear [src]'s clapper fall off of its hinge. Nice job, you broke it.")) + else + audible_message(span_notice("You hear [src]'s clapper fall off of its hinge. Nice job, you broke it.")) broken_ringer = TRUE /// Ring the bell @@ -105,20 +114,93 @@ times_rang++ return TRUE +/obj/structure/desk_bell/mouse_drop_dragged(atom/over_object, mob/user) + if(over_object != user) + return FALSE + var/obj/item/inhand_desk_bell/held_bell = new (user, src) + user.put_in_hands(held_bell, del_on_fail = FALSE) + // A warning to all who enter; the ringing sound STACKS. It won't be deafening because it only goes every decisecond, // but I did feel like my ears were going to start bleeding when I tested it with my autoclicker. /obj/structure/desk_bell/speed_demon desc = "The cornerstone of any customer service job. This one's been modified for hyper-performance." ring_cooldown_length = 0 -/obj/structure/desk_bell/mouse_drop_dragged(atom/over_object, mob/user) - if(!istype(over_object, /obj/vehicle/ridden/wheelchair)) +/// Handheld bell +/obj/item/inhand_desk_bell + name = "held desk bell" + force = 1 + w_class = WEIGHT_CLASS_SMALL + obj_flags = CONDUCTS_ELECTRICITY + force = 1 + throwforce = 2 + /// Our contained bell + var/obj/structure/desk_bell/bell + +/obj/item/inhand_desk_bell/Initialize(mapload, obj/structure/desk_bell/bell) + if (mapload) + stack_trace("You shouldn't map in this item, use /obj/structure/desk_bell") + if (!bell) + return INITIALIZE_HINT_QDEL + register_item_context() + src.bell = bell + bell.forceMove(src) + appearance = bell.appearance + RegisterSignals(bell, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED), PROC_REF(on_bell_gone)) + return ..() + +/// If we don't have a bell we're nothing +/obj/item/inhand_desk_bell/proc/on_bell_gone() + SIGNAL_HANDLER + UnregisterSignal(bell, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED)) + bell = null + qdel(src) + +/obj/item/inhand_desk_bell/add_item_context(obj/item/source, list/context, atom/target, mob/living/user) + . = NONE + if(istype(target, /obj/vehicle/ridden/wheelchair)) + var/obj/vehicle/ridden/wheelchair/chair = target + if(!chair.bell_attached) + context[SCREENTIP_CONTEXT_LMB] = "Attach bell to wheelchair." + return CONTEXTUAL_SCREENTIP_SET + +/obj/item/inhand_desk_bell/examine(mob/user) + return bell.examine(user) + +/obj/item/inhand_desk_bell/on_thrown(mob/living/carbon/user, atom/target) + var/obj/throwing_bell = bell // We are about to null this variable but also want to return it + bell.forceMove(user.drop_location()) + return throwing_bell + +/obj/item/inhand_desk_bell/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + if (isturf(loc)) + bell.forceMove(loc) + +/obj/item/inhand_desk_bell/attack(mob/living/target_mob, mob/living/user, params) + . = ..() + if (.) return - var/obj/vehicle/ridden/wheelchair/target = over_object - if(target.bell_attached) + bell.ring_bell(user) + +/obj/item/inhand_desk_bell/attack_self(mob/user, modifiers) + . = ..() + if (.) + return + bell.ring_bell(user) + +/obj/item/inhand_desk_bell/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) + . = ..() + if (!istype(interacting_with, /obj/vehicle/ridden/wheelchair)) + return NONE + var/obj/vehicle/ridden/wheelchair/chair = interacting_with + + if (chair.bell_attached) user.balloon_alert(user, "already has a bell!") - return + return ITEM_INTERACT_FAILURE user.balloon_alert(user, "attaching bell...") - if(!do_after(user, 0.5 SECONDS)) - return - target.attach_bell(src) + if (!do_after(user, 0.5 SECONDS, chair)) + return ITEM_INTERACT_FAILURE + + chair.attach_bell(bell) + return ITEM_INTERACT_SUCCESS diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 7a027eb8c75..ef05d31ba22 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -17,7 +17,6 @@ icon_state = "paper" inhand_icon_state = "paper" worn_icon_state = "paper" - custom_fire_overlay = "paper_onfire_overlay" throwforce = 0 w_class = WEIGHT_CLASS_TINY throw_range = 1 @@ -86,6 +85,11 @@ LAZYREMOVE(SSpersistence.queued_message_bottles, src) return ..() +/obj/item/paper/custom_fire_overlay() + if (!custom_fire_overlay) + custom_fire_overlay = mutable_appearance('icons/obj/service/bureaucracy.dmi', "paper_onfire_overlay", appearance_flags = RESET_COLOR|KEEP_APART) + return custom_fire_overlay + /// Determines whether this paper has been written or stamped to. /obj/item/paper/proc/is_empty() return !(LAZYLEN(raw_text_inputs) || LAZYLEN(raw_stamp_data)) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 51574a4d38e..1bc5edce896 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/service/bureaucracy.dmi' icon_state = "paperplane" base_icon_state = "paperplane" - custom_fire_overlay = "paperplane_onfire" throw_range = 7 throw_speed = 1 throwforce = 0 @@ -59,6 +58,11 @@ internal_paper = null return ..() +/obj/item/paperplane/custom_fire_overlay() + if (!custom_fire_overlay) + custom_fire_overlay = mutable_appearance('icons/obj/service/bureaucracy.dmi', "paperplane_onfire", appearance_flags = RESET_COLOR|KEEP_APART) + return custom_fire_overlay + /obj/item/paperplane/suicide_act(mob/living/user) var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES) user.Stun(20 SECONDS) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 526ebcec8c8..4d604236322 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -484,7 +484,7 @@ target_turf = get_turf(src) if(ismineralturf(target_turf)) var/turf/closed/mineral/mineral_turf = target_turf - mineral_turf.gets_drilled(firer, TRUE) + mineral_turf.gets_drilled(firer, 1) /obj/item/pen/destroyer name = "Fine Tipped Pen" diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 1c54aefa269..7002540bd89 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -663,6 +663,7 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks()) desc = "A small, lightweight cartridge of Nanotrasen ValueBrand toner. Fits photocopiers and autopainters alike." icon = 'icons/obj/service/bureaucracy.dmi' icon_state = "tonercartridge" + w_class = WEIGHT_CLASS_SMALL grind_results = list(/datum/reagent/iodine = 40, /datum/reagent/iron = 10) var/charges = 5 var/max_charges = 5 diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index a9695fe6a8a..a7d69e3832a 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -55,6 +55,7 @@ /obj/item/camera/examine(mob/user) . = ..() + . += span_notice("It has [pictures_left] photos left.") . += span_notice("Alt-click to change its focusing, allowing you to set how big of an area it will capture.") /obj/item/camera/proc/adjust_zoom(mob/user) @@ -101,10 +102,6 @@ return TRUE //no afterattack ..() -/obj/item/camera/examine(mob/user) - . = ..() - . += "It has [pictures_left] photos left." - //user can be atom or mob /obj/item/camera/proc/can_target(atom/target, mob/user) if(!on || blending || !pictures_left) diff --git a/code/modules/plumbing/plumbers/pill_press.dm b/code/modules/plumbing/plumbers/pill_press.dm index 5d0c78f35a1..d3c239a7720 100644 --- a/code/modules/plumbing/plumbers/pill_press.dm +++ b/code/modules/plumbing/plumbers/pill_press.dm @@ -178,9 +178,9 @@ //decode container & its category packaging_type = locate(container) - if(ispath(packaging_type, /obj/item/reagent_containers/pill/patch)) + if(ispath(packaging_type, /obj/item/reagent_containers/applicator/patch)) packaging_category = CAT_PATCHES - else if(ispath(packaging_type, /obj/item/reagent_containers/pill)) + else if(ispath(packaging_type, /obj/item/reagent_containers/applicator/pill)) packaging_category = CAT_PILLS else packaging_category = "Bottles" diff --git a/code/modules/point/point.dm b/code/modules/point/point.dm index 98574373a81..ae0fc64cac9 100644 --- a/code/modules/point/point.dm +++ b/code/modules/point/point.dm @@ -53,8 +53,8 @@ if (!isnull(hover_outline_index)) pointed_atom_appearance.filters.Cut(hover_outline_index, hover_outline_index + 1) - thought_bubble.pixel_x = 16 - thought_bubble.pixel_y = 32 + thought_bubble.pixel_w = 16 + thought_bubble.pixel_z = 32 thought_bubble.alpha = 200 var/mutable_appearance/point_visual = mutable_appearance( diff --git a/code/modules/power/apc/apc_main.dm b/code/modules/power/apc/apc_main.dm index 244b52892f5..0c714c08113 100644 --- a/code/modules/power/apc/apc_main.dm +++ b/code/modules/power/apc/apc_main.dm @@ -174,8 +174,11 @@ offset_old = pixel_x pixel_x = -APC_PIXEL_OFFSET + var/image/hud_image = image(icon = 'icons/mob/huds/hud.dmi', icon_state = "apc_hacked") + hud_image.pixel_w = pixel_x + hud_image.pixel_z = pixel_y hud_list = list( - MALF_APC_HUD = image(icon = 'icons/mob/huds/hud.dmi', icon_state = "apc_hacked", pixel_x = src.pixel_x, pixel_y = src.pixel_y) + MALF_APC_HUD = hud_image ) //Assign it to its area. If mappers already assigned an area string fast load the area from it else get the current area diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index f77314cfaa2..42467d88dae 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -104,6 +104,7 @@ maxcharge = STANDARD_CELL_CHARGE * 10 custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.6) chargerate = STANDARD_CELL_RATE * 0.75 + /obj/item/stock_parts/power_store/cell/high/empty empty = TRUE diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index 23f211762e9..15b9d3b51d3 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -238,6 +238,9 @@ color_set = fire_colour power_set = fire_power brightness_set = fire_brightness + else if (major_emergency) + color_set = bulb_emergency_colour + brightness_set = brightness * bulb_major_emergency_brightness_mul else if (nightshift_enabled) brightness_set -= brightness_set * NIGHTSHIFT_LIGHT_MODIFIER // SKYRAT EDIT CHANGE - ORIGINAL: brightness_set = nightshift_brightness power_set -= power_set * NIGHTSHIFT_LIGHT_MODIFIER // SKYRAT EDIT CHANGE - ORIGINAL: power_set = nightshift_light_power @@ -259,9 +262,6 @@ blue = clamp(blue, 0, 255) color_set = rgb(red, green, blue) // Splice the numbers together and turn them back to hex. // SKYRAT EDIT ADDITION END - else if (major_emergency) - color_set = bulb_low_power_colour - brightness_set = brightness * bulb_major_emergency_brightness_mul if (cached_color_filter) color_set = apply_matrix_to_color(color_set, cached_color_filter["color"], cached_color_filter["space"] || COLORSPACE_RGB) var/matching = light && brightness_set == light.light_range && power_set == light.light_power && color_set == light.light_color @@ -765,7 +765,7 @@ icon_state = "floor" brightness = 4 light_angle = 360 - layer = ABOVE_OPEN_TURF_LAYER + layer = BELOW_CATWALK_LAYER plane = FLOOR_PLANE light_type = /obj/item/light/bulb fitting = "bulb" diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index caf628bc039..ea13dd878b8 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -131,15 +131,26 @@ variance = 25 custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*2) -/obj/item/ammo_casing/shotgun/fletchette - name = "\improper Donk Co Flechette Shell" - desc = "A shotgun casing filled with small metal darts. Has poor armor penetration and velocity, but is good at destroying most electronic devices and injuring unarmored humanoids." - icon_state = "fletchette" +/obj/item/ammo_casing/shotgun/flechette + name = "flechette shell" + desc = "A shotgun casing filled with small metal darts. Pokes many tiny holes into meat and kevlar alike. Useful for turning someones insides \ + into outsides." + icon_state = "flechette" projectile_type = /obj/projectile/bullet/pellet/flechette - custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*2, /datum/material/glass=SMALL_MATERIAL_AMOUNT*1) - pellets = 6 + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) + pellets = 8 variance = 10 - randomspread = TRUE + +/obj/item/ammo_casing/shotgun/flechette/donk + name = "\improper Donk Co. 'Donk Spike' Shell" + desc = "Donk Co., looking to create a new and exciting shell to move onto the open market, invented what they call the 'Donk Spike'. \ + A flechette not made from standard ferrous metals. But...plastic. It was a financial failure due to a complete lack of \ + confidence in the product. Now there are millions of these things in landfills across the sector. This is one such example. \ + Looks like a donk-pocket! Tastes like death!" + icon_state = "flechette_donk" + projectile_type = /obj/projectile/bullet/pellet/flechette/donk + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2) + pellets = 5 /obj/item/ammo_casing/shotgun/ion name = "ion shell" diff --git a/code/modules/projectiles/boxes_magazines/external/shotgun.dm b/code/modules/projectiles/boxes_magazines/external/shotgun.dm index e27a86c091a..df34c7d9ec5 100644 --- a/code/modules/projectiles/boxes_magazines/external/shotgun.dm +++ b/code/modules/projectiles/boxes_magazines/external/shotgun.dm @@ -41,3 +41,29 @@ icon_state = "m12gbc" base_icon_state = "m12gbc" ammo_type = /obj/item/ammo_casing/shotgun/meteorslug + +/obj/item/ammo_box/magazine/m12g/flechette + name = "shotgun magazine (12g flechette)" + icon_state = "m12gfl" + base_icon_state = "m12gfl" + ammo_type = /obj/item/ammo_casing/shotgun/flechette + +/obj/item/ammo_box/magazine/m12g/donk + name = "shotgun magazine (12g Donk Co. 'Donk Spike' flechette)" + desc = "A drum magazine of shotgun shells, suitable for the Bulldog combat shotgun. It is covered in Donk Co. scratch-and-sniff \ + stickers. You're not sure you want to try and get a whiff..." + icon_state = "m12gd" + base_icon_state = "m12gd" + ammo_type = /obj/item/ammo_casing/shotgun/flechette/donk + +/obj/item/ammo_box/magazine/m12g/donk/examine_more(mob/user) + . = ..() + if(ishuman(user)) + return + + var/mob/living/carbon/human/human_sniffer = user + if(!HAS_TRAIT(human_sniffer, TRAIT_ANOSMIA) && human_sniffer.can_perform_action(src, NEED_DEXTERITY|NEED_HANDS|ALLOW_RESTING|FORBID_TELEKINESIS_REACH)) + . += span_notice("You scratch and sniff the stickers.") + . += span_warning("Oh god, where did they pull this from, a landfill?") + human_sniffer.add_mood_event("stink-pocket", /datum/mood_event/disgusted) + diff --git a/code/modules/projectiles/boxes_magazines/internal/shotgun.dm b/code/modules/projectiles/boxes_magazines/internal/shotgun.dm index 6d7d9225142..3f1ccd4ff10 100644 --- a/code/modules/projectiles/boxes_magazines/internal/shotgun.dm +++ b/code/modules/projectiles/boxes_magazines/internal/shotgun.dm @@ -58,5 +58,5 @@ max_ammo = 1 /obj/item/ammo_box/magazine/internal/shot/single/musket - name = "donk co musket internal magazine" - ammo_type = /obj/item/ammo_casing/shotgun/fletchette + name = "\improper Donk Co. musket internal magazine" + ammo_type = /obj/item/ammo_casing/shotgun/flechette/donk diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 84d737b66f7..3ff9114204c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -32,7 +32,8 @@ var/can_suppress = FALSE var/suppressed_sound = 'sound/items/weapons/gun/general/heavy_shot_suppressed.ogg' var/suppressed_volume = 60 - var/can_unsuppress = TRUE /// whether a gun can be unsuppressed. for ballistics, also determines if it generates a suppressor overlay + /// whether a gun can be unsuppressed. for ballistics, also determines if it generates a suppressor overlay + var/can_unsuppress = TRUE var/recoil = 0 //boom boom shake the room var/clumsy_check = TRUE var/obj/item/ammo_casing/chambered = null @@ -45,7 +46,8 @@ /// Delay between bursts (if burst-firing) or individual shots (if weapon is single-fire). var/fire_delay = 0 var/firing_burst = 0 //Prevent the weapon from firing again while already firing - var/semicd = 0 //cooldown handler + /// firing cooldown, true if this gun shouldn't be allowed to manually fire + var/fire_cd = 0 var/weapon_weight = WEAPON_LIGHT var/dual_wield_spread = 24 //additional spread when dual wielding ///Can we hold up our target with this? Default to yes @@ -285,13 +287,14 @@ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN /obj/item/gun/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) - if(user.combat_mode && isliving(interacting_with)) - return ITEM_INTERACT_SKIP_TO_ATTACK // Gun bash / bayonet attack if(try_fire_gun(interacting_with, user, list2params(modifiers))) return ITEM_INTERACT_SUCCESS return NONE /obj/item/gun/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers) + if(user.combat_mode && isliving(interacting_with)) + return ITEM_INTERACT_SKIP_TO_ATTACK // Gun bash / bayonet attack + if(!can_hold_up || !isliving(interacting_with)) return interact_with_atom(interacting_with, user, modifiers) @@ -334,7 +337,7 @@ if(flag) //It's adjacent, is the user, or is on the user's person if(target in user.contents) //can't shoot stuff inside us. return - if(!ismob(target) || user.combat_mode) //melee attack + if(!ismob(target)) //melee attack return if(target == user && user.zone_selected != BODY_ZONE_PRECISE_MOUTH) //so we can't shoot ourselves (unless mouth selected) return @@ -468,7 +471,7 @@ add_fingerprint(user) - if(semicd) + if(fire_cd) return //Vary by at least this much @@ -485,8 +488,10 @@ if(burst_size > 1) firing_burst = TRUE + fire_cd = TRUE for(var/i = 1 to burst_size) addtimer(CALLBACK(src, PROC_REF(process_burst), user, target, message, params, zone_override, total_random_spread, burst_spread_mult, i), modified_burst_delay * (i - 1)) + addtimer(CALLBACK(src, PROC_REF(reset_fire_cd)), modified_fire_delay) // for the case of fire delay longer than burst else if(chambered) if(HAS_TRAIT(user, TRAIT_PACIFISM)) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal. @@ -510,8 +515,8 @@ if (!QDELETED(src)) process_chamber() update_appearance() - semicd = TRUE - addtimer(CALLBACK(src, PROC_REF(reset_semicd)), modified_fire_delay) + fire_cd = TRUE + addtimer(CALLBACK(src, PROC_REF(reset_fire_cd)), modified_fire_delay) if(user) user.update_held_items() @@ -519,8 +524,8 @@ return TRUE -/obj/item/gun/proc/reset_semicd() - semicd = FALSE +/obj/item/gun/proc/reset_fire_cd() + fire_cd = FALSE /obj/item/gun/screwdriver_act(mob/living/user, obj/item/I) . = ..() @@ -580,7 +585,7 @@ if(!ishuman(user) || !ishuman(target)) return - if(semicd) + if(fire_cd) return if(user == target) @@ -590,7 +595,7 @@ target.visible_message(span_warning("[user] points [src] at [target]'s head, ready to pull the trigger..."), \ span_userdanger("[user] points [src] at your head, ready to pull the trigger...")) - semicd = TRUE + fire_cd = TRUE if(!bypass_timer && (!do_after(user, 12 SECONDS, target) || user.zone_selected != BODY_ZONE_PRECISE_MOUTH)) if(user) @@ -598,10 +603,10 @@ user.visible_message(span_notice("[user] decided not to shoot.")) else if(target?.Adjacent(user)) target.visible_message(span_notice("[user] has decided to spare [target]"), span_notice("[user] has decided to spare your life!")) - semicd = FALSE + fire_cd = FALSE return - semicd = FALSE + fire_cd = FALSE target.visible_message(span_warning("[user] pulls the trigger!"), span_userdanger("[(user == target) ? "You pull" : "[user] pulls"] the trigger!")) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 323ee33c27d..3d95689ff40 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -224,9 +224,9 @@ if(suppressed && can_unsuppress) // if it can't be unsuppressed, we assume the suppressor is integrated into the gun itself and don't generate an overlay var/mutable_appearance/MA = mutable_appearance(icon, "[icon_state]_suppressor") if(suppressor_x_offset) - MA.pixel_x = suppressor_x_offset + MA.pixel_w = suppressor_x_offset if(suppressor_y_offset) - MA.pixel_y = suppressor_y_offset + MA.pixel_z = suppressor_y_offset . += MA if(!chambered && empty_indicator) //this is duplicated in c20's update_overlayss due to a layering issue with the select fire icon. @@ -468,7 +468,6 @@ playsound(src, load_sound, load_sound_volume, load_sound_vary) if (chambered == null && bolt_type == BOLT_TYPE_NO_BOLT) chamber_round() - SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) ammo.update_appearance() update_appearance() return TRUE diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 2968e9052f8..ce68b24b3c5 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -403,7 +403,7 @@ . = ..() . += span_notice("Looking down at \the [src], you recall something you read in a promotional pamphlet... ") - . += span_info("The BR-38 possesses an acceleration rail that launches bullets at higher than typical velocity.\ + . += span_info("The BR-38 possesses an acceleration rail that launches bullets at higher than typical velocity. \ This allows even less powerful cartridges to put out significant amounts of stopping power.") . += span_notice("However, you also remember some of the rumors... ") diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index db1aa1ec754..00069117544 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -224,7 +224,6 @@ name = "\improper Liberator" desc = "A poorly made 3D printed \"gun\", only capable of firing a single shot. Well-known throughout the Spinward Sector \ after an incident where 3 assistants were killed by shrapnel from such a device exploding while attempting to shoot a mouse." - icon = 'icons/obj/weapons/guns/ballistic.dmi' // BUBBER EDIT ADDITION - We don't have an override sprite for this one icon_state = "doorhickey" custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2) bolt_type = BOLT_TYPE_NO_BOLT diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index 753ca5bbdc9..77efb56f947 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -445,7 +445,7 @@ . = ..() AddComponent(/datum/component/scope, range_modifier = 4) //enough range to at least make extremely good use of the penetrator rounds -/obj/item/gun/ballistic/rifle/sniper_rifle/reset_semicd() +/obj/item/gun/ballistic/rifle/sniper_rifle/reset_fire_cd() . = ..() if(suppressed) playsound(src, 'sound/machines/eject.ogg', 25, TRUE, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 0290beee99f..2df26554e0b 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -274,8 +274,8 @@ return var/mutable_appearance/charge_overlay = mutable_appearance(icon, overlay_icon_state) for(var/i = ratio, i >= 1, i--) - charge_overlay.pixel_x = ammo_x_offset * (i - 1) - charge_overlay.pixel_y = ammo_y_offset * (i - 1) + charge_overlay.pixel_w = ammo_x_offset * (i - 1) + charge_overlay.pixel_z = ammo_y_offset * (i - 1) . += new /mutable_appearance(charge_overlay) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 582bc930edf..74443916f73 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -251,7 +251,7 @@ modkit_upgrade.projectile_strike(src, target_turf, target, kinetic_gun) if(ismineralturf(target_turf)) var/turf/closed/mineral/M = target_turf - M.gets_drilled(firer, TRUE) + M.gets_drilled(firer, 1) if(iscarbon(firer)) var/mob/living/carbon/carbon_firer = firer var/skill_modifier = 1 @@ -266,14 +266,15 @@ /obj/projectile/kinetic/mech range = 5 damage = 50 - //the multiplier we apply to our PKa's AOE effect. - var/aoe_damage_multiplier = 0.3 /obj/projectile/kinetic/mech/strike_thing(atom/target) . = ..() new /obj/effect/temp_visual/explosion/fast(get_turf(target)) - for(var/mob/living/living_mob in range(1, target) - firer - target) + for(var/turf/closed/mineral/mineral_turf in RANGE_TURFS(2, target) - target) + mineral_turf.gets_drilled(firer, 0.1) + + for(var/mob/living/living_mob in range(2, target) - firer - target) if(!ismining(living_mob)) continue var/armor = living_mob.run_armor_check(def_zone, armor_flag, armour_penetration = armour_penetration) @@ -428,6 +429,8 @@ //AoE blasts /obj/item/borg/upgrade/modkit/aoe modifier = 0 + cost = 10 + maximum_of_type = 1 var/turf_aoe = FALSE var/stats_stolen = FALSE @@ -452,20 +455,25 @@ /obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/projectile/kinetic/K) K.name = "kinetic explosion" -/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/kinetic_blast, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) if(stats_stolen) return new /obj/effect/temp_visual/explosion/fast(target_turf) if(turf_aoe) - for(var/T in RANGE_TURFS(1, target_turf) - target_turf) + for(var/T in RANGE_TURFS(2, target_turf) - target_turf) if(ismineralturf(T)) var/turf/closed/mineral/M = T - M.gets_drilled(K.firer, TRUE) + M.gets_drilled(kinetic_blast.firer, 0.1) + if(modifier) - for(var/mob/living/L in range(1, target_turf) - K.firer - target) - var/armor = L.run_armor_check(K.def_zone, K.armor_flag, "", "", K.armour_penetration) - L.apply_damage(K.damage*modifier, K.damage_type, K.def_zone, armor) - to_chat(L, span_userdanger("You're struck by a [K.name]!")) + for(var/mob/living/living_mob in range(2, target) - kinetic_blast.firer - target) + + if(!ismining(living_mob)) + continue + + var/armor = living_mob.run_armor_check(kinetic_blast.def_zone, kinetic_blast.armor_flag, armour_penetration = kinetic_blast.armour_penetration) + living_mob.apply_damage(kinetic_blast.damage*modifier, kinetic_blast.damage_type, kinetic_blast.def_zone, armor) + to_chat(living_mob, span_userdanger("You're struck by a [kinetic_blast.name]!")) /obj/item/borg/upgrade/modkit/aoe/turfs name = "mining explosion" @@ -473,16 +481,15 @@ denied_type = /obj/item/borg/upgrade/modkit/aoe/turfs turf_aoe = TRUE -/obj/item/borg/upgrade/modkit/aoe/turfs/andmobs - name = "offensive mining explosion" - desc = "Causes the kinetic accelerator to destroy rock and damage mobs in an AoE." - maximum_of_type = 3 - modifier = 0.25 - /obj/item/borg/upgrade/modkit/aoe/mobs name = "offensive explosion" desc = "Causes the kinetic accelerator to damage mobs in an AoE." - modifier = 0.2 + modifier = 1 + +/obj/item/borg/upgrade/modkit/aoe/mobs/andturfs + name = "offensive mining explosion" + desc = "Causes the kinetic accelerator to destroy rock and damage mobs in an AoE." + turf_aoe = TRUE //Minebot passthrough /obj/item/borg/upgrade/modkit/minebot_passthrough diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 2db698c670b..98d4d381635 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -18,10 +18,11 @@ damage = 10 /datum/embedding/bullet - embed_chance=20 - fall_chance=2 - jostle_chance=0 - ignore_throwspeed_threshold=TRUE - pain_stam_pct=0.5 - pain_mult=3 - rip_time=10 + embed_chance = 20 + fall_chance = 2 + jostle_chance = 0 + ignore_throwspeed_threshold = TRUE + pain_stam_pct = 0.5 + pain_mult = 3 + rip_time = 1 SECONDS + stealthy_embed = TRUE diff --git a/code/modules/projectiles/projectile/bullets/junk.dm b/code/modules/projectiles/projectile/bullets/junk.dm index 4b6a6bbd60d..a49d7aae4ba 100644 --- a/code/modules/projectiles/projectile/bullets/junk.dm +++ b/code/modules/projectiles/projectile/bullets/junk.dm @@ -4,7 +4,7 @@ name = "junk bullet" icon_state = "trashball" damage = 30 - embed_type = /datum/embedding/bullet_junk + embed_type = /datum/embedding/bullet/junk /// What biotype does our junk projectile especially harm? var/extra_damage_mob_biotypes = MOB_ROBOTIC /// How much do we multiply our total base damage? @@ -28,7 +28,7 @@ if(finalized_damage) living_target.apply_damage(finalized_damage, damagetype = extra_damage_type, def_zone = BODY_ZONE_CHEST, wound_bonus = wound_bonus) -/datum/embedding/bullet_junk +/datum/embedding/bullet/junk embed_chance = 15 fall_chance = 3 jostle_chance = 4 @@ -37,6 +37,7 @@ pain_mult = 5 jostle_pain_mult = 6 rip_time = 1 SECONDS + stealthy_embed = FALSE /obj/projectile/bullet/incendiary/fire/junk name = "burning oil" @@ -75,11 +76,11 @@ name = "junk ripper bullet" icon_state = "redtrac" damage = 10 - embed_type = /datum/embedding/bullet_junk_ripper + embed_type = /datum/embedding/bullet/junk/ripper wound_bonus = 10 bare_wound_bonus = 30 -/datum/embedding/bullet_junk_ripper +/datum/embedding/bullet/junk/ripper embed_chance = 100 fall_chance = 3 jostle_chance = 4 diff --git a/code/modules/projectiles/projectile/bullets/pistol.dm b/code/modules/projectiles/projectile/bullets/pistol.dm index a19574474d2..9c799fb9c0a 100644 --- a/code/modules/projectiles/projectile/bullets/pistol.dm +++ b/code/modules/projectiles/projectile/bullets/pistol.dm @@ -3,9 +3,9 @@ /obj/projectile/bullet/c9mm name = "9mm bullet" damage = 30 - embed_type = /datum/embedding/bullet_c9mm + embed_type = /datum/embedding/bullet/c9mm -/datum/embedding/bullet_c9mm +/datum/embedding/bullet/c9mm embed_chance = 15 fall_chance = 3 jostle_chance = 4 @@ -79,13 +79,13 @@ name = ".160 smart bullet" icon_state = "smartgun" damage = 10 - embed_type = /datum/embedding/bullet_c160smart + embed_type = /datum/embedding/bullet/c160smart speed = 0.5 homing_turn_speed = 5 homing_inaccuracy_min = 4 homing_inaccuracy_max = 10 -/datum/embedding/bullet_c160smart +/datum/embedding/bullet/c160smart embed_chance = 10 fall_chance = 5 jostle_chance = 3 diff --git a/code/modules/projectiles/projectile/bullets/revolver.dm b/code/modules/projectiles/projectile/bullets/revolver.dm index df798142a12..4c6322a4c75 100644 --- a/code/modules/projectiles/projectile/bullets/revolver.dm +++ b/code/modules/projectiles/projectile/bullets/revolver.dm @@ -21,10 +21,10 @@ ricochet_auto_aim_range = 3 wound_bonus = -20 bare_wound_bonus = 10 - embed_type = /datum/embedding/bullet_c38 + embed_type = /datum/embedding/bullet/c38 embed_falloff_tile = -4 -/datum/embedding/bullet_c38 +/datum/embedding/bullet/c38 embed_chance = 25 fall_chance = 2 jostle_chance = 2 @@ -75,11 +75,11 @@ sharpness = SHARP_EDGED wound_bonus = 20 bare_wound_bonus = 20 - embed_type = /datum/embedding/bullet_c38_dumdum + embed_type = /datum/embedding/bullet/c38/dumdum wound_falloff_tile = -5 embed_falloff_tile = -15 -/datum/embedding/bullet_c38_dumdum +/datum/embedding/bullet/c38/dumdum embed_chance = 75 fall_chance = 3 jostle_chance = 4 @@ -188,4 +188,3 @@ if(reagents & NO_REACT) //first impact on a noncarbon reagents.flags &= ~(NO_REACT) reagents.handle_reactions() - diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index 0952eb0e729..7fc2220e9f7 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -133,17 +133,46 @@ /obj/projectile/bullet/pellet/flechette name = "flechette" icon_state = "flechette" - damage = 3 - wound_bonus = -25 - bare_wound_bonus = 50 - damage_falloff_tile = 0.1 - wound_falloff_tile = -10 + damage = 2 + wound_bonus = 5 + bare_wound_bonus = 5 + armour_penetration = 30 + damage_falloff_tile = -0.2 + wound_falloff_tile = -0.5 speed = 1.2 - ricochet_decay_chance = 0.6 - ricochet_decay_damage = 0.3 - demolition_mod = 10 sharpness = SHARP_POINTY - weak_against_armour = TRUE + embed_type = /datum/embedding/bullet/flechette + +/datum/embedding/bullet/flechette + embed_chance = 100 + fall_chance = 0 + jostle_chance = 20 + ignore_throwspeed_threshold = TRUE + pain_stam_pct = 0.1 + pain_mult = 0.5 + jostle_pain_mult = 1.5 + rip_time = 1 SECONDS + +/obj/projectile/bullet/pellet/flechette/donk + name = "\improper Donk Co. 'Donk Spike' flechette" + desc = "Your internal evisceration! As sponsored by the Donk Corporation!" + icon_state = "flechette_plastic" + damage = 1 // good god its awful + wound_bonus = 20 // but it WILL mulch you if you don't have armor. + bare_wound_bonus = 20 + armour_penetration = 0 + damage_falloff_tile = -0.1 + wound_falloff_tile = -2 + embed_type = /datum/embedding/bullet/flechette_donk // the true power of the donk spike. + +/datum/embedding/bullet/flechette_donk + embed_chance = 100 + fall_chance = 0 + jostle_chance = 50 + ignore_throwspeed_threshold = TRUE + pain_mult = 1 + jostle_pain_mult = 1 + rip_time = 0.5 SECONDS // Mech Scattershot diff --git a/code/modules/projectiles/projectile/energy/radiation.dm b/code/modules/projectiles/projectile/energy/radiation.dm index c9c64922810..7c9889d38d7 100644 --- a/code/modules/projectiles/projectile/energy/radiation.dm +++ b/code/modules/projectiles/projectile/energy/radiation.dm @@ -9,11 +9,10 @@ var/radiation_chance = 30 /obj/projectile/energy/radiation/on_hit(atom/target, blocked, pierce_hit) + . = ..() if (ishuman(target) && prob(radiation_chance)) radiation_pulse(target, max_range = 0, threshold = RAD_FULL_INSULATION) - ..() - /obj/projectile/energy/radiation/weak damage = 9 radiation_chance = 10 diff --git a/code/modules/projectiles/projectile/special/plasma.dm b/code/modules/projectiles/projectile/special/plasma.dm index 5564ba14dab..7da09b56729 100644 --- a/code/modules/projectiles/projectile/special/plasma.dm +++ b/code/modules/projectiles/projectile/special/plasma.dm @@ -15,7 +15,7 @@ . = ..() if(ismineralturf(target)) var/turf/closed/mineral/M = target - M.gets_drilled(firer, FALSE) + M.gets_drilled(firer) if(mine_range) mine_range-- range++ diff --git a/code/modules/reagents/chemistry/holder/mob_life.dm b/code/modules/reagents/chemistry/holder/mob_life.dm index 8c1759bebe7..7975e48f91e 100644 --- a/code/modules/reagents/chemistry/holder/mob_life.dm +++ b/code/modules/reagents/chemistry/holder/mob_life.dm @@ -49,7 +49,7 @@ // If applicable, calculate any toxin-related liver damage // Note: we have to do this AFTER metabolize_reagent, because we want handle_reagent to run before we make the determination. // The order is really important unfortunately. - if(toxin && !liverless && liver && liver.filterToxins && !HAS_TRAIT(owner, TRAIT_TOXINLOVER)) + if(toxin && !liverless && liver && liver.filterToxins && !HAS_TRAIT(owner, TRAIT_TOXINLOVER) && !HAS_TRAIT(owner, TRAIT_TOXIMMUNE)) if(toxin.affected_organ_flags && !(liver.organ_flags & toxin.affected_organ_flags)) //this particular toxin does not affect this type of organ continue diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 5aa8ddf5785..07524c38ff7 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -195,8 +195,8 @@ /obj/machinery/chem_dispenser/proc/display_beaker() var/mutable_appearance/b_o = beaker_overlay || mutable_appearance(icon, "disp_beaker") - b_o.pixel_y = -4 - b_o.pixel_x = -7 + b_o.pixel_w = -7 + b_o.pixel_z = -4 return b_o /obj/machinery/chem_dispenser/proc/work_animation() @@ -677,17 +677,17 @@ var/mutable_appearance/b_o = beaker_overlay || mutable_appearance(icon, "disp_beaker") switch(dir) if(NORTH) - b_o.pixel_y = 7 - b_o.pixel_x = rand(-9, 9) + b_o.pixel_w = rand(-9, 9) + b_o.pixel_z = 7 if(EAST) - b_o.pixel_x = 4 - b_o.pixel_y = rand(-5, 7) + b_o.pixel_w = 4 + b_o.pixel_z = rand(-5, 7) if(WEST) - b_o.pixel_x = -5 - b_o.pixel_y = rand(-5, 7) + b_o.pixel_w = -5 + b_o.pixel_z = rand(-5, 7) else//SOUTH - b_o.pixel_y = -7 - b_o.pixel_x = rand(-9, 9) + b_o.pixel_w = rand(-9, 9) + b_o.pixel_z = -7 return b_o /obj/machinery/chem_dispenser/drinks/fullupgrade //fully ugpraded stock parts, emagged diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index b6d897ca2ae..f9573518321 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -30,6 +30,8 @@ var/printing_total /// The time it takes to print a container var/printing_speed = 0.75 SECONDS + /// Amount of layers which printed pills will be coated in + var/pill_layers = 3 /obj/machinery/chem_master/Initialize(mapload) create_reagents(100) @@ -37,6 +39,7 @@ printable_containers = load_printable_containers() default_container = printable_containers[printable_containers[1]][1] selected_container = default_container + pill_layers = /obj/item/reagent_containers/applicator/pill::layers_remaining register_context() @@ -265,6 +268,7 @@ var/list/data = list() data["maxPrintable"] = MAX_CONTAINER_PRINT_AMOUNT + data["maxPillDuration"] = PILL_MAX_PRINTABLE_LAYERS data["categories"] = list() for(var/category in printable_containers) //make the category @@ -295,6 +299,7 @@ .["isPrinting"] = is_printing .["printingProgress"] = printing_progress .["printingTotal"] = printing_total + .["selectedPillDuration"] = pill_layers //contents of source beaker var/list/beaker_data = null @@ -365,6 +370,11 @@ .["selectedContainerRef"] = REF(selected_container) .["selectedContainerVolume"] = initial(selected_container.volume) + for (var/category in printable_containers) + if (selected_container in printable_containers[category]) + .["selectedContainerCategory"] = category + break + /** * Transfers a single reagent between buffer & beaker * Arguments @@ -456,6 +466,10 @@ update_appearance(UPDATE_OVERLAYS) return TRUE + if ("setPillDuration") + pill_layers = clamp(params["duration"], 0, PILL_MAX_PRINTABLE_LAYERS) + return TRUE + if("selectContainer") var/obj/item/reagent_containers/target = locate(params["ref"]) @@ -555,6 +569,9 @@ item.name = item_name item.reagents.clear_reagents() reagents.trans_to(item, volume_in_each, transferred_by = user) + if (istype(item, /obj/item/reagent_containers/applicator/pill)) + var/obj/item/reagent_containers/applicator/pill/pill = item + pill.layers_remaining = pill_layers printing_progress++ update_appearance(UPDATE_OVERLAYS) diff --git a/code/modules/reagents/chemistry/machinery/chem_separator.dm b/code/modules/reagents/chemistry/machinery/chem_separator.dm index 000d221f92d..2fb91388485 100644 --- a/code/modules/reagents/chemistry/machinery/chem_separator.dm +++ b/code/modules/reagents/chemistry/machinery/chem_separator.dm @@ -120,7 +120,7 @@ if(condenser_installed) . += span_notice("The in-built condenser can facilitate faster cooling but consumes fuel.") else - . += span_notice("You could install a [EXAMINE_HINT("condenser")] for fater cooling.") + . += span_notice("You could install a [EXAMINE_HINT("condenser")] for faster cooling.") . += span_notice("You can [EXAMINE_HINT("examine more")] to see reagent boiling points & fuel properties.") . += span_notice("The whole aparatus can be [EXAMINE_HINT("pried")] apart.") diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm index 9f1ce934790..0bab8a11bba 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm @@ -47,7 +47,8 @@ name = "Natural " + name if(data["boozepwr"]) boozepwr = data["boozepwr"] - addiction_types = list(/datum/addiction/alcohol = 0.05 * boozepwr) + if(boozepwr) // anything other than 0 + LAZYSET(addiction_types, /datum/addiction/alcohol, 0.05 * boozepwr) return ..() /datum/reagent/consumable/ethanol/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 175405211e7..d4003b8034e 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -884,7 +884,7 @@ active_hallucination_weakref = WEAKREF(affected_mob.cause_hallucination(greatest_fear, name, duration = 5 MINUTES, skip_nearby = !overdosed)) else // if they're just some random schmuck, give them random hallucinations - affected_mob.adjust_hallucinations_up_to(4 SECONDS * REM * seconds_per_tick, 20 SECONDS) + affected_mob.adjust_hallucinations_up_to(4 SECONDS * REM * seconds_per_tick, 30 SECONDS) /datum/reagent/drug/syndol/on_mob_end_metabolize(mob/living/affected_mob) . = ..() diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm index 564623de5b7..f4604d477b8 100644 --- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm @@ -496,6 +496,8 @@ Basically, we fill the time between now and 2s from now with hands based off the /datum/reagent/inverse/penthrite/on_mob_dead(mob/living/carbon/affected_mob, seconds_per_tick) . = ..() + if (HAS_TRAIT(affected_mob, TRAIT_SUICIDED)) + return var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART) if(!heart || heart.organ_flags & ORGAN_FAILING) return diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 30757b5cbc3..afbefa1a19b 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1611,7 +1611,7 @@ affected_mob.adjust_confusion(-6 SECONDS * REM * seconds_per_tick) affected_mob.disgust = max(affected_mob.disgust - (6 * REM * seconds_per_tick), 0) if(affected_mob.mob_mood != null && affected_mob.mob_mood.sanity <= SANITY_NEUTRAL) // only take effect if in negative sanity and then... - affected_mob.mob_mood.set_sanity(min(affected_mob.mob_mood.sanity + (5 * REM * seconds_per_tick), SANITY_NEUTRAL)) // set minimum to prevent unwanted spiking over neutral + affected_mob.mob_mood.adjust_sanity(5 * REM * seconds_per_tick, maximum = SANITY_NEUTRAL) // set minimum to prevent unwanted spiking over neutral /datum/reagent/medicine/psicodine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired) . = ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 341e104ba8d..3eeb11a4e3c 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2675,10 +2675,9 @@ /datum/reagent/bz_metabolites/on_mob_life(mob/living/carbon/target, seconds_per_tick, times_fired) . = ..() - if(target.mind) - var/datum/antagonist/changeling/changeling = IS_CHANGELING(target) - if(changeling) - changeling.adjust_chemicals(-4 * REM * seconds_per_tick) //SKYRAT EDIT - BZ-BUFF-VS-LING - ORIGINAL: changeling.adjust_chemicals(-2 * REM * seconds_per_tick) + target.adjust_hallucinations(5 SECONDS * REM * seconds_per_tick) + var/datum/antagonist/changeling/changeling = IS_CHANGELING(target) + changeling?.adjust_chemicals(-4 * REM * seconds_per_tick) //BUBBER EDIT - BZ-BUFF-VS-LING - ORIGINAL: changeling?.adjust_chemicals(-2 * REM * seconds_per_tick) /datum/reagent/pax/peaceborg name = "Synthpax" @@ -3318,6 +3317,7 @@ if (eyes && !IS_ROBOTIC_ORGAN(eyes)) eyes.eye_color_left = color eyes.eye_color_right = color + affected_human.update_body() /datum/reagent/luminescent_fluid/red name = "Red Luminiscent Fluid" diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index d09f1ffdb0a..1dfe802e24e 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -174,11 +174,11 @@ /obj/item/reagent_containers/proc/canconsume(mob/eater, mob/user) if(!iscarbon(eater)) return FALSE - var/mob/living/carbon/C = eater + var/mob/living/carbon/as_carbon = eater var/covered = "" - if(C.is_mouth_covered(ITEM_SLOT_HEAD)) + if(as_carbon.is_mouth_covered(ITEM_SLOT_HEAD)) covered = "headgear" - else if(C.is_mouth_covered(ITEM_SLOT_MASK)) + else if(as_carbon.is_mouth_covered(ITEM_SLOT_MASK)) covered = "mask" if(covered) var/who = (isnull(user) || eater == user) ? "your" : "[eater.p_their()]" diff --git a/code/modules/reagents/reagent_containers/applicator.dm b/code/modules/reagents/reagent_containers/applicator.dm new file mode 100644 index 00000000000..25e6cec8cca --- /dev/null +++ b/code/modules/reagents/reagent_containers/applicator.dm @@ -0,0 +1,48 @@ +/// Generic reagent applicator type for pills and patches +/obj/item/reagent_containers/applicator + name = "generic reagent applicator" + desc = "Report this please." + has_variable_transfer_amount = FALSE + grind_results = list() + /// Action string displayed in vis_message + var/apply_method = "swallow" + /// Does the item get its name changed as volume when its produced + var/rename_with_volume = FALSE + /// How long does it take to apply this item to someone else? + var/application_delay = 3 SECONDS + /// How long does it take to apply this item to self? + var/self_delay = 0 + +/obj/item/reagent_containers/applicator/Initialize(mapload) + . = ..() + if(reagents.total_volume && rename_with_volume) + name += " ([reagents.total_volume]u)" + +/// Consumption effects, must be overriden by children +/obj/item/reagent_containers/applicator/proc/on_consumption(mob/consumer, mob/giver, list/modifiers) + return + +/obj/item/reagent_containers/applicator/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) + if (!ismob(interacting_with)) + return NONE + + var/mob/target_mob = interacting_with + if(!canconsume(target_mob, user)) + return ITEM_INTERACT_BLOCKING + + if(target_mob == user) + target_mob.visible_message(span_notice("[user] attempts to [apply_method] [src].")) + if(self_delay) + if(!do_after(user, self_delay, target_mob)) + return ITEM_INTERACT_BLOCKING + to_chat(target_mob, span_notice("You [apply_method] [src].")) + on_consumption(user, user, modifiers) + return ITEM_INTERACT_SUCCESS + + target_mob.visible_message(span_danger("[user] attempts to force [target_mob] to [apply_method] [src]."), span_userdanger("[user] attempts to force you to [apply_method] [src].")) + if(!do_after(user, CHEM_INTERACT_DELAY(application_delay, user), target_mob)) + return ITEM_INTERACT_BLOCKING + + target_mob.visible_message(span_danger("[user] forces [target_mob] to [apply_method] [src]."), span_userdanger("[user] forces you to [apply_method] [src].")) + on_consumption(target_mob, user, modifiers) + return ITEM_INTERACT_SUCCESS diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm index 2f54bede78c..5b8c92de0fb 100644 --- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm +++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm @@ -228,8 +228,8 @@ intensity_state = "high" ///The froth fountain that we are sticking onto the bottle var/mutable_appearance/froth = mutable_appearance('icons/obj/drinks/drink_effects.dmi', "froth_bottle_[intensity_state]") - froth.pixel_x = offset_x - froth.pixel_y = offset_y + froth.pixel_w = offset_x + froth.pixel_z = offset_y add_overlay(froth) addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, cut_overlay), froth), 2 SECONDS) @@ -625,7 +625,7 @@ list_reagents = list(/datum/reagent/consumable/ethanol/bitters = 30) drink_type = ALCOHOL //allows for single unit dispensing - possible_transfer_amounts = list(1, 2, 3, 4, 5) + possible_transfer_amounts = list(1, 2, 3, 4, 5) amount_per_transfer_from_this = 5 /obj/item/reagent_containers/cup/glass/bottle/curacao @@ -948,7 +948,7 @@ log_bomber(user, "has primed a", src, "for detonation") to_chat(user, span_info("You light [src] on fire.")) - add_overlay(custom_fire_overlay ? custom_fire_overlay : GLOB.fire_overlay) + add_overlay(custom_fire_overlay() || GLOB.fire_overlay) if(!isGlass) addtimer(CALLBACK(src, PROC_REF(explode)), 5 SECONDS) @@ -970,7 +970,7 @@ to_chat(user, span_danger("The flame's spread too far on it!")) return to_chat(user, span_info("You snuff out the flame on [src].")) - cut_overlay(custom_fire_overlay ? custom_fire_overlay : GLOB.fire_overlay) + cut_overlay(custom_fire_overlay() || GLOB.fire_overlay) active = FALSE return return ..() diff --git a/code/modules/reagents/reagent_containers/cups/organ_jar.dm b/code/modules/reagents/reagent_containers/cups/organ_jar.dm index e65f20d3f14..86133ffb1cb 100644 --- a/code/modules/reagents/reagent_containers/cups/organ_jar.dm +++ b/code/modules/reagents/reagent_containers/cups/organ_jar.dm @@ -70,14 +70,13 @@ . = ..() // Draw the organ icon inside the jar, if present if(!isnull(held_organ)) - var/image/organ_img = image(held_organ, src) + var/image/organ_img = image(held_organ, src, layer = FLOAT_LAYER) var/list/icon_dimensions = get_icon_dimensions(held_organ.icon) organ_img.transform = organ_img.transform.Scale( // Make it smaller so it fits JAR_INNER_ICON_SIZE / icon_dimensions["width"], JAR_INNER_ICON_SIZE / icon_dimensions["height"], ) - organ_img.pixel_y -= 3 - organ_img.layer = FLOAT_LAYER + organ_img.pixel_z -= 3 organ_img.plane = FLOAT_PLANE organ_img.blend_mode = BLEND_INSET_OVERLAY . += organ_img diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index 29cfadd745b..39987179411 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -1,4 +1,4 @@ -/obj/item/reagent_containers/pill/patch +/obj/item/reagent_containers/applicator/patch name = "patch" desc = "A chemical patch for touch based applications." icon = 'icons/obj/medical/chemical.dmi' @@ -6,18 +6,19 @@ inhand_icon_state = null possible_transfer_amounts = list() volume = 40 - apply_type = PATCH apply_method = "apply" - self_delay = 30 // three seconds - dissolvable = FALSE + embed_type = /datum/embedding/med_patch + // Quick to apply + application_delay = 1.5 SECONDS + self_delay = 1.5 SECONDS -/obj/item/reagent_containers/pill/patch/canconsume(mob/eater, mob/user) +/obj/item/reagent_containers/applicator/patch/canconsume(mob/eater, mob/user) if(!iscarbon(eater)) return FALSE - if(!ishuman(eater)) - return TRUE - var/mob/living/carbon/human/human_eater = eater - var/obj/item/bodypart/affecting = human_eater.get_bodypart(check_zone(user.zone_selected)) + + var/mob/living/carbon/carbon_eater = eater + var/obj/item/bodypart/affecting = carbon_eater.get_bodypart(check_zone(user.zone_selected)) + if(!affecting) to_chat(user, span_warning("The limb is missing!")) return FALSE @@ -26,27 +27,168 @@ to_chat(user, span_notice("Medicine won't work on an inorganic limb!")) return FALSE - return TRUE // Masks were stopping people from "eating" patches. Thanks, inheritance. + return TRUE -/obj/item/reagent_containers/pill/patch/libital +/obj/item/reagent_containers/applicator/patch/on_consumption(mob/living/carbon/consumer, mob/giver, list/modifiers) + consumer.log_message("Had \a [src] patch applied by [giver], containing the following reagents: [english_list(reagents.reagent_list)].", LOG_GAME) + var/clicked_x = LAZYACCESS(modifiers, ICON_X) + var/clicked_y = LAZYACCESS(modifiers, ICON_Y) + if (isnull(clicked_x)) + clicked_x = ICON_SIZE_X * (0.5 + rand(-5, 5) * 0.05) + else + clicked_x = text2num(clicked_x) + if (isnull(clicked_y)) + clicked_y = ICON_SIZE_Y * (0.5 + rand(-5, 5) * 0.05) + else + clicked_y = text2num(clicked_y) + giver.do_attack_animation(consumer, used_item = src) + var/datum/embedding/med_patch/embed = get_embed() + if (!istype(embed)) + embed = set_embed(/datum/embedding/med_patch) + embed.overlay_x = clicked_x - ICON_SIZE_X * 0.5 + embed.overlay_y = clicked_y - ICON_SIZE_Y * 0.5 + force_embed(consumer, consumer.get_bodypart(check_zone(giver.zone_selected)) || consumer.get_bodypart(BODY_ZONE_CHEST)) + +/datum/embedding/med_patch + embed_chance = 10 + fall_chance = 0 + pain_chance = 0 + jostle_chance = 0 + pain_mult = 0 + jostle_pain_mult = 0 + // Quick to rip off + rip_time = 0.25 SECONDS + ignore_throwspeed_threshold = TRUE + immune_traits = null + /// How many units are transferred per second + var/transfer_per_second = 0.75 + /// Cooldown for reagent messages, prevents spam + COOLDOWN_DECLARE(reagent_message_cd) + // pixel_x and pixel_y for our overlay + var/overlay_x = 0 + var/overlay_y = 0 + /// Direction in which mob was facing when the patch was applied, used for layering and positional adjustments + var/applied_dir = NONE + /// Patch overlay applied to the mob + var/mutable_appearance/patch_overlay + +/datum/embedding/med_patch/set_owner(mob/living/carbon/victim, obj/item/bodypart/target_limb) + . = ..() + overlay_setup() + RegisterSignal(owner, COMSIG_LIVING_IGNITED, PROC_REF(on_ignited)) + RegisterSignal(owner, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_dir_change)) + +/datum/embedding/med_patch/stop_embedding() + if (owner) + UnregisterSignal(owner, list(COMSIG_LIVING_IGNITED, COMSIG_ATOM_DIR_CHANGE)) + if (patch_overlay) + owner.cut_overlay(patch_overlay) + QDEL_NULL(patch_overlay) + return ..() + +/datum/embedding/med_patch/can_embed(atom/movable/source, mob/living/carbon/victim, hit_zone, datum/thrownthing/throwingdatum) + . = ..() + if (!.) + return + var/obj/item/bodypart/affecting = victim.get_bodypart(hit_zone) || victim.bodyparts[1] + if (!IS_ORGANIC_LIMB(affecting)) + return FALSE + return TRUE + +/datum/embedding/med_patch/proc/on_ignited(datum/source) + SIGNAL_HANDLER + if (!(parent.resistance_flags & FLAMMABLE)) + return + if (ishuman(owner)) + var/mob/living/carbon/human/as_human = owner + if (as_human.get_thermal_protection() >= FIRE_IMMUNITY_MAX_TEMP_PROTECT) + return + INVOKE_ASYNC(src, PROC_REF(fall_out)) + qdel(parent) + +/// Create a patch overlay and add it to the mob +/datum/embedding/med_patch/proc/overlay_setup() + applied_dir = owner.dir + patch_overlay = mutable_appearance(parent.icon, parent.icon_state, FLOAT_LAYER, parent, appearance_flags = KEEP_APART|RESET_COLOR) + patch_overlay.color = parent.color + if (parent.cached_color_filter) + patch_overlay = filter_appearance_recursive(patch_overlay, parent.cached_color_filter) + patch_overlay.transform *= 0.5 + patch_overlay.pixel_w = overlay_x + patch_overlay.pixel_z = overlay_y + owner.add_overlay(patch_overlay) + +/// Changes visual position of the patch based on owner's rotation +/datum/embedding/med_patch/proc/on_dir_change(datum/source, old_dir, new_dir) + SIGNAL_HANDLER + + owner.cut_overlay(patch_overlay) + if (new_dir == applied_dir) + patch_overlay.pixel_w = overlay_x + patch_overlay.layer = FLOAT_LAYER + owner.add_overlay(patch_overlay) + return + + if (new_dir == REVERSE_DIR(applied_dir)) + patch_overlay.pixel_w = -overlay_x + patch_overlay.layer = BELOW_MOB_LAYER + owner.add_overlay(patch_overlay) + return + + var/check_dir = EAST + var/check_new_dir = SOUTH + if (applied_dir & (NORTH|SOUTH)) + check_dir = NORTH + check_new_dir = EAST + + // Turn ourselves based on how we were placed originally + var/dir_sign = (applied_dir & check_dir) + if (overlay_x >= 0) + dir_sign = !dir_sign + if (new_dir & check_new_dir) + dir_sign = !dir_sign + + // 0.5 multiplier to fake perspective + patch_overlay.pixel_w = overlay_x * (dir_sign ? 0.5 : -0.5) + patch_overlay.layer = dir_sign ? FLOAT_LAYER : BELOW_MOB_LAYER + owner.add_overlay(patch_overlay) + return + +/datum/embedding/med_patch/process_effect(seconds_per_tick) + if (HAS_TRAIT(owner, TRAIT_STASIS)) + return + + if (!parent.reagents.total_volume) + fall_out() + qdel(parent) + return TRUE + + var/show_message = FALSE + if (COOLDOWN_FINISHED(src, reagent_message_cd)) + show_message = TRUE + COOLDOWN_START(src, reagent_message_cd, PATCH_MESSAGE_COOLDOWN) + + parent.reagents.trans_to(owner, transfer_per_second, methods = PATCH, show_message = show_message) + +/obj/item/reagent_containers/applicator/patch/libital name = "libital patch (brute)" desc = "A pain reliever. Does minor liver damage. Diluted with Granibitaluri." list_reagents = list(/datum/reagent/medicine/c2/libital = 2, /datum/reagent/medicine/granibitaluri = 8) //10 iterations icon_state = "bandaid_brute" -/obj/item/reagent_containers/pill/patch/aiuri +/obj/item/reagent_containers/applicator/patch/aiuri name = "aiuri patch (burn)" desc = "Helps with burn injuries. Does minor eye damage. Diluted with Granibitaluri." list_reagents = list(/datum/reagent/medicine/c2/aiuri = 2, /datum/reagent/medicine/granibitaluri = 8) icon_state = "bandaid_burn" -/obj/item/reagent_containers/pill/patch/synthflesh +/obj/item/reagent_containers/applicator/patch/synthflesh name = "synthflesh patch" desc = "Helps with brute and burn injuries. Slightly toxic." list_reagents = list(/datum/reagent/medicine/c2/synthflesh = 20) icon_state = "bandaid_both" -/obj/item/reagent_containers/pill/patch/ondansetron +/obj/item/reagent_containers/applicator/patch/ondansetron name = "ondansetron patch" desc = "Alleviates nausea. May cause drowsiness." list_reagents = list(/datum/reagent/medicine/ondansetron = 10) @@ -54,43 +196,43 @@ // Patch styles for chem master -/obj/item/reagent_containers/pill/patch/style +/obj/item/reagent_containers/applicator/patch/style icon_state = "bandaid_blank" -/obj/item/reagent_containers/pill/patch/style/brute +/obj/item/reagent_containers/applicator/patch/style/brute icon_state = "bandaid_brute_2" -/obj/item/reagent_containers/pill/patch/style/burn +/obj/item/reagent_containers/applicator/patch/style/burn icon_state = "bandaid_burn_2" -/obj/item/reagent_containers/pill/patch/style/bruteburn +/obj/item/reagent_containers/applicator/patch/style/bruteburn icon_state = "bandaid_both" -/obj/item/reagent_containers/pill/patch/style/toxin +/obj/item/reagent_containers/applicator/patch/style/toxin icon_state = "bandaid_toxin_2" -/obj/item/reagent_containers/pill/patch/style/oxygen +/obj/item/reagent_containers/applicator/patch/style/oxygen icon_state = "bandaid_suffocation_2" -/obj/item/reagent_containers/pill/patch/style/omni +/obj/item/reagent_containers/applicator/patch/style/omni icon_state = "bandaid_mix" -/obj/item/reagent_containers/pill/patch/style/bruteplus +/obj/item/reagent_containers/applicator/patch/style/bruteplus icon_state = "bandaid_brute" -/obj/item/reagent_containers/pill/patch/style/burnplus +/obj/item/reagent_containers/applicator/patch/style/burnplus icon_state = "bandaid_burn" -/obj/item/reagent_containers/pill/patch/style/toxinplus +/obj/item/reagent_containers/applicator/patch/style/toxinplus icon_state = "bandaid_toxin" -/obj/item/reagent_containers/pill/patch/style/oxygenplus +/obj/item/reagent_containers/applicator/patch/style/oxygenplus icon_state = "bandaid_suffocation" -/obj/item/reagent_containers/pill/patch/style/monkey +/obj/item/reagent_containers/applicator/patch/style/monkey icon_state = "bandaid_monke" -/obj/item/reagent_containers/pill/patch/style/clown +/obj/item/reagent_containers/applicator/patch/style/clown icon_state = "bandaid_clown" -/obj/item/reagent_containers/pill/patch/style/one +/obj/item/reagent_containers/applicator/patch/style/one icon_state = "bandaid_1" -/obj/item/reagent_containers/pill/patch/style/two +/obj/item/reagent_containers/applicator/patch/style/two icon_state = "bandaid_2" -/obj/item/reagent_containers/pill/patch/style/three +/obj/item/reagent_containers/applicator/patch/style/three icon_state = "bandaid_3" -/obj/item/reagent_containers/pill/patch/style/four +/obj/item/reagent_containers/applicator/patch/style/four icon_state = "bandaid_4" -/obj/item/reagent_containers/pill/patch/style/exclamation +/obj/item/reagent_containers/applicator/patch/style/exclamation icon_state = "bandaid_exclaimationpoint" -/obj/item/reagent_containers/pill/patch/style/question +/obj/item/reagent_containers/applicator/patch/style/question icon_state = "bandaid_questionmark" -/obj/item/reagent_containers/pill/patch/style/colonthree +/obj/item/reagent_containers/applicator/patch/style/colonthree icon_state = "bandaid_colonthree" diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index f407a75030a..c8683cb6eae 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -1,4 +1,4 @@ -/obj/item/reagent_containers/pill +/obj/item/reagent_containers/applicator/pill name = "pill" desc = "A tablet or capsule." icon = 'icons/obj/medical/chemical.dmi' @@ -7,57 +7,54 @@ worn_icon_state = "nothing" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - has_variable_transfer_amount = FALSE volume = 50 - grind_results = list() - var/apply_type = INGEST - var/apply_method = "swallow" - var/rename_with_volume = FALSE - var/self_delay = 0 //pills are instant, this is because patches inheret their aplication from pills - var/dissolvable = TRUE + /// How many "layers" we have remaining. Each layer equates to 1 second of digestion + var/layers_remaining = 3 -/obj/item/reagent_containers/pill/Initialize(mapload) +/obj/item/reagent_containers/applicator/pill/Initialize(mapload) . = ..() if(!icon_state) icon_state = "pill[rand(1,20)]" - if(reagents.total_volume && rename_with_volume) - name += " ([reagents.total_volume]u)" - if(apply_type == INGEST) - AddComponent(/datum/component/germ_sensitive, mapload) + AddComponent(/datum/component/germ_sensitive, mapload) + RegisterSignal(src, COMSIG_ATOM_STOMACH_DIGESTED, PROC_REF(on_digestion)) + RegisterSignal(src, COMSIG_ATOM_REAGENT_EXAMINE, PROC_REF(reagent_special_examine)) + +/obj/item/reagent_containers/applicator/pill/proc/reagent_special_examine(datum/source, mob/user, list/examine_list, can_see_insides = FALSE) + SIGNAL_HANDLER + if (layers_remaining) + examine_list += span_notice("Its sugary shell will last approximately [layers_remaining] seconds in a human stomach.") + else + examine_list += span_warning("Its shell is completely dissolved!") ///Runs the consumption code, can be overriden for special effects -/obj/item/reagent_containers/pill/proc/on_consumption(mob/consumer, mob/giver) +/obj/item/reagent_containers/applicator/pill/on_consumption(mob/living/consumer, mob/giver, list/modifiers) if(icon_state == "pill4" && prob(5)) //you take the red pill - you stay in Wonderland, and I show you how deep the rabbit hole goes addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), consumer, span_notice("[pick(strings(REDPILL_FILE, "redpill_questions"))]")), 5 SECONDS) - if(apply_type == INGEST) - SEND_SIGNAL(consumer, COMSIG_LIVING_PILL_CONSUMED, src, giver) - SEND_SIGNAL(src, COMSIG_PILL_CONSUMED, eater = consumer, feeder = giver) + SEND_SIGNAL(consumer, COMSIG_LIVING_PILL_CONSUMED, src, giver) + SEND_SIGNAL(src, COMSIG_PILL_CONSUMED, eater = consumer, feeder = giver) + + if (iscarbon(consumer) && layers_remaining) + var/mob/living/carbon/as_carbon = consumer + var/obj/item/organ/stomach/stomach = as_carbon.get_organ_by_type(/obj/item/organ/stomach) + if (stomach) + if (prob(max(0, 100 * (layers_remaining - PILL_MAX_TASTE_LAYERS)))) + consumer.taste_list(reagents) + else if (!consumer.check_tasting_blocks()) + consumer.send_taste_message("starchy sugar") + stomach.consume_thing(src) + return + if(reagents.total_volume) - reagents.trans_to(consumer, reagents.total_volume, transferred_by = giver, methods = apply_type) + reagents.trans_to(consumer, reagents.total_volume, transferred_by = giver, methods = INGEST) qdel(src) + return -/obj/item/reagent_containers/pill/interact_with_atom(atom/target, mob/living/user, list/modifiers) - if (ismob(target)) - var/mob/target_mob = target - if(!canconsume(target_mob, user)) - return ITEM_INTERACT_BLOCKING - if(target_mob == user) - target_mob.visible_message(span_notice("[user] attempts to [apply_method] [src].")) - if(self_delay) - if(!do_after(user, self_delay, target_mob)) - return ITEM_INTERACT_BLOCKING - to_chat(target_mob, span_notice("You [apply_method] [src].")) - else - target_mob.visible_message(span_danger("[user] attempts to force [target_mob] to [apply_method] [src]."), \ - span_userdanger("[user] attempts to force you to [apply_method] [src].")) - if(!do_after(user, CHEM_INTERACT_DELAY(3 SECONDS, user), target_mob)) - return ITEM_INTERACT_BLOCKING - target_mob.visible_message(span_danger("[user] forces [target_mob] to [apply_method] [src]."), \ - span_userdanger("[user] forces you to [apply_method] [src].")) - on_consumption(target_mob, user) - return ITEM_INTERACT_SUCCESS +/obj/item/reagent_containers/applicator/pill/interact_with_atom(atom/target, mob/living/user, list/modifiers) + . = ..() + if (.) + return - if(!dissolvable || !target.is_refillable()) + if(!target.is_refillable()) return NONE if(target.is_drainable() && !target.reagents.total_volume) @@ -73,129 +70,207 @@ qdel(src) return ITEM_INTERACT_SUCCESS +/obj/item/reagent_containers/applicator/pill/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + if (.) + return + + var/obj/item/reagent_containers/container = null + var/use_verb = null + if (istype(tool, /obj/item/reagent_containers/dropper)) + container = tool + use_verb = "squirt" + else if (istype(tool, /obj/item/reagent_containers/cup)) + container = tool + if (!container.is_drainable()) + to_chat(user, span_warning("You cannot pour [container]'s contents onto [src]!")) + return ITEM_INTERACT_BLOCKING + use_verb = "pour" + + if (!container) + return NONE + + var/datum/reagent/consumable/sugar/sugar = container.reagents.has_reagent(/datum/reagent/consumable/sugar) + if (sugar) + if (layers_remaining >= PILL_MAX_LAYERS) // Full minute + to_chat(user, span_warning("[src]'s coating is too thick for you to cover it in any more sugar!")) + return ITEM_INTERACT_BLOCKING + var/to_apply = floor(min(container.amount_per_transfer_from_this, sugar.volume, PILL_MAX_LAYERS - layers_remaining)) + container.reagents.remove_reagent(/datum/reagent/consumable/sugar, to_apply) + layers_remaining += to_apply + to_chat(user, span_notice("You [use_verb] some of [container]'s contents onto [src], thickening its sugary shell.")) + return ITEM_INTERACT_SUCCESS + + var/datum/reagent/water/water = container.reagents.has_reagent(/datum/reagent/water) + if (!water) + return ..() + + if (!layers_remaining) // No coating + to_chat(user, span_warning("[src] doesn't have any more external layers to dissolve!")) + return ITEM_INTERACT_BLOCKING + + var/to_apply = floor(min(container.amount_per_transfer_from_this, water.volume, layers_remaining)) + container.reagents.remove_reagent(/datum/reagent/water, to_apply) + layers_remaining -= to_apply + to_chat(user, span_notice("You [use_verb] some of [container]'s contents onto [src], dissolving its sugary shell.")) + return ITEM_INTERACT_SUCCESS + +/obj/item/reagent_containers/applicator/pill/proc/on_digestion(datum/source, obj/item/organ/stomach/stomach, mob/living/carbon/owner, seconds_per_tick) + SIGNAL_HANDLER + layers_remaining -= seconds_per_tick + if (layers_remaining >= seconds_per_tick) + return COMPONENT_CANCEL_DIGESTION + + // SSmobs.wait is 2 seconds (as of writing this), so we can end up with a delay of 1 second. In this case, use a timer + if (layers_remaining > 0) + // Using weakrefs because the mob can get deleted in the meanwhile and leave the pill behind + addtimer(CALLBACK(src, PROC_REF(finish_digesting), WEAKREF(stomach), WEAKREF(owner)), layers_remaining SECONDS) + return COMPONENT_CANCEL_DIGESTION + + // I think we should log this in case of horrible shenanigans + owner.log_message("Had \a [src] pill dissolve in [owner.p_their()] stomach, containing the following reagents: [english_list(reagents.reagent_list)].", LOG_GAME) + if(reagents.total_volume) + reagents.trans_to(owner, reagents.total_volume, methods = INGEST, show_message = FALSE) + qdel(src) + return COMPONENT_CANCEL_DIGESTION + +/obj/item/reagent_containers/applicator/pill/proc/finish_digesting(datum/weakref/stomach_ref, datum/weakref/owner_ref) + var/obj/item/organ/stomach/stomach = stomach_ref.resolve() + var/mob/living/carbon/owner = owner_ref.resolve() + if (!owner || !stomach) + return + + // Whenever stomach is inside of a mob, its contents are also moved to the mob, so we check for owner as our loc + if (loc != owner || stomach.owner != owner || stomach.loc != owner) + return + + owner.log_message("Had \a [src] pill dissolve in [owner.p_their()] stomach, containing the following reagents: [english_list(reagents.reagent_list)].", LOG_GAME) + if(reagents.total_volume) + reagents.trans_to(owner, reagents.total_volume, methods = INGEST) + qdel(src) + /* * On accidental consumption, consume the pill */ -/obj/item/reagent_containers/pill/on_accidental_consumption(mob/living/carbon/victim, mob/living/carbon/user, obj/item/source_item, discover_after = FALSE) +/obj/item/reagent_containers/applicator/pill/on_accidental_consumption(mob/living/carbon/victim, mob/living/carbon/user, obj/item/source_item, discover_after = FALSE) to_chat(victim, span_warning("You swallow something small. [source_item ? "Was that in [source_item]?" : ""]")) - reagents?.trans_to(victim, reagents.total_volume, transferred_by = user, methods = INGEST) - qdel(src) - return discover_after + on_consumption(victim, user) + return FALSE -/obj/item/reagent_containers/pill/tox +/obj/item/reagent_containers/applicator/pill/tox name = "toxins pill" desc = "Highly toxic." icon_state = "pill5" list_reagents = list(/datum/reagent/toxin = 50) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/cyanide +/obj/item/reagent_containers/applicator/pill/cyanide name = "cyanide pill" desc = "Don't swallow this." icon_state = "pill5" list_reagents = list(/datum/reagent/toxin/cyanide = 50) -/obj/item/reagent_containers/pill/adminordrazine +/obj/item/reagent_containers/applicator/pill/adminordrazine name = "adminordrazine pill" desc = "It's magic. We don't have to explain it." icon_state = "pill16" list_reagents = list(/datum/reagent/medicine/adminordrazine = 50) -/obj/item/reagent_containers/pill/morphine +/obj/item/reagent_containers/applicator/pill/morphine name = "morphine pill" desc = "Commonly used to treat insomnia." icon_state = "pill8" list_reagents = list(/datum/reagent/medicine/morphine = 30) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/stimulant +/obj/item/reagent_containers/applicator/pill/stimulant name = "stimulant pill" desc = "Often taken by overworked employees, athletes, and the inebriated. You'll snap to attention immediately!" icon_state = "pill19" list_reagents = list(/datum/reagent/medicine/ephedrine = 10, /datum/reagent/medicine/antihol = 10, /datum/reagent/consumable/coffee = 30) -/obj/item/reagent_containers/pill/salbutamol +/obj/item/reagent_containers/applicator/pill/salbutamol name = "salbutamol pill" desc = "Used to treat oxygen deprivation." icon_state = "pill16" list_reagents = list(/datum/reagent/medicine/salbutamol = 30) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/multiver +/obj/item/reagent_containers/applicator/pill/multiver name = "multiver pill" desc = "Neutralizes many common toxins and scales with unique medicine in the system. Diluted with granibitaluri." icon_state = "pill17" list_reagents = list(/datum/reagent/medicine/c2/multiver = 5, /datum/reagent/medicine/granibitaluri = 5) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/epinephrine +/obj/item/reagent_containers/applicator/pill/epinephrine name = "epinephrine pill" desc = "Used to stabilize patients." icon_state = "pill5" list_reagents = list(/datum/reagent/medicine/epinephrine = 15) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/mannitol +/obj/item/reagent_containers/applicator/pill/mannitol name = "mannitol pill" desc = "Used to treat brain damage." icon_state = "pill17" list_reagents = list(/datum/reagent/medicine/mannitol = 15) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/sansufentanyl +/obj/item/reagent_containers/applicator/pill/sansufentanyl name = "sansufentanyl pill" desc = "Used to treat Hereditary Manifold Sickness. Temporary side effects include - nausea, dizziness, impaired motor coordination." icon_state = "pill19" list_reagents = list(/datum/reagent/medicine/sansufentanyl = 5) //Lower quantity mannitol pills (50u pills heal 250 brain damage, 5u pills heal 25) -/obj/item/reagent_containers/pill/mannitol/braintumor +/obj/item/reagent_containers/applicator/pill/mannitol/braintumor desc = "Used to treat symptoms for brain tumors." list_reagents = list(/datum/reagent/medicine/mannitol = 5) -/obj/item/reagent_containers/pill/mutadone +/obj/item/reagent_containers/applicator/pill/mutadone name = "mutadone pill" desc = "Used to treat genetic damage." icon_state = "pill20" list_reagents = list(/datum/reagent/medicine/mutadone = 5) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/salicylic +/obj/item/reagent_containers/applicator/pill/salicylic name = "salicylic acid pill" desc = "Used to dull pain." icon_state = "pill9" list_reagents = list(/datum/reagent/medicine/sal_acid = 24) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/oxandrolone +/obj/item/reagent_containers/applicator/pill/oxandrolone name = "oxandrolone pill" desc = "Used to stimulate burn healing." icon_state = "pill11" list_reagents = list(/datum/reagent/medicine/oxandrolone = 24) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/insulin +/obj/item/reagent_containers/applicator/pill/insulin name = "insulin pill" desc = "Handles hyperglycaemic coma." icon_state = "pill18" list_reagents = list(/datum/reagent/medicine/insulin = 50) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/psicodine +/obj/item/reagent_containers/applicator/pill/psicodine name = "psicodine pill" desc = "Used to treat mental instability and phobias." list_reagents = list(/datum/reagent/medicine/psicodine = 10) icon_state = "pill22" rename_with_volume = TRUE -/obj/item/reagent_containers/pill/penacid +/obj/item/reagent_containers/applicator/pill/penacid name = "pentetic acid pill" desc = "Used to expunge radiation and toxins." list_reagents = list(/datum/reagent/medicine/pen_acid = 10) icon_state = "pill22" rename_with_volume = TRUE -/obj/item/reagent_containers/pill/neurine +/obj/item/reagent_containers/applicator/pill/neurine name = "neurine pill" desc = "Used to treat non-severe mental traumas." list_reagents = list(/datum/reagent/medicine/neurine = 10) @@ -203,7 +278,7 @@ rename_with_volume = TRUE ///////////////////////////////////////// this pill is used only in a legion mob drop -/obj/item/reagent_containers/pill/shadowtoxin +/obj/item/reagent_containers/applicator/pill/shadowtoxin name = "black pill" desc = "I wouldn't eat this if I were you." icon_state = "pill9" @@ -211,21 +286,21 @@ list_reagents = list(/datum/reagent/mutationtoxin/shadow = 10) ///////////////////////////////////////// Psychologist inventory pills -/obj/item/reagent_containers/pill/happinesspsych +/obj/item/reagent_containers/applicator/pill/happinesspsych name = "mood stabilizer pill" desc = "Used to temporarily alleviate anxiety and depression, take only as prescribed." list_reagents = list(/datum/reagent/drug/happiness = 5) icon_state = "pill_happy" rename_with_volume = TRUE -/obj/item/reagent_containers/pill/paxpsych +/obj/item/reagent_containers/applicator/pill/paxpsych name = "pacification pill" desc = "Used to temporarily suppress violent, homicidal, or suicidal behavior in patients." list_reagents = list(/datum/reagent/pax = 5) icon_state = "pill12" rename_with_volume = TRUE -/obj/item/reagent_containers/pill/lsdpsych +/obj/item/reagent_containers/applicator/pill/lsdpsych name = "antipsychotic pill" desc = "Talk to your healthcare provider immediately if hallucinations worsen or new hallucinations emerge." list_reagents = list(/datum/reagent/toxin/mindbreaker = 5) @@ -233,35 +308,35 @@ rename_with_volume = TRUE //////////////////////////////////////// drugs -/obj/item/reagent_containers/pill/zoom +/obj/item/reagent_containers/applicator/pill/zoom name = "yellow pill" desc = "A poorly made canary-yellow pill; it is slightly crumbly." list_reagents = list(/datum/reagent/medicine/synaptizine = 10, /datum/reagent/drug/nicotine = 10, /datum/reagent/drug/methamphetamine = 1) icon_state = "pill7" -/obj/item/reagent_containers/pill/happy +/obj/item/reagent_containers/applicator/pill/happy name = "happy pill" desc = "They have little happy faces on them, and they smell like marker pens." list_reagents = list(/datum/reagent/consumable/sugar = 10, /datum/reagent/drug/space_drugs = 10) icon_state = "pill_happy" -/obj/item/reagent_containers/pill/lsd +/obj/item/reagent_containers/applicator/pill/lsd name = "sunshine pill" desc = "Engraved on this split-coloured pill is a half-sun, half-moon." list_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 15, /datum/reagent/toxin/mindbreaker = 15) icon_state = "pill14" -/obj/item/reagent_containers/pill/aranesp +/obj/item/reagent_containers/applicator/pill/aranesp name = "smooth pill" desc = "This blue pill feels slightly moist." list_reagents = list(/datum/reagent/drug/aranesp = 10) icon_state = "pill3" ///Black and white pills that spawn in maintenance and have random reagent contents -/obj/item/reagent_containers/pill/maintenance +/obj/item/reagent_containers/applicator/pill/maintenance name = "maintenance pill" desc = "A strange pill found in the depths of maintenance." icon_state = "pill21" @@ -269,46 +344,46 @@ var/static/list/descs = list("Your feeling is telling you no, but...","Drugs are expensive, you can't afford not to eat any pills that you find."\ , "Surely, there's no way this could go bad.", "Winners don't do dr- oh what the heck!", "Free pills? At no cost, how could I lose?") -/obj/item/reagent_containers/pill/maintenance/Initialize(mapload) +/obj/item/reagent_containers/applicator/pill/maintenance/Initialize(mapload) list_reagents = list(get_random_reagent_id() = rand(10,50)) //list_reagents is called before init, because init generates the reagents using list_reagents . = ..() name = pick(names) if(prob(30)) desc = pick(descs) -/obj/item/reagent_containers/pill/maintenance/achievement/on_consumption(mob/consumer, mob/user) +/obj/item/reagent_containers/applicator/pill/maintenance/achievement/on_consumption(mob/consumer, mob/user) . = ..() consumer.client?.give_award(/datum/award/score/maintenance_pill, consumer) -/obj/item/reagent_containers/pill/potassiodide +/obj/item/reagent_containers/applicator/pill/potassiodide name = "potassium iodide pill" desc = "Used to reduce low radiation damage very effectively." icon_state = "pill11" list_reagents = list(/datum/reagent/medicine/potass_iodide = 15) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/probital +/obj/item/reagent_containers/applicator/pill/probital name = "Probital pill" desc = "Used to treat brute damage of minor and moderate severity.The carving in the pill says 'Eat before ingesting'. Causes fatigue and diluted with granibitaluri." icon_state = "pill12" list_reagents = list(/datum/reagent/medicine/c2/probital = 5, /datum/reagent/medicine/granibitaluri = 10) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/iron +/obj/item/reagent_containers/applicator/pill/iron name = "iron pill" desc = "Used to reduce bloodloss slowly." icon_state = "pill8" list_reagents = list(/datum/reagent/iron = 30) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/gravitum +/obj/item/reagent_containers/applicator/pill/gravitum name = "gravitum pill" desc = "Used in weight loss. In a way." icon_state = "pill8" list_reagents = list(/datum/reagent/gravitum = 5) rename_with_volume = TRUE -/obj/item/reagent_containers/pill/ondansetron +/obj/item/reagent_containers/applicator/pill/ondansetron name = "ondansetron pill" desc = "Alleviates nausea. May cause drowsiness." icon_state = "pill11" @@ -316,51 +391,51 @@ // Pill styles for chem master -/obj/item/reagent_containers/pill/style +/obj/item/reagent_containers/applicator/pill/style icon_state = "pill0" -/obj/item/reagent_containers/pill/style/purplered +/obj/item/reagent_containers/applicator/pill/style/purplered icon_state = "pill1" -/obj/item/reagent_containers/pill/style/greenwhite +/obj/item/reagent_containers/applicator/pill/style/greenwhite icon_state = "pill2" -/obj/item/reagent_containers/pill/style/teal +/obj/item/reagent_containers/applicator/pill/style/teal icon_state = "pill3" -/obj/item/reagent_containers/pill/style/red +/obj/item/reagent_containers/applicator/pill/style/red icon_state = "pill4" -/obj/item/reagent_containers/pill/style/redwhite +/obj/item/reagent_containers/applicator/pill/style/redwhite icon_state = "pill5" -/obj/item/reagent_containers/pill/style/tealbrown +/obj/item/reagent_containers/applicator/pill/style/tealbrown icon_state = "pill6" -/obj/item/reagent_containers/pill/style/yellowflat +/obj/item/reagent_containers/applicator/pill/style/yellowflat icon_state = "pill7" -/obj/item/reagent_containers/pill/style/tealflat +/obj/item/reagent_containers/applicator/pill/style/tealflat icon_state = "pill8" -/obj/item/reagent_containers/pill/style/whiteflat +/obj/item/reagent_containers/applicator/pill/style/whiteflat icon_state = "pill9" -/obj/item/reagent_containers/pill/style/purpleflat +/obj/item/reagent_containers/applicator/pill/style/purpleflat icon_state = "pill10" -/obj/item/reagent_containers/pill/style/limelat +/obj/item/reagent_containers/applicator/pill/style/limelat icon_state = "pill11" -/obj/item/reagent_containers/pill/style/redflat +/obj/item/reagent_containers/applicator/pill/style/redflat icon_state = "pill12" -/obj/item/reagent_containers/pill/style/greenpurpleflat +/obj/item/reagent_containers/applicator/pill/style/greenpurpleflat icon_state = "pill13" -/obj/item/reagent_containers/pill/style/yellowpurpleflat +/obj/item/reagent_containers/applicator/pill/style/yellowpurpleflat icon_state = "pill14" -/obj/item/reagent_containers/pill/style/redyellowflat +/obj/item/reagent_containers/applicator/pill/style/redyellowflat icon_state = "pill15" -/obj/item/reagent_containers/pill/style/bluetealflat +/obj/item/reagent_containers/applicator/pill/style/bluetealflat icon_state = "pill16" -/obj/item/reagent_containers/pill/style/greenlimeflat +/obj/item/reagent_containers/applicator/pill/style/greenlimeflat icon_state = "pill17" -/obj/item/reagent_containers/pill/style/white +/obj/item/reagent_containers/applicator/pill/style/white icon_state = "pill18" -/obj/item/reagent_containers/pill/style/whitered +/obj/item/reagent_containers/applicator/pill/style/whitered icon_state = "pill19" -/obj/item/reagent_containers/pill/style/purpleyellow +/obj/item/reagent_containers/applicator/pill/style/purpleyellow icon_state = "pill20" -/obj/item/reagent_containers/pill/style/blackwhite +/obj/item/reagent_containers/applicator/pill/style/blackwhite icon_state = "pill21" -/obj/item/reagent_containers/pill/style/limewhite +/obj/item/reagent_containers/applicator/pill/style/limewhite icon_state = "pill22" -/obj/item/reagent_containers/pill/style/happy +/obj/item/reagent_containers/applicator/pill/style/happy icon_state = "pill_happy" diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 045f156a095..2f499c1441b 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -100,8 +100,8 @@ holder.master = src holder.on_attach() assembliesoverlay = holder - assembliesoverlay.pixel_x += 6 - assembliesoverlay.pixel_y += 1 + assembliesoverlay.pixel_w += 6 + assembliesoverlay.pixel_z += 1 add_overlay(assembliesoverlay) RegisterSignal(src, COMSIG_IGNITER_ACTIVATE, PROC_REF(rig_boom)) log_bomber(user, "attached [holder.name] to ", src) diff --git a/code/modules/recycling/conveyor.dm b/code/modules/recycling/conveyor.dm index 9e03dc98aea..f1b0637fb1e 100644 --- a/code/modules/recycling/conveyor.dm +++ b/code/modules/recycling/conveyor.dm @@ -69,7 +69,8 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) . = ..() if(inverted) . += span_notice("It is currently set to go in reverse.") - . += "\nLeft-click with a wrench to rotate." + . += "\nLeft-click with a wrench to rotate clockwise." + . += "Right-click with a wrench to rotate counterclockwise." . += "Left-click with a screwdriver to invert its direction." . += "Right-click with a screwdriver to flip its belt around." . += "Left-click with a multitool to toggle whether this conveyor receives power via cable. Toggling connects and disconnects." @@ -81,7 +82,8 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) context[SCREENTIP_CONTEXT_LMB] = "Extend current conveyor belt" return CONTEXTUAL_SCREENTIP_SET if(held_item?.tool_behaviour == TOOL_WRENCH) - context[SCREENTIP_CONTEXT_LMB] = "Rotate conveyor belt" + context[SCREENTIP_CONTEXT_LMB] = "Rotate conveyor belt clockwise" + context[SCREENTIP_CONTEXT_RMB] = "Rotate conveyor belt counterclockwise" return CONTEXTUAL_SCREENTIP_SET if(held_item?.tool_behaviour == TOOL_SCREWDRIVER) context[SCREENTIP_CONTEXT_LMB] = "Invert conveyor belt" @@ -343,6 +345,11 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) update_move_direction() to_chat(user, span_notice("You flip [src]'s belt [flipped ? "around" : "back to normal"].")) + else if(attacking_item.tool_behaviour == TOOL_WRENCH) + attacking_item.play_tool_sound(src) + setDir(turn(dir, 45)) + to_chat(user, span_notice("You rotate [src].")) + else if(!user.combat_mode) user.transferItemToLoc(attacking_item, drop_location()) diff --git a/code/modules/religion/burdened/psyker.dm b/code/modules/religion/burdened/psyker.dm index b2e5724778c..e30d65cb0b5 100644 --- a/code/modules/religion/burdened/psyker.dm +++ b/code/modules/religion/burdened/psyker.dm @@ -341,7 +341,7 @@ times_dry_fired = 0 var/turf/target_turf = get_offset_target_turf(get_ranged_target_turf(owner, owner.dir, 7), dx = rand(-1, 1), dy = rand(-1, 1)) held_gun.process_fire(target_turf, owner, TRUE, null, pick(GLOB.all_body_zones)) - held_gun.semicd = FALSE + held_gun.fire_cd = FALSE /datum/action/cooldown/spell/charged/psychic_booster name = "Psychic Booster" diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm index 58209cac74a..503d1f850c0 100644 --- a/code/modules/religion/religion_sects.dm +++ b/code/modules/religion/religion_sects.dm @@ -104,26 +104,29 @@ /// Replaces the bible's bless mechanic. Return TRUE if you want to not do the brain hit. /datum/religion_sect/proc/sect_bless(mob/living/target, mob/living/chap) if(!ishuman(target)) - return FALSE + return BLESSING_FAILED + var/mob/living/carbon/human/blessed = target for(var/obj/item/bodypart/bodypart as anything in blessed.bodyparts) if(IS_ROBOTIC_LIMB(bodypart)) to_chat(chap, span_warning("[GLOB.deity] refuses to heal this metallic taint!")) - return TRUE + return BLESSING_IGNORED var/heal_amt = 10 var/list/hurt_limbs = blessed.get_damaged_bodyparts(1, 1, BODYTYPE_ORGANIC) - if(hurt_limbs.len) - for(var/X in hurt_limbs) - var/obj/item/bodypart/affecting = X - if(affecting.heal_damage(heal_amt, heal_amt, required_bodytype = BODYTYPE_ORGANIC)) - blessed.update_damage_overlays() - blessed.visible_message(span_notice("[chap] heals [blessed] with the power of [GLOB.deity]!")) - to_chat(blessed, span_boldnotice("May the power of [GLOB.deity] compel you to be healed!")) - playsound(chap, SFX_PUNCH, 25, TRUE, -1) - blessed.add_mood_event("blessing", /datum/mood_event/blessing) - return TRUE + if(!length(hurt_limbs)) + return BLESSING_IGNORED + + for(var/obj/item/bodypart/affecting as anything in hurt_limbs) + if(affecting.heal_damage(heal_amt, heal_amt, required_bodytype = BODYTYPE_ORGANIC)) + blessed.update_damage_overlays() + + blessed.visible_message(span_notice("[chap] heals [blessed] with the power of [GLOB.deity]!")) + to_chat(blessed, span_boldnotice("May the power of [GLOB.deity] compel you to be healed!")) + playsound(chap, SFX_PUNCH, 25, TRUE, -1) + blessed.add_mood_event("blessing", /datum/mood_event/blessing) + return BLESSING_SUCCESS /// What happens if we bless a corpse? By default just do the default smack behavior /datum/religion_sect/proc/sect_dead_bless(mob/living/target, mob/living/chap) @@ -162,9 +165,11 @@ to_chat(R, span_boldnotice("You are charged by the power of [GLOB.deity]!")) R.add_mood_event("blessing", /datum/mood_event/blessing) playsound(chap, 'sound/effects/bang.ogg', 25, TRUE, -1) - return TRUE + return BLESSING_SUCCESS + if(!ishuman(target)) - return + return BLESSING_FAILED + var/mob/living/carbon/human/blessed = target //first we determine if we can charge them @@ -179,12 +184,13 @@ if(IS_ORGANIC_LIMB(bodypart)) if(!did_we_charge) to_chat(chap, span_warning("[GLOB.deity] scoffs at the idea of healing such fleshy matter!")) - else - blessed.visible_message(span_notice("[chap] charges [blessed] with the power of [GLOB.deity]!")) - to_chat(blessed, span_boldnotice("You feel charged by the power of [GLOB.deity]!")) - blessed.add_mood_event("blessing", /datum/mood_event/blessing) - playsound(chap, 'sound/machines/synth/synth_yes.ogg', 25, TRUE, -1) - return TRUE + return BLESSING_IGNORED + + blessed.visible_message(span_notice("[chap] charges [blessed] with the power of [GLOB.deity]!")) + to_chat(blessed, span_boldnotice("You feel charged by the power of [GLOB.deity]!")) + blessed.add_mood_event("blessing", /datum/mood_event/blessing) + playsound(chap, 'sound/machines/synth/synth_yes.ogg', 25, TRUE, -1) + return BLESSING_SUCCESS //charge(?) and go if(bodypart.heal_damage(5,5,BODYTYPE_ROBOTIC)) @@ -194,7 +200,7 @@ to_chat(blessed, span_boldnotice("The inner machinations of [GLOB.deity] [did_we_charge ? "repairs and charges" : "repairs"] you!")) playsound(chap, 'sound/effects/bang.ogg', 25, TRUE, -1) blessed.add_mood_event("blessing", /datum/mood_event/blessing) - return TRUE + return BLESSING_SUCCESS /datum/religion_sect/mechanical/on_sacrifice(obj/item/stock_parts/power_store/cell/power_cell, mob/living/chap) if(!istype(power_cell)) @@ -258,33 +264,39 @@ return "In the eyes of [GLOB.deity], your wealth is your favor." /datum/religion_sect/greed/sect_bless(mob/living/blessed_living, mob/living/chap) + if(!ishuman(blessed_living)) + return BLESSING_FAILED + var/datum/bank_account/account = chap.get_bank_account() if(!account) to_chat(chap, span_warning("You need a way to pay for the heal!")) - return TRUE + return BLESSING_IGNORED + if(account.account_balance < GREEDY_HEAL_COST) to_chat(chap, span_warning("Healing from [GLOB.deity] costs [GREEDY_HEAL_COST] credits for 30 health!")) - return TRUE - if(!ishuman(blessed_living)) - return FALSE + return BLESSING_IGNORED + var/mob/living/carbon/human/blessed = blessed_living for(var/obj/item/bodypart/robolimb as anything in blessed.bodyparts) if(IS_ROBOTIC_LIMB(robolimb)) to_chat(chap, span_warning("[GLOB.deity] refuses to heal this metallic taint!")) - return TRUE + return BLESSING_IGNORED account.adjust_money(-GREEDY_HEAL_COST, "Church Donation: Treatment") var/heal_amt = 30 var/list/hurt_limbs = blessed.get_damaged_bodyparts(1, 1, BODYTYPE_ORGANIC) - if(hurt_limbs.len) - for(var/obj/item/bodypart/affecting as anything in hurt_limbs) - if(affecting.heal_damage(heal_amt, heal_amt, required_bodytype = BODYTYPE_ORGANIC)) - blessed.update_damage_overlays() - blessed.visible_message(span_notice("[chap] barters a heal for [blessed] from [GLOB.deity]!")) - to_chat(blessed, span_boldnotice("May the power of [GLOB.deity] compel you to be healed! Thank you for choosing [GLOB.deity]!")) - playsound(chap, 'sound/effects/cashregister.ogg', 60, TRUE) - blessed.add_mood_event("blessing", /datum/mood_event/blessing) - return TRUE + if(!length(hurt_limbs)) + return BLESSING_IGNORED + + for(var/obj/item/bodypart/affecting as anything in hurt_limbs) + if(affecting.heal_damage(heal_amt, heal_amt, required_bodytype = BODYTYPE_ORGANIC)) + blessed.update_damage_overlays() + + blessed.visible_message(span_notice("[chap] barters a heal for [blessed] from [GLOB.deity]!")) + to_chat(blessed, span_boldnotice("May the power of [GLOB.deity] compel you to be healed! Thank you for choosing [GLOB.deity]!")) + playsound(chap, 'sound/effects/cashregister.ogg', 60, TRUE) + blessed.add_mood_event("blessing", /datum/mood_event/blessing) + return BLESSING_SUCCESS #undef GREEDY_HEAL_COST @@ -321,10 +333,12 @@ /datum/religion_sect/burden/sect_bless(mob/living/carbon/target, mob/living/carbon/chaplain) if(!istype(target) || !istype(chaplain)) - return FALSE + return BLESSING_FAILED + var/datum/brain_trauma/special/burdened/burden = chaplain.has_trauma_type(/datum/brain_trauma/special/burdened) if(!burden) - return FALSE + return BLESSING_FAILED + var/burden_modifier = max(1 - 0.07 * burden.burden_level, 0.01) var/transferred = FALSE var/list/hurt_limbs = target.get_damaged_bodyparts(1, 1, BODYTYPE_ORGANIC) + target.get_wounded_bodyparts(BODYTYPE_ORGANIC) @@ -332,6 +346,7 @@ for(var/obj/item/bodypart/possible_limb in chaplain.bodyparts) if(IS_ORGANIC_LIMB(possible_limb)) chaplains_limbs += possible_limb + if(length(chaplains_limbs)) for(var/obj/item/bodypart/affected_limb as anything in hurt_limbs) var/obj/item/bodypart/chaplains_limb = chaplain.get_bodypart(affected_limb.body_zone) @@ -347,20 +362,24 @@ transferred = TRUE iter_wound.remove_wound() iter_wound.apply_wound(chaplains_limb) + if(HAS_TRAIT_FROM(target, TRAIT_HUSK, BURN)) transferred = TRUE target.cure_husk(BURN) chaplain.become_husk(BURN) + var/toxin_damage = target.getToxLoss() if(toxin_damage && !HAS_TRAIT(chaplain, TRAIT_TOXIMMUNE)) transferred = TRUE target.adjustToxLoss(-toxin_damage) chaplain.adjustToxLoss(toxin_damage * burden_modifier, forced = TRUE) + var/suffocation_damage = target.getOxyLoss() if(suffocation_damage && !HAS_TRAIT(chaplain, TRAIT_NOBREATH)) transferred = TRUE target.adjustOxyLoss(-suffocation_damage) chaplain.adjustOxyLoss(suffocation_damage * burden_modifier, forced = TRUE) + if(!HAS_TRAIT(chaplain, TRAIT_NOBLOOD)) if(target.blood_volume < BLOOD_VOLUME_SAFE) var/target_blood_data = target.get_blood_data(target.get_blood_id()) @@ -371,16 +390,18 @@ chaplain.transfer_blood_to(target, transferred_blood_amount, forced = TRUE) if(target.blood_volume > BLOOD_VOLUME_EXCESS) target.transfer_blood_to(chaplain, target.blood_volume - BLOOD_VOLUME_EXCESS, forced = TRUE) + target.update_damage_overlays() chaplain.update_damage_overlays() if(transferred) - target.visible_message(span_notice("[chaplain] takes on [target]'s burden!")) - to_chat(target, span_boldnotice("May the power of [GLOB.deity] compel you to be healed!")) - playsound(chaplain, SFX_PUNCH, 25, vary = TRUE, extrarange = -1) - target.add_mood_event("blessing", /datum/mood_event/blessing) - else to_chat(chaplain, span_warning("They hold no burden!")) - return TRUE + return BLESSING_IGNORED + + target.visible_message(span_notice("[chaplain] takes on [target]'s burden!")) + to_chat(target, span_boldnotice("May the power of [GLOB.deity] compel you to be healed!")) + playsound(chaplain, SFX_PUNCH, 25, vary = TRUE, extrarange = -1) + target.add_mood_event("blessing", /datum/mood_event/blessing) + return BLESSING_SUCCESS /datum/religion_sect/burden/sect_dead_bless(mob/living/target, mob/living/chaplain) return sect_bless(target, chaplain) @@ -436,17 +457,19 @@ /datum/religion_sect/maintenance/sect_bless(mob/living/blessed_living, mob/living/chap) if(!ishuman(blessed_living)) - return TRUE + return BLESSING_FAILED + var/mob/living/carbon/human/blessed = blessed_living if(blessed.reagents.has_reagent(/datum/reagent/drug/maint/sludge)) to_chat(blessed, span_warning("[GLOB.deity] has already empowered them.")) - return TRUE + return BLESSING_IGNORED + blessed.reagents.add_reagent(/datum/reagent/drug/maint/sludge, 5) blessed.visible_message(span_notice("[chap] empowers [blessed] with the power of [GLOB.deity]!")) to_chat(blessed, span_boldnotice("The power of [GLOB.deity] has made you harder to wound for a while!")) playsound(chap, SFX_PUNCH, 25, TRUE, -1) blessed.add_mood_event("blessing", /datum/mood_event/blessing) - return TRUE //trust me, you'll be feeling the pain from the maint drugs all well enough + return BLESSING_SUCCESS //trust me, you'll be feeling the pain from the maint drugs all well enough /datum/religion_sect/maintenance/on_sacrifice(obj/item/reagent_containers/offering, mob/living/user) if(!istype(offering)) diff --git a/code/modules/religion/sparring/sparring_contract.dm b/code/modules/religion/sparring/sparring_contract.dm index 8d6c34a90d7..f15b82fd115 100644 --- a/code/modules/religion/sparring/sparring_contract.dm +++ b/code/modules/religion/sparring/sparring_contract.dm @@ -21,7 +21,7 @@ name = "[GLOB.deity]'s sparring contract" /obj/item/sparring_contract/Destroy() - QDEL_NULL(signed_by) + signed_by.Cut() var/datum/religion_sect/spar/sect = GLOB.religious_sect sect?.existing_contract = null return ..() diff --git a/code/modules/research/anomaly/anomaly_core.dm b/code/modules/research/anomaly/anomaly_core.dm index 9cf762e58d2..0472b9d8172 100644 --- a/code/modules/research/anomaly/anomaly_core.dm +++ b/code/modules/research/anomaly/anomaly_core.dm @@ -7,6 +7,7 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' resistance_flags = FIRE_PROOF + custom_materials = null var/anomaly_type = /obj/effect/anomaly /obj/item/assembly/signaler/anomaly/receive_signal(datum/signal/signal) @@ -83,6 +84,11 @@ icon_state = "dimensional_core" anomaly_type = /obj/effect/anomaly/dimensional +/obj/item/assembly/signaler/anomaly/dimensional/Initialize(mapload) + . = ..() + var/static/list/recipes = list(/datum/crafting_recipe/dimensional_bombcore) + AddElement(/datum/element/slapcrafting, recipes) + /obj/item/assembly/signaler/anomaly/ectoplasm name = "\improper ectoplasm anomaly core" desc = "The neutralized core of an ectoplasmic anomaly. When you hold it close, you can hear faint murmuring from inside. It'd probably be valuable for research." diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index 7e4d26e3302..c2570e56eff 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -267,7 +267,7 @@ desc = "A device which causes kinetic accelerators to fire AoE blasts that destroy rock and damage creatures." id = "hyperaoemod" materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*3.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*1.5, /datum/material/silver =SHEET_MATERIAL_AMOUNT*1.5, /datum/material/gold =SHEET_MATERIAL_AMOUNT*1.5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT*2) - build_path = /obj/item/borg/upgrade/modkit/aoe/turfs/andmobs + build_path = /obj/item/borg/upgrade/modkit/aoe/mobs/andturfs /datum/design/unique_modkit/rapid_repeater name = "Kinetic Accelerator Rapid Repeater Mod" diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 58f001a1211..a836814094d 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -514,6 +514,32 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY +/datum/design/flechette + name = "Flechette Shotgun Shell (Lethal)" + desc = "A shotgun casing filled with small metal darts. Pokes many tiny holes into meat and kevlar alike. Useful for turning someone's insides \ + into outsides." + id = "flechetteshell" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2) + build_path = /obj/item/ammo_casing/shotgun/flechette + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/donkflechette + name = "Donk Co. 'Donk Spike' Flechette Shotgun Shell (Lethal)" + desc = "A shotgun casing filled with small plastic darts. That's right, plastic. Do you really think plastic is that scary? Sure, it would hurt to be \ + shot by this, but is it really going to do that much damage? You decide, pal, I'm not your mother. I'm just a computer." + id = "donkshell" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2) + build_path = /obj/item/ammo_casing/shotgun/flechette/donk + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + /datum/design/suppressor name = "Suppressor" desc = "A reverse-engineered suppressor that fits on most small arms with threaded barrels." diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index e6a5a75bdde..bce895917c2 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -21,8 +21,10 @@ var/stripe_color = null ///direction we output onto (if 0, on top of us) var/drop_direction = 0 - //looping sound for printing items + ///looping sound for printing items var/datum/looping_sound/lathe_print/print_sound + ///made so we dont call addtimer() 40,000 times in on_techweb_update(). only allows addtimer() to be called on the first update + var/techweb_updating = FALSE /obj/machinery/rnd/production/Initialize(mapload) print_sound = new(src, FALSE) @@ -108,6 +110,7 @@ /// Updates the list of designs this fabricator can print. /obj/machinery/rnd/production/proc/update_designs() PROTECTED_PROC(TRUE) + techweb_updating = FALSE var/previous_design_count = cached_designs.len @@ -130,9 +133,9 @@ /obj/machinery/rnd/production/proc/on_techweb_update() SIGNAL_HANDLER - // We're probably going to get more than one update (design) at a time, so batch - // them together. - addtimer(CALLBACK(src, PROC_REF(update_designs)), 2 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) + if(!techweb_updating) //so we batch these updates together + techweb_updating = TRUE + addtimer(CALLBACK(src, PROC_REF(update_designs)), 2 SECONDS) ///When materials are instered via silo link /obj/machinery/rnd/production/proc/silo_material_insert(obj/machinery/rnd/machine, container, obj/item/item_inserted, last_inserted_id, list/mats_consumed, amount_inserted) diff --git a/code/modules/research/ordnance/doppler_array.dm b/code/modules/research/ordnance/doppler_array.dm index 34ecb6b1089..331a3d98790 100644 --- a/code/modules/research/ordnance/doppler_array.dm +++ b/code/modules/research/ordnance/doppler_array.dm @@ -243,8 +243,8 @@ /obj/machinery/doppler_array/Destroy() inserted_disk = null - QDEL_NULL(records) //We only want the list nuked, not the contents. - . = ..() + records.Cut() // We only want to clear the list itself, not delete its contents. + return ..() /obj/machinery/doppler_array/proc/update_doppler_light() SIGNAL_HANDLER diff --git a/code/modules/research/ordnance/tank_compressor.dm b/code/modules/research/ordnance/tank_compressor.dm index dcaefc6ad3a..f78114d6ff1 100644 --- a/code/modules/research/ordnance/tank_compressor.dm +++ b/code/modules/research/ordnance/tank_compressor.dm @@ -14,7 +14,7 @@ var/active = FALSE var/transfer_rate = TANK_COMPRESSOR_MAX_TRANSFER_RATE var/datum/gas_mixture/leaked_gas_buffer - var/list/compressor_record + var/list/compressor_record = list() var/last_recorded_pressure = 0 var/record_number = 1 var/obj/item/tank/inserted_tank @@ -26,7 +26,6 @@ /obj/machinery/atmospherics/components/binary/tank_compressor/Initialize(mapload) . = ..() leaked_gas_buffer = new(200) - compressor_record = list() RegisterSignal(src, COMSIG_ATOM_INTERNAL_EXPLOSION, PROC_REF(explosion_handle)) @@ -247,7 +246,7 @@ inserted_tank = null inserted_disk = null leaked_gas_buffer = null - QDEL_NULL(compressor_record) //We only want the list nuked, not the contents. + compressor_record.Cut() // We only want to clear the list itself, not delete its contents. return ..() /obj/machinery/atmospherics/components/binary/tank_compressor/update_icon_state() diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm index 3da8fe4e1c9..589cdf310e6 100644 --- a/code/modules/research/techweb/_techweb.dm +++ b/code/modules/research/techweb/_techweb.dm @@ -149,10 +149,10 @@ CHECK_TICK if(get_available_nodes()[i] || get_researched_nodes()[i] || get_visible_nodes()[i]) receiver.hidden_nodes -= i //We can see it so let them see it too. - for(var/i in researched_nodes) + for(var/i in researched_nodes - receiver.researched_nodes) CHECK_TICK receiver.research_node_id(i, TRUE, FALSE, FALSE) - for(var/i in researched_designs) + for(var/i in researched_designs - receiver.researched_designs) CHECK_TICK receiver.add_design_by_id(i) receiver.recalculate_nodes() @@ -486,7 +486,7 @@ return if(researched) researched_nodes[node.id] = TRUE - for(var/id in node.design_ids) + for(var/id in node.design_ids - researched_designs) add_design(SSresearch.techweb_design_by_id(id)) else if(available) diff --git a/code/modules/research/techweb/nodes/bepis_nodes.dm b/code/modules/research/techweb/nodes/bepis_nodes.dm index f477569aea5..a9fe5f48814 100644 --- a/code/modules/research/techweb/nodes/bepis_nodes.dm +++ b/code/modules/research/techweb/nodes/bepis_nodes.dm @@ -119,3 +119,16 @@ hidden = TRUE experimental = TRUE announce_channels = list(RADIO_CHANNEL_SCIENCE) + +/datum/techweb_node/donk_shell + id = TECHWEB_NODE_DONK_PRODUCTS + display_name = "Donk Co. Failed Products Schematics" + description = "We don't want to know why you're filling up your databanks with known failed products from an enemy corporation. That's your choice. I'm just saying, don't come crying to us \ + when it turns out you've downloaded some kind of horrible donk-pocket related malware that steals your Starscape password. Those bastards over at Donk Co. WILL delete your character." + design_ids = list( + "donkshell", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) + hidden = TRUE + experimental = TRUE + announce_channels = list(RADIO_CHANNEL_SECURITY) diff --git a/code/modules/research/techweb/nodes/security_nodes.dm b/code/modules/research/techweb/nodes/security_nodes.dm index 02679b4280e..f16ed415059 100644 --- a/code/modules/research/techweb/nodes/security_nodes.dm +++ b/code/modules/research/techweb/nodes/security_nodes.dm @@ -90,6 +90,7 @@ "c38_true_strike", "c38_true_strike_mag", "techshotshell", + "flechetteshell", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) discount_experiments = list(/datum/experiment/ordnance/explosive/highyieldbomb = TECHWEB_TIER_4_POINTS) diff --git a/code/modules/research/xenobiology/crossbreeding/_clothing.dm b/code/modules/research/xenobiology/crossbreeding/_clothing.dm index c3c7eda58ef..c087fb71c8b 100644 --- a/code/modules/research/xenobiology/crossbreeding/_clothing.dm +++ b/code/modules/research/xenobiology/crossbreeding/_clothing.dm @@ -44,7 +44,7 @@ Slimecrossing Armor /obj/item/clothing/glasses/prism_glasses/Initialize(mapload) . = ..() - AddElement(/datum/element/wearable_client_colour, /datum/client_colour/glass_colour, ITEM_SLOT_EYES, glasses_color, forced_glass_color) + AddElement(/datum/element/wearable_client_colour, /datum/client_colour/glass_colour, ITEM_SLOT_EYES, GLASSES_TRAIT, glasses_color, forced_glass_color) /obj/structure/light_prism name = "light prism" @@ -76,9 +76,9 @@ Slimecrossing Armor var/new_color = tgui_color_picker(owner, "Choose the lens color:", "Color change",glasses.glasses_color) // BUBBERSTATION EDIT: TGUI COLOR PICKER if(!new_color) return - RemoveElement(/datum/element/wearable_client_colour, /datum/client_colour/glass_colour, ITEM_SLOT_EYES, glasses.glasses_color, glasses.forced_glass_color) + RemoveElement(/datum/element/wearable_client_colour, /datum/client_colour/glass_colour, ITEM_SLOT_EYES, GLASSES_TRAIT, glasses.glasses_color, glasses.forced_glass_color) glasses.glasses_color = new_color - AddElement(/datum/element/wearable_client_colour, /datum/client_colour/glass_colour, ITEM_SLOT_EYES, new_color, glasses.forced_glass_color) + AddElement(/datum/element/wearable_client_colour, /datum/client_colour/glass_colour, ITEM_SLOT_EYES, GLASSES_TRAIT, new_color, glasses.forced_glass_color) /datum/action/item_action/place_light_prism name = "Fabricate Light Prism" diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm index c73ef832c54..b1d537efcb4 100644 --- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm +++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm @@ -110,9 +110,13 @@ Slimecrossing Weapons return FALSE charge_timer = 0 var/mob/living/M = loc - if(istype(M) && M.blood_volume >= 20) - charges++ - M.blood_volume -= 20 + if(istype(M) && HAS_TRAIT(M, TRAIT_NOBLOOD) && M.stat == CONSCIOUS) + charges ++ + M.apply_damage(5, BRUTE) + else + if(istype(M) && M.blood_volume >= 20) + charges++ + M.blood_volume -= 20 if(charges == 1) recharge_newshot() return TRUE diff --git a/code/modules/research/xenobiology/crossbreeding/stabilized.dm b/code/modules/research/xenobiology/crossbreeding/stabilized.dm index ad5750de9ff..14bbdd6dda5 100644 --- a/code/modules/research/xenobiology/crossbreeding/stabilized.dm +++ b/code/modules/research/xenobiology/crossbreeding/stabilized.dm @@ -110,7 +110,7 @@ Stabilized extracts: /obj/item/slimecross/stabilized/red colour = SLIME_TYPE_RED - effect_desc = "Nullifies all equipment based slowdowns." + effect_desc = "Nullifies all equipment based speed change." /obj/item/slimecross/stabilized/green colour = SLIME_TYPE_GREEN diff --git a/code/modules/research/xenobiology/vatgrowing/petri_dish.dm b/code/modules/research/xenobiology/vatgrowing/petri_dish.dm index df2fa619cc3..2ff71feff24 100644 --- a/code/modules/research/xenobiology/vatgrowing/petri_dish.dm +++ b/code/modules/research/xenobiology/vatgrowing/petri_dish.dm @@ -39,8 +39,7 @@ if(!sample) return var/reagentcolor = sample.sample_color - var/mutable_appearance/base_overlay = mutable_appearance(icon, "petri_dish_overlay") - base_overlay.appearance_flags = RESET_COLOR + var/mutable_appearance/base_overlay = mutable_appearance(icon, "petri_dish_overlay", appearance_flags = RESET_COLOR|KEEP_APART) base_overlay.color = reagentcolor . += base_overlay var/mutable_appearance/overlay2 = mutable_appearance(icon, "petri_dish_overlay2") diff --git a/code/modules/research/xenobiology/vatgrowing/swab.dm b/code/modules/research/xenobiology/vatgrowing/swab.dm index 1027647b4c2..4236c9c7ac9 100644 --- a/code/modules/research/xenobiology/vatgrowing/swab.dm +++ b/code/modules/research/xenobiology/vatgrowing/swab.dm @@ -14,6 +14,5 @@ /obj/item/swab/proc/update_swab_icon(overlays, list/swabbed_items) if(LAZYLEN(swabbed_items)) var/datum/biological_sample/sample = LAZYACCESS(swabbed_items, 1) //Use the first one as our target - var/mutable_appearance/swab_overlay = mutable_appearance(icon, "swab_[sample.sample_color]") - swab_overlay.appearance_flags = RESET_COLOR + var/mutable_appearance/swab_overlay = mutable_appearance(icon, "swab_[sample.sample_color]", appearance_flags = RESET_COLOR|KEEP_APART) overlays += swab_overlay diff --git a/code/modules/research/xenobiology/vatgrowing/vatgrower.dm b/code/modules/research/xenobiology/vatgrowing/vatgrower.dm index 78a1e15b1cc..1ab0be77d65 100644 --- a/code/modules/research/xenobiology/vatgrowing/vatgrower.dm +++ b/code/modules/research/xenobiology/vatgrowing/vatgrower.dm @@ -148,8 +148,7 @@ if(!reagents.total_volume) return var/reagentcolor = mix_color_from_reagents(reagents.reagent_list) - var/mutable_appearance/base_overlay = mutable_appearance(icon, "vat_reagent") - base_overlay.appearance_flags = RESET_COLOR + var/mutable_appearance/base_overlay = mutable_appearance(icon, "vat_reagent", appearance_flags = RESET_COLOR|KEEP_APART) base_overlay.color = reagentcolor . += base_overlay if(biological_sample && is_operational) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 71e8f04b4b5..d6bcb8cff2d 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -912,7 +912,7 @@ return ITEM_INTERACT_SUCCESS if(isitem(interacting_with)) var/obj/item/apply_to = interacting_with - if(apply_to.slowdown <= 0 || (apply_to.item_flags & IMMUTABLE_SLOW)) + if(apply_to.slowdown <= 0 || (apply_to.item_flags & IMMUTABLE_SLOW) || HAS_TRAIT(apply_to, TRAIT_NO_SPEED_POTION)) if(interacting_with.atom_storage) return NONE // lets us put the potion in the bag to_chat(user, span_warning("[apply_to] can't be made any faster!")) diff --git a/code/modules/security_levels/security_level_datums.dm b/code/modules/security_levels/security_level_datums.dm index 4e0ed247312..0ba614a1556 100644 --- a/code/modules/security_levels/security_level_datums.dm +++ b/code/modules/security_levels/security_level_datums.dm @@ -9,6 +9,8 @@ /datum/security_level /// The name of this security level. var/name = "not set" + /// A three-letter shortform of the security level. + var/name_shortform = "not set" /// The color of our announcement divider. var/announcement_color = "default" /// The numerical level of this security level, see defines for more information. @@ -48,6 +50,7 @@ */ /datum/security_level/green name = "green" + name_shortform = "GRN" announcement_color = "green" sound = 'sound/announcer/notice/notice2.ogg' // Friendly beep number_level = SEC_LEVEL_GREEN @@ -63,6 +66,7 @@ */ /datum/security_level/blue name = "blue" + name_shortform = "BLU" announcement_color = "blue" sound = 'sound/announcer/notice/notice1.ogg' // Angry alarm number_level = SEC_LEVEL_BLUE @@ -79,6 +83,7 @@ */ /datum/security_level/red name = "red" + name_shortform = "RED" announcement_color = "red" sound = 'sound/announcer/notice/notice3.ogg' // More angry alarm number_level = SEC_LEVEL_RED @@ -95,6 +100,7 @@ */ /datum/security_level/delta name = "delta" + name_shortform = "Δ" announcement_color = "purple" sound = 'sound/announcer/alarm/airraid.ogg' // Air alarm to signify importance number_level = SEC_LEVEL_DELTA diff --git a/code/modules/shuttle/misc/special.dm b/code/modules/shuttle/misc/special.dm index 07aaeed7b48..a03d944c7d6 100644 --- a/code/modules/shuttle/misc/special.dm +++ b/code/modules/shuttle/misc/special.dm @@ -80,7 +80,7 @@ var/list/mob/living/sleepers = list() var/never_spoken = TRUE -/obj/structure/table/abductor/wabbajack/Initialize(mapload) +/obj/structure/table/abductor/wabbajack/Initialize(mapload, obj/structure/table_frame/frame_used, obj/item/stack/stack_used) . = ..() START_PROCESSING(SSobj, src) @@ -182,7 +182,7 @@ max_integrity = 1000 var/boot_dir = 1 -/obj/structure/table/wood/shuttle_bar/Initialize(mapload, _buildstack) +/obj/structure/table/wood/shuttle_bar/Initialize(mapload, obj/structure/table_frame/frame_used, obj/item/stack/stack_used) . = ..() var/static/list/loc_connections = list( COMSIG_ATOM_ENTERED = PROC_REF(on_entered), diff --git a/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm b/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm index 5185d268b8e..629311b6016 100644 --- a/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm +++ b/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm @@ -1,5 +1,3 @@ -GLOBAL_LIST_INIT(shuttle_construction_area_whitelist, list(/area/space, /area/lavaland, /area/icemoon, /area/station/asteroid)) - /obj/effect/client_image_holder/shuttle_construction_visualization image_icon = 'icons/effects/alphacolors.dmi' image_state = "transparent" @@ -102,15 +100,25 @@ GLOBAL_LIST_INIT(shuttle_construction_area_whitelist, list(/area/space, /area/la /datum/proximity_monitor/advanced/shuttle_construction_visualizer/proc/evaluate_turf_overlay(obj/effect/client_image_holder/holder, turf/target) var/area/turf_area = target.loc if(HAS_TRAIT(target, TRAIT_SHUTTLE_CONSTRUCTION_TURF)) - if(is_type_in_list(turf_area, GLOB.shuttle_construction_area_whitelist) || GLOB.custom_areas[turf_area]) - holder.image_state = "green" + holder.image_state = "green" + if(turf_area.allow_shuttle_docking) + if(!GLOB.custom_areas[turf_area] && turf_area.apc) + var/obj/machinery/power/apc/apc = turf_area.apc + var/datum/component/wall_mounted/wallmount_comp = apc.GetComponent(/datum/component/wall_mounted) + var/turf/apc_turf = get_turf(apc) + if(target == apc_turf || target == wallmount_comp.hanging_wall_turf) + holder.image_state = "red" else holder.image_state = "red" else + holder.image_state = "transparent" if(GLOB.custom_areas[turf_area] && HAS_TRAIT(turf_area, TRAIT_HAS_SHUTTLE_CONSTRUCTION_TURF)) - holder.image_state = "red" - else - holder.image_state = "transparent" + if(turf_area.apc) + var/obj/machinery/power/apc/apc = turf_area.apc + var/datum/component/wall_mounted/wallmount_comp = apc.GetComponent(/datum/component/wall_mounted) + var/turf/apc_turf = get_turf(apc) + if(HAS_TRAIT(apc_turf, TRAIT_SHUTTLE_CONSTRUCTION_TURF) || HAS_TRAIT(wallmount_comp.hanging_wall_turf, TRAIT_SHUTTLE_CONSTRUCTION_TURF)) + holder.image_state = "red" holder.regenerate_image() /obj/item/shuttle_blueprints @@ -490,6 +498,9 @@ GLOBAL_LIST_INIT(shuttle_construction_area_whitelist, list(/area/space, /area/la if(check_status & INTERSECTS_NON_WHITELISTED_AREA) balloon_alert(usr, "frame overlaps disallowed areas!") return TRUE + if(check_status & CONTAINS_APC_OF_NON_CUSTOM_AREA) + balloon_alert(usr, "frame contains apc of non-custom area!") + return TRUE var/obj/docking_port/mobile/custom/shuttle = create_shuttle( usr, shuttle_origin, @@ -657,6 +668,9 @@ GLOBAL_LIST_INIT(shuttle_construction_area_whitelist, list(/area/space, /area/la if(check_status & INTERSECTS_NON_WHITELISTED_AREA) balloon_alert(usr, "frame overlaps disallowed areas!") return TRUE + if(check_status & CONTAINS_APC_OF_NON_CUSTOM_AREA) + balloon_alert(usr, "frame includes apc of non-custom area!") + return TRUE expand_shuttle(usr, shuttle, turfs, areas) return TRUE if("cleanupEmptyTurfs") @@ -881,8 +895,9 @@ GLOBAL_LIST_INIT(shuttle_construction_area_whitelist, list(/area/space, /area/la /* * Check to see if the following conditions are met: - * 1. Any custom areas that overlap with the the region defined by `turf` are contained entirely within that region - * 2. All other turfs in the region are within whitelisted areas + * 1. All turfs in the region are within whitelisted areas + * 2. The region does not contain the APC of a non-custom area + * 3. If the region contains the APC of a custom area, it contains the entire area */ /proc/shuttle_area_check(list/turfs, list/areas, z) for(var/area/custom_area as anything in GLOB.custom_areas) @@ -894,16 +909,26 @@ GLOBAL_LIST_INIT(shuttle_construction_area_whitelist, list(/area/space, /area/la var/turfs_not_in_frame_count = length(turfs_not_in_frame) if(turfs_not_in_frame_count == turf_count) continue - areas[custom_area] = area_turfs - turfs_not_in_frame if(turfs_not_in_frame_count) - . |= CUSTOM_AREA_NOT_COMPLETELY_CONTAINED + if(custom_area.apc) + var/obj/machinery/power/apc/apc = custom_area.apc + var/datum/component/wall_mounted/wallmount_comp = apc.GetComponent(/datum/component/wall_mounted) + if(turfs[get_turf(apc)] || turfs[wallmount_comp.hanging_wall_turf]) + . |= CUSTOM_AREA_NOT_COMPLETELY_CONTAINED + else + areas[custom_area] = area_turfs - turfs_not_in_frame turfs -= area_turfs while(length(turfs)) var/turf/checked_turf = pick(turfs) var/area/checked_area = checked_turf.loc var/list/area_turfs = checked_area.get_turfs_by_zlevel(z) - if(!is_type_in_list(checked_area, GLOB.shuttle_construction_area_whitelist)) + if(!checked_area.allow_shuttle_docking) . |= INTERSECTS_NON_WHITELISTED_AREA + if(checked_area.apc) + var/obj/machinery/power/apc/apc = checked_area.apc + var/datum/component/wall_mounted/wallmount_comp = apc.GetComponent(/datum/component/wall_mounted) + if(turfs[get_turf(apc)] || turfs[wallmount_comp.hanging_wall_turf]) + . |= CONTAINS_APC_OF_NON_CUSTOM_AREA turfs -= area_turfs /proc/convert_areas_to_shuttle_areas(list/turfs, list/in_areas, list/out_areas, list/underlying_areas, area_type = /area/shuttle/custom) diff --git a/code/modules/shuttle/mobile_port/variants/custom/custom.dm b/code/modules/shuttle/mobile_port/variants/custom/custom.dm index 1a5a1df71a1..85cc88f72e5 100644 --- a/code/modules/shuttle/mobile_port/variants/custom/custom.dm +++ b/code/modules/shuttle/mobile_port/variants/custom/custom.dm @@ -1,6 +1,7 @@ /obj/docking_port/mobile/custom name = "custom shuttle" shuttle_id = "custom" + launch_status = UNLAUNCHED var/datum/weakref/master_blueprint var/area/default_area var/datum/weakref/control_console diff --git a/code/modules/shuttle/mobile_port/variants/custom/custom_consoles.dm b/code/modules/shuttle/mobile_port/variants/custom/custom_consoles.dm index c3ec5a05414..2a1e2125777 100644 --- a/code/modules/shuttle/mobile_port/variants/custom/custom_consoles.dm +++ b/code/modules/shuttle/mobile_port/variants/custom/custom_consoles.dm @@ -1,5 +1,3 @@ -GLOBAL_LIST_INIT(custom_shuttle_station_area_whitelist, list(/area/station/asteroid)) - /obj/machinery/computer/shuttle/custom_shuttle desc = "A shuttle control computer." icon_screen = "shuttle" @@ -44,13 +42,13 @@ GLOBAL_LIST_INIT(custom_shuttle_station_area_whitelist, list(/area/station/aster return TRUE return FALSE - //docking cam /obj/machinery/computer/camera_advanced/shuttle_docker/custom lock_override = NONE jump_to_ports = list("whiteship_home" = 1) designate_time = 100 circuit = /obj/item/circuitboard/computer/shuttle/docker + zlink_range = 1 var/static/list/connections = list(COMSIG_TURF_ADDED_TO_SHUTTLE = PROC_REF(on_loc_added_to_shuttle)) /obj/machinery/computer/camera_advanced/shuttle_docker/custom/on_construction(mob/user) @@ -75,7 +73,7 @@ GLOBAL_LIST_INIT(custom_shuttle_station_area_whitelist, list(/area/station/aster return ..() /obj/machinery/computer/camera_advanced/shuttle_docker/custom/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock) - if(shuttleId) //We normally should only be connecting newly-created consoles to shuttles, but just in case... + if(shuttleId) //We normally should only be connecting unlinked consoles to shuttles, but just in case... var/obj/docking_port/mobile/old_shuttle = SSshuttle.getShuttle(shuttleId) if(old_shuttle) UnregisterSignal(old_shuttle, COMSIG_SHUTTLE_EXPANDED) @@ -158,10 +156,9 @@ GLOBAL_LIST_INIT(custom_shuttle_station_area_whitelist, list(/area/station/aster /obj/machinery/computer/camera_advanced/shuttle_docker/custom/checkLandingTurf(turf/T, list/overlappers) . = ..() var/area/area = get_area(T) +<<<<<<< HEAD if(!is_type_in_list(area, GLOB.custom_shuttle_station_area_whitelist) && is_type_in_list(area, GLOB.the_station_areas)) - return SHUTTLE_DOCKER_BLOCKED - -/obj/machinery/computer/camera_advanced/shuttle_docker/custom/attack_hand(mob/user) +======= if(!shuttleId) to_chat(user, "You must link the console to a shuttle first.") return diff --git a/code/modules/shuttle/shuttle_consoles/navigation_computer.dm b/code/modules/shuttle/shuttle_consoles/navigation_computer.dm index 033c6309aae..377955ae328 100644 --- a/code/modules/shuttle/shuttle_consoles/navigation_computer.dm +++ b/code/modules/shuttle/shuttle_consoles/navigation_computer.dm @@ -29,6 +29,7 @@ var/designate_time = 0 var/turf/designating_target_loc var/jammed = FALSE + var/zlink_range = 0 /obj/machinery/computer/camera_advanced/shuttle_docker/Initialize(mapload) . = ..() @@ -381,6 +382,23 @@ var/obj/machinery/computer/camera_advanced/shuttle_docker/console = origin_ref?.resolve() console.checkLandingSpot() +/mob/eye/camera/remote/shuttle_docker/allow_z_transition(datum/space_level/from, datum/space_level/into) + . = ..() + if(.) + return + var/obj/machinery/computer/camera_advanced/shuttle_docker/console = origin_ref?.resolve() + if(!console.zlink_range) + return + var/obj/docking_port/mobile/shuttle = console.shuttle_port + if(!shuttle) + return + var/list/zlevel_stack = SSmapping.get_connected_levels(shuttle.z) + var/list/zlevels_in_range = list() + for(var/level in zlevel_stack) + zlevels_in_range |= get_linked_z_levels_in_range(level, console.zlink_range) + return zlevels_in_range[into] + + /mob/eye/camera/remote/shuttle_docker/update_remote_sight(mob/living/user) user.set_sight(BLIND|SEE_TURFS) // Pale blue, should look nice I think diff --git a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm index ea9cdc27a44..56fcc898767 100644 --- a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm +++ b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm @@ -14,6 +14,8 @@ spell_requirements = NONE + jaunt_type = /obj/effect/dummy/phased_mob/blood + /// The time it takes to enter blood var/enter_blood_time = 0 SECONDS /// The time it takes to exit blood @@ -375,3 +377,7 @@ /obj/item/bloodcrawl/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) + +/// Different graphic for the position indicator +/obj/effect/dummy/phased_mob/blood + phased_mob_icon_state = "mini_leaper" diff --git a/code/modules/spells/spell_types/jaunt/ethereal_jaunt.dm b/code/modules/spells/spell_types/jaunt/ethereal_jaunt.dm index e020ec1d5b1..58fcbb6ff50 100644 --- a/code/modules/spells/spell_types/jaunt/ethereal_jaunt.dm +++ b/code/modules/spells/spell_types/jaunt/ethereal_jaunt.dm @@ -14,8 +14,6 @@ var/jaunt_duration = 5 SECONDS /// For how long we become immobilized after exiting the jaunt. var/jaunt_in_time = 0.5 SECONDS - /// For how long we become immobilized when using this spell. - var/jaunt_out_time = 0 SECONDS /// Visual for jaunting var/obj/effect/jaunt_in_type = /obj/effect/temp_visual/wizard /// Visual for exiting the jaunt @@ -40,11 +38,8 @@ /** * Begin the jaunt, and the entire jaunt chain. * Puts cast_on in the phased mob holder here. - * - * Calls do_jaunt_out: - * - if jaunt_out_time is set to more than 0, - * Or immediately calls start_jaunt: - * - if jaunt_out_time = 0 + * Sets up the signals and exit points and + * starts the timer until the end. */ /datum/action/cooldown/spell/jaunt/ethereal_jaunt/proc/do_jaunt(mob/living/cast_on) // Makes sure they don't die or get jostled or something during the jaunt entry @@ -56,36 +51,6 @@ if(!holder) CRASH("[type] attempted do_jaunt but failed to create a jaunt holder via enter_jaunt.") - if(jaunt_out_time > 0) - ADD_TRAIT(cast_on, TRAIT_IMMOBILIZED, REF(src)) - addtimer(CALLBACK(src, PROC_REF(do_jaunt_out), cast_on, holder), jaunt_out_time) - else - start_jaunt(cast_on, holder) - -/** - * The wind-up to the jaunt. - * Optional, only called if jaunt_out_time is set. - * - * Calls start_jaunt. - */ -/datum/action/cooldown/spell/jaunt/ethereal_jaunt/proc/do_jaunt_out(mob/living/cast_on, obj/effect/dummy/phased_mob/spell_jaunt/holder) - if(QDELETED(cast_on) || QDELETED(holder) || QDELETED(src)) - return - - REMOVE_TRAIT(cast_on, TRAIT_IMMOBILIZED, REF(src)) - start_jaunt(cast_on, holder) - -/** - * The actual process of starting the jaunt. - * Sets up the signals and exit points and allows - * the caster to actually start moving around. - * - * Calls stop_jaunt after the jaunt runs out. - */ -/datum/action/cooldown/spell/jaunt/ethereal_jaunt/proc/start_jaunt(mob/living/cast_on, obj/effect/dummy/phased_mob/spell_jaunt/holder) - if(QDELETED(cast_on) || QDELETED(holder) || QDELETED(src)) - return - LAZYINITLIST(exit_point_list) RegisterSignal(holder, COMSIG_MOVABLE_MOVED, PROC_REF(update_exit_point), target) addtimer(CALLBACK(src, PROC_REF(stop_jaunt), cast_on, holder, get_turf(holder)), jaunt_duration) @@ -153,6 +118,7 @@ cast_on.setDir(holder.dir) if(jaunt_in_time > 0) + cast_on.Immobilize(jaunt_in_time, ignore_canstun = TRUE) addtimer(CALLBACK(src, PROC_REF(end_jaunt), cast_on, holder, final_point), jaunt_in_time) else end_jaunt(cast_on, holder, final_point) @@ -218,7 +184,7 @@ jaunt_duration = 5 SECONDS jaunt_in_time = 0.6 SECONDS - jaunt_out_time = 0.6 SECONDS + jaunt_type = /obj/effect/dummy/phased_mob/spell_jaunt/red jaunt_in_type = /obj/effect/temp_visual/dir_setting/wraith jaunt_out_type = /obj/effect/temp_visual/dir_setting/wraith/out @@ -238,6 +204,7 @@ /datum/action/cooldown/spell/jaunt/ethereal_jaunt/shift/golem name = "Runic Phase Shift" cooldown_time = 80 SECONDS + jaunt_type = /obj/effect/dummy/phased_mob/spell_jaunt/red jaunt_in_type = /obj/effect/temp_visual/dir_setting/cult/phase jaunt_out_type = /obj/effect/temp_visual/dir_setting/cult/phase/out @@ -257,3 +224,7 @@ if (locate(/obj/effect/blessing) in .) to_chat(user, span_warning("Holy energies block your path!")) return null + +/// Red coloured variant +/obj/effect/dummy/phased_mob/spell_jaunt/red + phased_mob_icon_state = "red_1" diff --git a/code/modules/spells/spell_types/jaunt/shadow_walk.dm b/code/modules/spells/spell_types/jaunt/shadow_walk.dm index c869fb19913..33215acb1e9 100644 --- a/code/modules/spells/spell_types/jaunt/shadow_walk.dm +++ b/code/modules/spells/spell_types/jaunt/shadow_walk.dm @@ -53,6 +53,7 @@ /obj/effect/dummy/phased_mob/shadow name = "shadows" + phased_mob_icon_state = "purple_laser" /// Max amount of light permitted before being kicked out var/light_max = SHADOW_SPECIES_LIGHT_THRESHOLD /// The amount that shadow heals us per SSobj tick (times seconds_per_tick) diff --git a/code/modules/spells/spell_types/pointed/terrorize.dm b/code/modules/spells/spell_types/pointed/terrorize.dm index 44d35c1f3dd..5535e8d040d 100644 --- a/code/modules/spells/spell_types/pointed/terrorize.dm +++ b/code/modules/spells/spell_types/pointed/terrorize.dm @@ -16,7 +16,6 @@ /datum/action/cooldown/spell/pointed/terrorize/is_valid_target(atom/cast_on) . = ..() - if(!ishuman(cast_on)) cast_on.balloon_alert(owner, "cannot be terrorized!") return FALSE @@ -37,5 +36,4 @@ /datum/action/cooldown/spell/pointed/terrorize/cast(mob/living/carbon/human/cast_on) . = ..() - cast_on.apply_status_effect(/datum/status_effect/terrified) //Effect stacks, adding bonus terror to the victim if cast again diff --git a/code/modules/surgery/blood_filter.dm b/code/modules/surgery/blood_filter.dm index 9c0baa418c3..9d41fd20d96 100644 --- a/code/modules/surgery/blood_filter.dm +++ b/code/modules/surgery/blood_filter.dm @@ -84,7 +84,7 @@ var/obj/item/blood_filter/bloodfilter = tool if(target.reagents?.total_volume) for(var/datum/reagent/chem as anything in target.reagents.reagent_list) - if(!length(bloodfilter.whitelist) || (chem.type in bloodfilter.whitelist)) + if(!length(bloodfilter.whitelist) || !(chem.type in bloodfilter.whitelist)) target.reagents.remove_reagent(chem.type, clamp(round(chem.volume * 0.22, 0.2), 0.4, 10)) target.adjustToxLoss(amount = clamp(round(target.toxloss * -0.07, 2), -2, -10), forced = TRUE) // BUBBER EDIT ADDITION - Filtration fixes toxins display_results( diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index 6edae9f11a0..fdab174bb80 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -123,13 +123,13 @@ var/bleed_overlay_icon //Damage messages used by help_shake_act() - var/light_brute_msg = "bruised" + var/light_brute_msg = "bruised and feels sore" var/medium_brute_msg = "battered" var/heavy_brute_msg = "mangled" - var/light_burn_msg = "numb" + var/light_burn_msg = "red and feels numb" var/medium_burn_msg = "blistered" - var/heavy_burn_msg = "peeling away" + var/heavy_burn_msg = "like its peeling away" //Damage messages used by examine(). the desc that is most common accross all bodyparts gets shown var/list/damage_examines = list( @@ -302,11 +302,10 @@ /** * Called when a bodypart is checked for injuries. - * - * Modifies the check_list list with the resulting report of the limb's status. */ -/obj/item/bodypart/proc/check_for_injuries(mob/living/carbon/human/examiner, list/check_list) +/obj/item/bodypart/proc/check_for_injuries(mob/living/carbon/human/examiner) + var/list/check_list = list() var/list/limb_damage = list(BRUTE = brute_dam, BURN = burn_dam) SEND_SIGNAL(src, COMSIG_BODYPART_CHECKED_FOR_INJURY, examiner, check_list, limb_damage) @@ -356,32 +355,47 @@ else is_disabled += " and" - check_list += "\t Your [name][is_disabled][self_aware ? " has " : " is "][status]." + check_list += "Your [plaintext_zone][is_disabled][self_aware ? " has " : " looks "][status]." + + var/adept_organ_feeler = owner == examiner && HAS_TRAIT(examiner, TRAIT_SELF_AWARE) + for(var/obj/item/organ/organ in src) + if(organ.organ_flags & ORGAN_HIDDEN) + continue + var/feeling = organ.feel_for_damage(adept_organ_feeler) + if(feeling) + check_list += "\t[feeling]" for(var/datum/wound/wound as anything in wounds) - switch(wound.severity) - if(WOUND_SEVERITY_TRIVIAL) - // check_list += "\t [span_danger("Your [name] is suffering [wound.a_or_from] [LOWER_TEXT(wound.name)].")]" // SKYRAT EDIT - Medical overhaul-ish - ORIGINAL - check_list += "\t [span_danger("Your [name] is suffering [wound.a_or_from] [wound.get_topic_name(owner)].")]" // SKYRAT EDIT - Medical overhaul-ish - if(WOUND_SEVERITY_MODERATE) - // check_list += "\t [span_warning("Your [name] is suffering [wound.a_or_from] [LOWER_TEXT(wound.name)]!")]" // SKYRAT EDIT - Medical overhaul-ish - ORIGINAL - check_list += "\t [span_warning("Your [name] is suffering [wound.a_or_from] [wound.get_topic_name(owner)]!")]" // SKYRAT EDIT - Medical overhaul-ish - if(WOUND_SEVERITY_SEVERE) - // check_list += "\t [span_boldwarning("Your [name] is suffering [wound.a_or_from] [lLOWER_TEXT(wound.name)]!")]" // SKYRAT EDIT - Medical overhaul-ish - ORIGINAL - check_list += "\t [span_boldwarning("Your [name] is suffering [wound.a_or_from] [wound.get_topic_name(owner)]!")]" // SKYRAT EDIT - Medical overhaul-ish - if(WOUND_SEVERITY_CRITICAL) - // check_list += "\t [span_boldwarning("Your [name] is suffering [wound.a_or_from] [LOWER_TEXT(wound.name)]!!")]" // SKYRAT EDIT - Medical overhaul-ish - ORIGINAL - check_list += "\t [span_boldwarning("Your [name] is suffering [wound.a_or_from] [wound.get_topic_name(owner)]!!")]" // SKYRAT EDIT - Medical overhaul-ish + var/wound_desc = wound.get_self_check_description(adept_organ_feeler) + if(wound_desc) + check_list += "\t[wound_desc]" for(var/obj/item/embedded_thing as anything in embedded_objects) + if(embedded_thing.get_embed().stealthy_embed) + continue var/harmless = embedded_thing.get_embed().is_harmless() var/stuck_wordage = harmless ? "stuck to" : "embedded in" - var/embed_text = "\t There is [icon2html(embedded_thing, examiner)] \a [embedded_thing] [stuck_wordage] your [plaintext_zone]!" + var/embed_text = "\t There is [icon2html(embedded_thing, examiner)] \a [embedded_thing] [stuck_wordage] your [plaintext_zone]!" if (harmless) check_list += span_italics(span_notice(embed_text)) else check_list += span_boldwarning(embed_text) + if(current_gauze) + check_list += span_notice("\tThere is some [current_gauze.name] wrapped around it.") + else if(can_bleed()) + switch(get_modified_bleed_rate()) + if(0.2 to 1) + check_list += span_warning("\tIt's lightly bleeding.") + if(1 to 2) + check_list += span_warning("\tIt's bleeding.") + if(3 to 4) + check_list += span_warning("\tIt's bleeding heavily!") + if(4 to INFINITY) + check_list += span_warning("\tIt's bleeding profusely!") + + return jointext(check_list, "
") + /obj/item/bodypart/blob_act() receive_damage(max_damage, wound_bonus = CANT_WOUND) @@ -507,9 +521,6 @@ brute *= wound_damage_multiplier burn *= wound_damage_multiplier - if(bodytype & (BODYTYPE_ALIEN|BODYTYPE_LARVA_PLACEHOLDER)) //aliens take double burn //nothing can burn with so much snowflake code around - burn *= 2 - /* // START WOUND HANDLING */ @@ -1043,8 +1054,8 @@ icon_state = initial(icon_state)//no overlays found, we default back to initial icon. return for(var/image/img as anything in standing) - img.pixel_x += px_x - img.pixel_y += px_y + img.pixel_w += px_x + img.pixel_z += px_y add_overlay(standing) /obj/item/bodypart/update_atom_colour() @@ -1078,16 +1089,13 @@ . = list() - var/image_dir = NONE - if(dropped) - image_dir = SOUTH - if(dmg_overlay_type) - if(brutestate) - . += image('icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_[brutestate]0", -DAMAGE_LAYER, image_dir) - if(burnstate) - . += image('icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_0[burnstate]", -DAMAGE_LAYER, image_dir) + if(dropped && dmg_overlay_type) + if(brutestate) + . += image('icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_[brutestate]0", -DAMAGE_LAYER) + if(burnstate) + . += image('icons/mob/effects/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_0[burnstate]", -DAMAGE_LAYER) - var/image/limb = image(layer = -BODYPARTS_LAYER, dir = image_dir) + var/image/limb = image(layer = -BODYPARTS_LAYER) var/image/aux // Handles invisibility (not alpha or actual invisibility but invisibility) @@ -1113,7 +1121,7 @@ . += limb if(aux_zone) //Hand shit - aux = image(limb.icon, "[limb_id]_[aux_zone]", -aux_layer, image_dir) + aux = image(limb.icon, "[limb_id]_[aux_zone]", -aux_layer) . += aux update_draw_color() @@ -1137,21 +1145,17 @@ var/atom/location = loc || owner || src if(blocks_emissive != EMISSIVE_BLOCK_NONE) var/mutable_appearance/limb_em_block = emissive_blocker(limb.icon, limb.icon_state, location, layer = limb.layer, alpha = limb.alpha) - limb_em_block.dir = image_dir . += limb_em_block if(aux_zone) var/mutable_appearance/aux_em_block = emissive_blocker(aux.icon, aux.icon_state, location, layer = aux.layer, alpha = aux.alpha) - aux_em_block.dir = image_dir . += aux_em_block if(is_emissive) var/mutable_appearance/limb_em = emissive_appearance(limb.icon, "[limb.icon_state]_e", location, layer = limb.layer, alpha = limb.alpha) - limb_em.dir = image_dir . += limb_em if(aux_zone) var/mutable_appearance/aux_em = emissive_appearance(aux.icon, "[aux.icon_state]_e", location, layer = aux.layer, alpha = aux.alpha) - aux_em.dir = image_dir . += aux_em //EMISSIVE CODE END @@ -1163,7 +1167,7 @@ //remove the old, unmasked image . -= limb_image //add two masked images based on the old one - . += leg_source.generate_masked_leg(limb_image, image_dir) + . += leg_source.generate_masked_leg(limb_image) // And finally put bodypart_overlays on if not husked if(!is_husked) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index e0d4b8837df..34595198354 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -61,10 +61,12 @@ return FALSE if(HAS_TRAIT(chest_owner, TRAIT_NODISMEMBER)) return FALSE + . = list() if(wounding_type != WOUND_BURN && isturf(chest_owner.loc) && can_bleed()) chest_owner.add_splatter_floor(chest_owner.loc) playsound(get_turf(chest_owner), 'sound/misc/splort.ogg', 80, TRUE) + // BUBBER TODO - This needs a rework so we dont spill tails and whatnot var/list/droppable_organs= list()// BUBBER EDIT BEGIN - One at a time for(var/obj/item/organ/droppable in contents) droppable_organs |= droppable @@ -347,7 +349,7 @@ real_name = new_head_owner.real_name //Handle dental implants - for(var/obj/item/reagent_containers/pill/pill in src) + for(var/obj/item/reagent_containers/applicator/pill/pill in src) for(var/datum/action/item_action/activate_pill/pill_action in pill.actions) pill.forceMove(new_head_owner) pill_action.Grant(new_head_owner) diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index e76fc218a3d..86aadcf0f06 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -254,6 +254,7 @@ px_y = 0 bodypart_flags = BODYPART_UNREMOVABLE max_damage = LIMB_MAX_HP_ALIEN_CORE + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER bodytype = BODYTYPE_ALIEN | BODYTYPE_ORGANIC bodyshape = BODYSHAPE_HUMANOID @@ -268,4 +269,5 @@ px_y = 0 bodypart_flags = BODYPART_UNREMOVABLE max_damage = LIMB_MAX_HP_ALIEN_LARVA + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER bodytype = BODYTYPE_LARVA_PLACEHOLDER | BODYTYPE_ORGANIC diff --git a/code/modules/surgery/bodyparts/head_hair_and_lips.dm b/code/modules/surgery/bodyparts/head_hair_and_lips.dm index 389e9719f9e..b4610fa27da 100644 --- a/code/modules/surgery/bodyparts/head_hair_and_lips.dm +++ b/code/modules/surgery/bodyparts/head_hair_and_lips.dm @@ -68,15 +68,12 @@ . = list() var/atom/location = loc || owner || src - var/image_dir = NONE - if(dropped) - image_dir = SOUTH var/datum/sprite_accessory/sprite_accessory if(!facial_hair_hidden && lip_style && (head_flags & HEAD_LIPS)) //not a sprite accessory, don't ask //Overlay - var/image/lip_overlay = image('icons/mob/human/human_face.dmi', "lips_[lip_style]", -BODY_LAYER, image_dir) + var/image/lip_overlay = image('icons/mob/human/human_face.dmi', "lips_[lip_style]", -BODY_LAYER) lip_overlay.color = lip_color //Emissive blocker if(blocks_emissive != EMISSIVE_BLOCK_NONE) @@ -90,7 +87,7 @@ sprite_accessory = SSaccessories.facial_hairstyles_list[facial_hairstyle] if(sprite_accessory) //Overlay - facial_hair_overlay = image(sprite_accessory.icon, sprite_accessory.icon_state, -HAIR_LAYER, image_dir) + facial_hair_overlay = image(sprite_accessory.icon, sprite_accessory.icon_state, -HAIR_LAYER) facial_hair_overlay.alpha = facial_hair_alpha //Emissive blocker if(blocks_emissive != EMISSIVE_BLOCK_NONE) @@ -102,7 +99,7 @@ var/facial_hair_gradient_style = gradient_styles[GRADIENT_FACIAL_HAIR_KEY] if(facial_hair_gradient_style != "None") var/facial_hair_gradient_color = gradient_colors[GRADIENT_FACIAL_HAIR_KEY] - var/image/facial_hair_gradient_overlay = get_gradient_overlay(icon(sprite_accessory.icon, sprite_accessory.icon_state), -HAIR_LAYER, SSaccessories.facial_hair_gradients_list[facial_hair_gradient_style], facial_hair_gradient_color, image_dir) + var/image/facial_hair_gradient_overlay = get_gradient_overlay(icon(sprite_accessory.icon, sprite_accessory.icon_state), -HAIR_LAYER, SSaccessories.facial_hair_gradients_list[facial_hair_gradient_style], facial_hair_gradient_color) . += facial_hair_gradient_overlay var/image/hair_overlay @@ -119,9 +116,9 @@ else base_icon = icon(hair_sprite_accessory.icon, hair_sprite_accessory.icon_state) //Overlay - hair_overlay = image(base_icon, layer=-HAIR_LAYER, dir=image_dir) + hair_overlay = image(base_icon, layer=-HAIR_LAYER) hair_overlay.alpha = hair_alpha - hair_overlay.pixel_y = hair_sprite_accessory.y_offset + hair_overlay.pixel_z = hair_sprite_accessory.y_offset // SKYRAT EDIT ADDITION - Species hair offset if(LAZYFIND(owner?.dna?.species?.offset_features, OFFSET_HAIR)) hair_overlay.pixel_w += owner.dna.species.offset_features[OFFSET_HAIR][INDEX_X] @@ -137,8 +134,8 @@ var/hair_gradient_style = gradient_styles[GRADIENT_HAIR_KEY] if(hair_gradient_style != "None") var/hair_gradient_color = gradient_colors[GRADIENT_HAIR_KEY] - var/image/hair_gradient_overlay = get_gradient_overlay(base_icon, -HAIR_LAYER, SSaccessories.hair_gradients_list[hair_gradient_style], hair_gradient_color, image_dir) - hair_gradient_overlay.pixel_y = hair_sprite_accessory.y_offset + var/image/hair_gradient_overlay = get_gradient_overlay(base_icon, -HAIR_LAYER, SSaccessories.hair_gradients_list[hair_gradient_style], hair_gradient_color) + hair_gradient_overlay.pixel_z = hair_sprite_accessory.y_offset // SKYRAT EDIT ADDITION - Species hair offset if(LAZYFIND(owner?.dna?.species?.offset_features, OFFSET_HAIR)) hair_gradient_overlay.pixel_w += owner.dna.species.offset_features[OFFSET_HAIR][INDEX_X] @@ -206,12 +203,12 @@ return eyeless_overlay /// Returns an appropriate hair/facial hair gradient overlay -/obj/item/bodypart/head/proc/get_gradient_overlay(icon/base_icon, layer, datum/sprite_accessory/gradient, grad_color, image_dir) +/obj/item/bodypart/head/proc/get_gradient_overlay(icon/base_icon, layer, datum/sprite_accessory/gradient, grad_color) RETURN_TYPE(/mutable_appearance) var/mutable_appearance/gradient_overlay = mutable_appearance(layer = layer) - var/icon/temp = icon(gradient.icon, gradient.icon_state, image_dir) - var/icon/temp_hair = icon(base_icon, dir=image_dir) + var/icon/temp = icon(gradient.icon, gradient.icon_state) + var/icon/temp_hair = icon(base_icon) temp.Blend(temp_hair, ICON_ADD) gradient_overlay.icon = temp gradient_overlay.color = grad_color diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index a821eec9e62..b0866491e55 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -105,6 +105,7 @@ should_draw_greyscale = FALSE bodypart_flags = BODYPART_UNREMOVABLE max_damage = LIMB_MAX_HP_ALIEN_CORE + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER acceptable_bodyshape = BODYSHAPE_HUMANOID wing_types = null @@ -117,6 +118,7 @@ should_draw_greyscale = FALSE bodypart_flags = BODYPART_UNREMOVABLE max_damage = LIMB_MAX_HP_ALIEN_LARVA + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER bodytype = BODYTYPE_LARVA_PLACEHOLDER | BODYTYPE_ORGANIC acceptable_bodytype = BODYTYPE_LARVA_PLACEHOLDER wing_types = null @@ -281,6 +283,7 @@ bodypart_flags = BODYPART_UNREMOVABLE can_be_disabled = FALSE max_damage = LIMB_MAX_HP_ALIEN_LIMBS + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER should_draw_greyscale = FALSE appendage_noun = "scythe-like hand" @@ -379,6 +382,7 @@ bodypart_flags = BODYPART_UNREMOVABLE can_be_disabled = FALSE max_damage = LIMB_MAX_HP_ALIEN_LIMBS + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER should_draw_greyscale = FALSE appendage_noun = "scythe-like hand" @@ -513,6 +517,7 @@ bodypart_flags = BODYPART_UNREMOVABLE can_be_disabled = FALSE max_damage = LIMB_MAX_HP_ALIEN_LIMBS + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER should_draw_greyscale = FALSE /obj/item/bodypart/leg/right @@ -603,4 +608,5 @@ bodypart_flags = BODYPART_UNREMOVABLE can_be_disabled = FALSE max_damage = LIMB_MAX_HP_ALIEN_LIMBS + burn_modifier = LIMB_ALIEN_BURN_DAMAGE_MULTIPLIER should_draw_greyscale = FALSE diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 2cea7d730bb..bec1e7ec83f 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -1,7 +1,7 @@ #define ROBOTIC_LIGHT_BRUTE_MSG "marred" #define ROBOTIC_MEDIUM_BRUTE_MSG "dented" -#define ROBOTIC_HEAVY_BRUTE_MSG "falling apart" +#define ROBOTIC_HEAVY_BRUTE_MSG "like its falling apart" #define ROBOTIC_LIGHT_BURN_MSG "scorched" #define ROBOTIC_MEDIUM_BURN_MSG "charred" @@ -408,10 +408,7 @@ if (severity == EMP_HEAVY) glitch_duration *= 2 - owner.add_client_colour(/datum/client_colour/malfunction) - - addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob/living/carbon/human, remove_client_colour), /datum/client_colour/malfunction), glitch_duration) - return + QDEL_IN(owner.add_client_colour(/datum/client_colour/malfunction, HEAD_TRAIT), glitch_duration) #undef EMP_GLITCH diff --git a/code/modules/surgery/bodyparts/worn_feature_offset.dm b/code/modules/surgery/bodyparts/worn_feature_offset.dm index 8d33e5478eb..24f4cedbff8 100644 --- a/code/modules/surgery/bodyparts/worn_feature_offset.dm +++ b/code/modules/surgery/bodyparts/worn_feature_offset.dm @@ -43,8 +43,8 @@ /// Applies the current offset to a provided overlay image /datum/worn_feature_offset/proc/apply_offset(image/overlay) var/list/offset = get_offset() - overlay.pixel_x += offset["x"] - overlay.pixel_y += offset["y"] + overlay.pixel_w += offset["x"] + overlay.pixel_z += offset["y"] /// When the owner of the bodypart changes, update our signal registrations /datum/worn_feature_offset/proc/changed_owner(obj/item/bodypart/part, mob/living/new_owner, mob/living/old_owner) diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm index aa37607e76f..a21e3ec6218 100644 --- a/code/modules/surgery/dental_implant.dm +++ b/code/modules/surgery/dental_implant.dm @@ -17,7 +17,7 @@ ASSERT(teeth_receptangle) - for(var/obj/item/reagent_containers/pill/dental in teeth_receptangle) + for(var/obj/item/reagent_containers/applicator/pill/dental in teeth_receptangle) count++ if(teeth_receptangle.teeth_count == 0) @@ -30,7 +30,7 @@ /datum/surgery_step/insert_pill name = "insert pill" - implements = list(/obj/item/reagent_containers/pill = 100) + implements = list(/obj/item/reagent_containers/applicator/pill = 100) time = 16 /datum/surgery_step/insert_pill/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -44,7 +44,7 @@ ) display_pain(target, "Something's being jammed into your [target.parse_zone_with_bodypart(target_zone)]!") -/datum/surgery_step/insert_pill/success(mob/user, mob/living/carbon/target, target_zone, obj/item/reagent_containers/pill/tool, datum/surgery/surgery, default_display_results = FALSE) +/datum/surgery_step/insert_pill/success(mob/user, mob/living/carbon/target, target_zone, obj/item/reagent_containers/applicator/pill/tool, datum/surgery/surgery, default_display_results = FALSE) if(!istype(tool)) return FALSE diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm index cbdf8e99101..28efa5e4e36 100644 --- a/code/modules/surgery/organs/_organ.dm +++ b/code/modules/surgery/organs/_organ.dm @@ -66,6 +66,8 @@ var/list/organ_effects /// String displayed when the organ has decayed. var/failing_desc = "has decayed for too long, and has turned a sickly color. It probably won't work without repairs." + /// Assoc list of alternate zones where this can organ be slotted to organ slot for that zone + var/list/valid_zones = null // Players can look at prefs before atoms SS init, and without this // they would not be able to see external organs, such as moth wings. @@ -198,7 +200,13 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) /// Returns a line to be displayed regarding valid insertion zones /obj/item/organ/proc/zones_tip() - return span_notice("It should be inserted in the [parse_zone(zone)].") + if (!valid_zones) + return span_notice("It should be inserted in the [parse_zone(zone)].") + + var/list/fit_zones = list() + for (var/valid_zone in valid_zones) + fit_zones += parse_zone(valid_zone) + return span_notice("It should be inserted in the [english_list(fit_zones, and_text = " or ")].") ///Used as callbacks by object pooling /obj/item/organ/proc/exit_wardrobe() @@ -405,6 +413,28 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) /obj/item/organ/proc/get_status_appendix(advanced, add_tooltips) return +/** + * Used when a mob is examining themselves / their limbs + * + * Reports how they feel based on how the status of this organ + * + * It should be formatted as an extension of the limb: + * Input is something like "Your chest is bruised. It is bleeding.", + * you would add something like "It hurts a little, and your stomach cramps." + * + * * self_aware - if TRUE, the examiner is more aware of themselves and thus may get more detailed information + * + * Return a string, to be concatenated with other organ / limb status strings. Include spans and punctuation. + */ +/obj/item/organ/proc/feel_for_damage(self_aware) + if(organ_flags & ORGAN_EXTERNAL) + return "" + if(damage < low_threshold) + return "" + if(damage < high_threshold) + return span_warning("[self_aware ? "[capitalize(slot)]" : "It"] feels a bit off.") + return span_boldwarning("[self_aware ? "[capitalize(slot)]" : "It"] feels terrible!") + /// Tries to replace the existing organ on the passed mob with this one, with special handling for replacing a brain without ghosting target /obj/item/organ/proc/replace_into(mob/living/carbon/new_owner) // BUBBER EDIT - OR BEGIN diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm index dce035d3c5d..258fab3a634 100644 --- a/code/modules/surgery/organs/autosurgeon.dm +++ b/code/modules/surgery/organs/autosurgeon.dm @@ -90,7 +90,22 @@ span_notice("You press a button on [src] as it plunges into your body."), ) - stored_organ.Insert(target)//insert stored organ into the user + if (stored_organ.valid_zones && user.get_held_index_of_item(src)) + var/list/checked_zones = list(user.zone_selected) + if (IS_RIGHT_INDEX(user.get_held_index_of_item(src))) + checked_zones += list(BODY_ZONE_R_ARM, BODY_ZONE_R_LEG) + else + checked_zones += list(BODY_ZONE_L_ARM, BODY_ZONE_L_LEG) + + for (var/check_zone in checked_zones) + if (stored_organ.valid_zones[check_zone]) + stored_organ.swap_zone(check_zone) + break + + if (!stored_organ.Insert(target)) // insert stored organ into the user + balloon_alert(user, "insertion failed!") + return + stored_organ = null name = initial(name) //get rid of the organ in the name playsound(target.loc, 'sound/items/weapons/circsawhit.ogg', 50, vary = TRUE) diff --git a/code/modules/surgery/organs/external/wings/moth_wings.dm b/code/modules/surgery/organs/external/wings/moth_wings.dm index 2b1c861e970..6d89fc4d1a3 100644 --- a/code/modules/surgery/organs/external/wings/moth_wings.dm +++ b/code/modules/surgery/organs/external/wings/moth_wings.dm @@ -94,6 +94,11 @@ wings.burnt = FALSE burnt = FALSE +/obj/item/organ/wings/moth/feel_for_damage(self_aware) + if(burnt) + return "Your wings are all burnt up!" + return ..() + ///Moth wing bodypart overlay, including burn functionality! /datum/bodypart_overlay/mutant/wings/moth feature_key = "wings" // SKYRAT EDIT - Customization - ORIGINAL: feature_key = "moth_wings" @@ -108,16 +113,12 @@ return ..() - -/datum/bodypart_overlay/mutant/wings/moth/get_global_feature_list() - return SSaccessories.sprite_accessories["wings"] // SKYRAT EDIT - Customization - ORIGINAL: return SSaccessories.moth_wings_list - /datum/bodypart_overlay/mutant/wings/moth/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) var/mob/living/carbon/human/human = bodypart_owner.owner if(!istype(human)) return TRUE if(human.wear_suit?.flags_inv & HIDEMUTWINGS) - return ..(human, ignore_suit = TRUE) + return FALSE return TRUE /datum/bodypart_overlay/mutant/wings/moth/get_base_icon_state() diff --git a/code/modules/surgery/organs/internal/appendix/_appendix.dm b/code/modules/surgery/organs/internal/appendix/_appendix.dm index 78df2f9e40f..6d1a4715fe9 100644 --- a/code/modules/surgery/organs/internal/appendix/_appendix.dm +++ b/code/modules/surgery/organs/internal/appendix/_appendix.dm @@ -43,14 +43,17 @@ /obj/item/organ/appendix/proc/become_inflamed() inflamation_stage = 1 update_appearance() - if(owner) - ADD_TRAIT(owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type) - owner.med_hud_set_status() - notify_ghosts( - "[owner] has developed spontaneous appendicitis!", - source = owner, - header = "Whoa, Sick!", - ) + if(isnull(owner)) + return + ADD_TRAIT(owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type) + owner.med_hud_set_status() + if(isnull(owner.client)) + return + notify_ghosts( + "[owner] has developed spontaneous appendicitis!", + source = owner, + header = "Whoa, Sick!", + ) /obj/item/organ/appendix/proc/inflamation(seconds_per_tick) var/mob/living/carbon/organ_owner = owner @@ -72,6 +75,15 @@ organ_owner.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 95) organ_owner.adjustOrganLoss(ORGAN_SLOT_APPENDIX, 15) +/obj/item/organ/appendix/feel_for_damage(self_aware) + var/effective_stage = floor(inflamation_stage + (damage / maxHealth)) + switch(effective_stage) + if(1) + return span_warning("Your [self_aware ? "appendix" : "lower abdomen"] feels a little off.") + if(2) + return span_warning("Your [self_aware ? "appendix" : "lower right abdomen"] feels sore.") + if(3 to INFINITY) + return span_boldwarning("Your [self_aware ? "appendix" : "lower right abdomen"] feels like it's on fire!") /obj/item/organ/appendix/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutantappendix diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm index 8142ca8488e..4df1873c001 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm @@ -2,9 +2,14 @@ name = "arm-mounted implant" desc = "You shouldn't see this! Adminhelp and report this as an issue on github!" zone = BODY_ZONE_R_ARM + slot = ORGAN_SLOT_RIGHT_ARM_AUG icon_state = "toolkit_generic" w_class = WEIGHT_CLASS_SMALL actions_types = list(/datum/action/item_action/organ_action/toggle) + valid_zones = list( + BODY_ZONE_R_ARM = ORGAN_SLOT_RIGHT_ARM_AUG, + BODY_ZONE_L_ARM = ORGAN_SLOT_LEFT_ARM_AUG, + ) ///A ref for the arm we're taking up. Mostly for the unregister signal upon removal var/obj/hand //A list of typepaths to create and insert into ourself on init @@ -17,10 +22,8 @@ var/extend_sound = 'sound/vehicles/mecha/mechmove03.ogg' /// Sound played when retracting var/retract_sound = 'sound/vehicles/mecha/mechmove03.ogg' - /// Organ slot that the implant occupies for the right arm - var/right_arm_organ_slot = ORGAN_SLOT_RIGHT_ARM_AUG - /// Organ slot that the implant occupies for the left arm - var/left_arm_organ_slot = ORGAN_SLOT_LEFT_ARM_AUG + /// Do we have a separate icon_state for the hand overlay? + var/hand_state = TRUE /obj/item/organ/cyberimp/arm/Initialize(mapload) . = ..() @@ -32,8 +35,6 @@ var/atom/new_item = new typepath(src) items_list += WEAKREF(new_item) - SetSlotFromZone() - /obj/item/organ/cyberimp/arm/Destroy() hand = null active_item = null @@ -48,28 +49,6 @@ /datum/action/item_action/organ_action/toggle/toolkit desc = "You can also activate your empty hand or the tool in your hand to open the tools radial menu." -/obj/item/organ/cyberimp/arm/proc/SetSlotFromZone() - switch(zone) - if(BODY_ZONE_L_ARM) - slot = left_arm_organ_slot - if(BODY_ZONE_R_ARM) - slot = right_arm_organ_slot - else - CRASH("Invalid zone for [type]") - update_appearance() - -/obj/item/organ/cyberimp/arm/pre_surgical_insertion(mob/living/user, mob/living/carbon/new_owner, target_zone) - // Ensure that in case we're somehow placed elsewhere (HARS-esque bs) we don't break our zone - if (target_zone != BODY_ZONE_R_ARM && target_zone != BODY_ZONE_L_ARM) - return FALSE - - zone = target_zone - SetSlotFromZone() - return ..() - -/obj/item/organ/cyberimp/arm/zones_tip() - return span_notice("It should be inserted in the [parse_zone(right_arm_organ_slot)] or [parse_zone(left_arm_organ_slot)].") - /obj/item/organ/cyberimp/arm/on_mob_insert(mob/living/carbon/arm_owner) . = ..() RegisterSignal(arm_owner, COMSIG_CARBON_POST_ATTACH_LIMB, PROC_REF(on_limb_attached)) @@ -112,6 +91,25 @@ // give the owner an idea about why his implant is glitching Retract() +/obj/item/organ/cyberimp/arm/get_overlay_state(image_layer, obj/item/bodypart/limb) + return "[aug_overlay][zone == BODY_ZONE_L_ARM ? "_left" : "_right"]" + +/obj/item/organ/cyberimp/arm/get_overlay(image_layer, obj/item/bodypart/limb) + if (!hand_state) + return ..() + + var/mutable_appearance/arm_overlay = mutable_appearance( + icon = aug_icon, + icon_state = get_overlay_state(), + layer = image_layer, + ) + var/mutable_appearance/hand_overlay = mutable_appearance( + icon = aug_icon, + icon_state = "[get_overlay_state()]_hand", + layer = -BODYPARTS_HIGH_LAYER, + ) + return list(arm_overlay, hand_overlay) + /** * Called when the mob uses the "drop item" hotkey * @@ -134,8 +132,8 @@ active_item.resistance_flags = active_item::resistance_flags if(owner) owner.visible_message( - span_notice("[owner] retracts [active_item] back into [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."), - span_notice("[active_item] snaps back into your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."), + span_notice("[owner] retracts [active_item] back into [owner.p_their()] [parse_zone(zone)]."), + span_notice("[active_item] snaps back into your [parse_zone(zone)]."), span_hear("You hear a short mechanical noise."), ) @@ -154,13 +152,12 @@ return active_item = augment - active_item.resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF ADD_TRAIT(active_item, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) active_item.slot_flags = null active_item.set_custom_materials(null) - var/side = zone == BODY_ZONE_R_ARM? RIGHT_HANDS : LEFT_HANDS + var/side = zone == BODY_ZONE_R_ARM ? RIGHT_HANDS : LEFT_HANDS var/hand = owner.get_empty_held_index_for_side(side) if(hand) owner.put_in_hand(active_item, hand) @@ -180,8 +177,8 @@ for(var/i in failure_message) to_chat(owner, i) return - owner.visible_message(span_notice("[owner] extends [active_item] from [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."), - span_notice("You extend [active_item] from your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."), + owner.visible_message(span_notice("[owner] extends [active_item] from [owner.p_their()] [parse_zone(zone)]."), + span_notice("You extend [active_item] from your [parse_zone(zone)]."), span_hear("You hear a short mechanical noise.")) playsound(get_turf(owner), extend_sound, 50, TRUE) @@ -217,44 +214,37 @@ else Retract() - /obj/item/organ/cyberimp/arm/gun/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return if(prob(30/severity) && owner && !(organ_flags & ORGAN_FAILING)) Retract() - owner.visible_message(span_danger("A loud bang comes from [owner]\'s [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm!")) + owner.visible_message(span_danger("A loud bang comes from [owner]\'s [parse_zone(zone)]!")) playsound(get_turf(owner), 'sound/items/weapons/flashbang.ogg', 100, TRUE) - to_chat(owner, span_userdanger("You feel an explosion erupt inside your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm as your implant breaks!")) + to_chat(owner, span_userdanger("You feel an explosion erupt inside your [parse_zone(zone)] as your implant breaks!")) owner.adjust_fire_stacks(20) owner.ignite_mob() owner.adjustFireLoss(25) organ_flags |= ORGAN_FAILING - /obj/item/organ/cyberimp/arm/gun/laser name = "arm-mounted laser implant" desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arm and remains inside when not in use." icon_state = "arm_laser" items_to_create = list(/obj/item/gun/energy/laser/mounted/augment) -/obj/item/organ/cyberimp/arm/gun/laser/l - zone = BODY_ZONE_L_ARM - /obj/item/organ/cyberimp/arm/gun/taser name = "arm-mounted taser implant" desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arm and remains inside when not in use." icon_state = "arm_taser" items_to_create = list(/obj/item/gun/energy/e_gun/advtaser/mounted) -/obj/item/organ/cyberimp/arm/gun/taser/l - zone = BODY_ZONE_L_ARM - /obj/item/organ/cyberimp/arm/toolset name = "integrated toolset implant" desc = "A stripped-down version of the engineering cyborg toolset, designed to be installed on subject's arm. Contain advanced versions of every tool." icon_state = "toolkit_engineering" + aug_overlay = "toolkit_engi" actions_types = list(/datum/action/item_action/organ_action/toggle/toolkit) items_to_create = list( /obj/item/screwdriver/cyborg, @@ -265,14 +255,12 @@ /obj/item/multitool/cyborg, ) -/obj/item/organ/cyberimp/arm/toolset/l - zone = BODY_ZONE_L_ARM - //The order of the item list for this implant is not alphabetized due to it actually affecting how it shows up playerside when opening the implant /obj/item/organ/cyberimp/arm/paperwork name = "integrated paperwork implant" desc = "A highly sought out implant among heads of personnel, and other high up command staff in Nanotrasen. This implant allows the user to always have the tools necessary for paperwork handy" icon_state = "toolkit_engineering" + aug_overlay = "toolkit_engi" actions_types = list(/datum/action/item_action/organ_action/toggle/toolkit) items_to_create = list( /obj/item/pen/fountain, @@ -284,9 +272,6 @@ /obj/item/stamp/denied, ) -/obj/item/organ/cyberimp/arm/paperwork/l - zone = BODY_ZONE_L_ARM - /obj/item/organ/cyberimp/arm/paperwork/emag_act(mob/user, obj/item/card/emag/emag_card) for(var/datum/weakref/created_item in items_list) var/obj/potential_tool = created_item.resolve() @@ -315,12 +300,14 @@ /obj/item/organ/cyberimp/arm/medibeam name = "integrated medical beamgun" desc = "A cybernetic implant that allows the user to project a healing beam from their hand." + icon_state = "toolkit_surgical" + aug_overlay = "toolkit_med" items_to_create = list(/obj/item/gun/medbeam) - /obj/item/organ/cyberimp/arm/flash name = "integrated high-intensity photon projector" //Why not desc = "An integrated projector mounted onto a user's arm that is able to be used as a powerful flash." + aug_overlay = "toolkit" items_to_create = list(/obj/item/assembly/flash/armimplant) /obj/item/organ/cyberimp/arm/flash/Initialize(mapload) @@ -345,11 +332,13 @@ /obj/item/organ/cyberimp/arm/baton name = "arm electrification implant" desc = "An illegal combat implant that allows the user to administer disabling shocks from their arm." + aug_overlay = "toolkit" items_to_create = list(/obj/item/borg/stun) /obj/item/organ/cyberimp/arm/combat name = "combat cybernetics implant" desc = "A powerful cybernetic implant that contains combat modules built into the user's arm." + aug_overlay = "toolkit" items_to_create = list( /obj/item/melee/energy/blade/hardlight, /obj/item/gun/medbeam, @@ -370,6 +359,7 @@ name = "surgical toolset implant" desc = "A set of surgical tools hidden behind a concealed panel on the user's arm." icon_state = "toolkit_surgical" + aug_overlay = "toolkit_med" actions_types = list(/datum/action/item_action/organ_action/toggle/toolkit) items_to_create = list( /obj/item/retractor/augment, @@ -384,6 +374,7 @@ /obj/item/organ/cyberimp/arm/surgery/emagged name = "hacked surgical toolset implant" desc = "A set of surgical tools hidden behind a concealed panel on the user's arm. This one seems to have been tampered with." + aug_overlay = "toolkit_med" items_to_create = list( /obj/item/retractor/augment, /obj/item/hemostat/augment, @@ -407,10 +398,14 @@ zone = BODY_ZONE_R_ARM slot = ORGAN_SLOT_RIGHT_ARM_MUSCLE - right_arm_organ_slot = ORGAN_SLOT_RIGHT_ARM_MUSCLE - left_arm_organ_slot = ORGAN_SLOT_LEFT_ARM_MUSCLE + valid_zones = list( + BODY_ZONE_R_ARM = ORGAN_SLOT_RIGHT_ARM_MUSCLE, + BODY_ZONE_L_ARM = ORGAN_SLOT_LEFT_ARM_MUSCLE, + ) actions_types = list() + aug_overlay = "strongarm" + hand_state = FALSE ///The amount of damage the implant adds to our unarmed attacks. var/punch_damage = 5 @@ -433,9 +428,6 @@ ///Tracks how soon we can perform another slam attack COOLDOWN_DECLARE(slam_cooldown) -/obj/item/organ/cyberimp/arm/strongarm/l - zone = BODY_ZONE_L_ARM - /obj/item/organ/cyberimp/arm/strongarm/Initialize(mapload) . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/strongarm) diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm index a26bc7b7de0..c5dedb71fab 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm @@ -7,6 +7,7 @@ name = "nutriment pump implant" desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are starving." icon_state = "nutriment_implant" + aug_overlay = "nutripump" var/hunger_threshold = NUTRITION_LEVEL_STARVING var/synthesizing = 0 var/poison_amount = 5 @@ -37,6 +38,7 @@ name = "nutriment pump implant PLUS" desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry." icon_state = "adv_nutriment_implant" + aug_overlay = "nutripump_adv" hunger_threshold = NUTRITION_LEVEL_HUNGRY poison_amount = 10 @@ -44,6 +46,8 @@ name = "reviver implant" desc = "This implant will attempt to revive and heal you if you lose consciousness. For the faint of heart!" icon_state = "reviver_implant" + aug_overlay = "reviver" + emissive_overlay = TRUE slot = ORGAN_SLOT_HEART_AID var/revive_cost = 0 var/reviving = FALSE @@ -159,7 +163,8 @@ slot = ORGAN_SLOT_THRUSTERS icon_state = "imp_jetpack" base_icon_state = "imp_jetpack" - implant_color = null + aug_overlay = "imp_jetpack" + emissive_overlay = TRUE actions_types = list(/datum/action/item_action/organ_action/toggle) w_class = WEIGHT_CLASS_NORMAL var/on = FALSE @@ -208,6 +213,7 @@ if(!silent) to_chat(owner, span_notice("You turn your thrusters set on.")) update_appearance() + owner.update_body_parts() /obj/item/organ/cyberimp/chest/thrusters/proc/deactivate(silent = FALSE) if(!on) @@ -218,6 +224,7 @@ to_chat(owner, span_notice("You turn your thrusters set off.")) on = FALSE update_appearance() + owner.update_body_parts() /obj/item/organ/cyberimp/chest/thrusters/update_icon_state() icon_state = "[base_icon_state][on ? "-on" : null]" @@ -258,6 +265,14 @@ deactivate(silent = TRUE) return FALSE +/obj/item/organ/cyberimp/chest/thrusters/get_overlay_state(image_layer, obj/item/bodypart/limb) + return "[aug_overlay][on ? "_on" : ""]" + +/obj/item/organ/cyberimp/chest/thrusters/get_overlay(image_layer, obj/item/bodypart/limb) + . = ..() + for (var/image/overlay as anything in .) + overlay.layer = -BODYPARTS_HIGH_LAYER // makes absolutely zero sense why it would layer ontop of jumpsuits but it looks cool + /obj/item/organ/cyberimp/chest/spine name = "\improper Herculean gravitronic spinal implant" desc = "This gravitronic spinal interface is able to improve the athletics of a user, allowing them greater physical ability. \ @@ -304,23 +319,24 @@ remove_organ_trait(TRAIT_STURDY_FRAME) /obj/item/organ/cyberimp/chest/spine/item_interaction(mob/living/user, obj/item/tool, list/modifiers) - . = ..() + if(!istype(tool, /obj/item/assembly/signaler/anomaly/grav)) + return NONE + if(core_applied) user.balloon_alert(user, "core already installed!") return ITEM_INTERACT_BLOCKING - if(istype(tool, /obj/item/assembly/signaler/anomaly/grav)) - user.balloon_alert(user, "core installed.") - name = /obj/item/organ/cyberimp/chest/spine/atlas::name - desc = /obj/item/organ/cyberimp/chest/spine/atlas::desc - athletics_boost_multiplier = /obj/item/organ/cyberimp/chest/spine/atlas::athletics_boost_multiplier - added_throw_range = /obj/item/organ/cyberimp/chest/spine/atlas::added_throw_range - added_throw_speed = /obj/item/organ/cyberimp/chest/spine/atlas::added_throw_speed - strength_bonus = /obj/item/organ/cyberimp/chest/spine/atlas::strength_bonus - core_applied = TRUE - update_appearance() - qdel(tool) - return ITEM_INTERACT_SUCCESS + user.balloon_alert(user, "core installed") + name = /obj/item/organ/cyberimp/chest/spine/atlas::name + desc = /obj/item/organ/cyberimp/chest/spine/atlas::desc + athletics_boost_multiplier = /obj/item/organ/cyberimp/chest/spine/atlas::athletics_boost_multiplier + added_throw_range = /obj/item/organ/cyberimp/chest/spine/atlas::added_throw_range + added_throw_speed = /obj/item/organ/cyberimp/chest/spine/atlas::added_throw_speed + strength_bonus = /obj/item/organ/cyberimp/chest/spine/atlas::strength_bonus + core_applied = TRUE + update_appearance() + qdel(tool) + return ITEM_INTERACT_SUCCESS /obj/item/organ/cyberimp/chest/spine/atlas name = "\improper Atlas gravitonic spinal implant" diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm index 525400b5419..9763b22e4b0 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm @@ -15,48 +15,61 @@ var/HUD_traits = list() /// Whether the HUD implant is on or off var/toggled_on = TRUE + /// Eyecolor from the HUD + var/hud_color = "#3CB8A5" -/obj/item/organ/cyberimp/eyes/hud/proc/toggle_hud(mob/living/carbon/eye_owner) +/obj/item/organ/cyberimp/eyes/hud/proc/toggle_hud(mob/living/carbon/human/eye_owner) if(toggled_on) toggled_on = FALSE eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT) balloon_alert(eye_owner, "hud disabled") + if(hud_color) + eye_owner.remove_eye_color(EYE_COLOR_HUD_PRIORITY) return toggled_on = TRUE eye_owner.add_traits(HUD_traits, ORGAN_TRAIT) balloon_alert(eye_owner, "hud enabled") + if(hud_color) + eye_owner.add_eye_color_right(hud_color, EYE_COLOR_HUD_PRIORITY) -/obj/item/organ/cyberimp/eyes/hud/on_mob_insert(mob/living/carbon/eye_owner, special = FALSE, movement_flags) +/obj/item/organ/cyberimp/eyes/hud/on_mob_insert(mob/living/carbon/human/eye_owner, special = FALSE, movement_flags) . = ..() - eye_owner.add_traits(HUD_traits, ORGAN_TRAIT) toggled_on = TRUE + if(hud_color) + eye_owner.add_eye_color_right(hud_color, EYE_COLOR_HUD_PRIORITY, !special) -/obj/item/organ/cyberimp/eyes/hud/on_mob_remove(mob/living/carbon/eye_owner, special, movement_flags) +/obj/item/organ/cyberimp/eyes/hud/on_mob_remove(mob/living/carbon/human/eye_owner, special, movement_flags) . = ..() eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT) toggled_on = FALSE + if(hud_color) + eye_owner.remove_eye_color(EYE_COLOR_HUD_PRIORITY, !special) /obj/item/organ/cyberimp/eyes/hud/medical name = "medical HUD implant" desc = "These cybernetic eye implants will display a medical HUD over everything you see." icon_state = "eye_implant_medical" HUD_traits = list(TRAIT_MEDICAL_HUD) + hud_color = "#1D8FEC" /obj/item/organ/cyberimp/eyes/hud/security name = "security HUD implant" desc = "These cybernetic eye implants will display a security HUD over everything you see." icon_state = "eye_implant_security" HUD_traits = list(TRAIT_SECURITY_HUD) + hud_color = "#9A151E" /obj/item/organ/cyberimp/eyes/hud/diagnostic name = "diagnostic HUD implant" desc = "These cybernetic eye implants will display a diagnostic HUD over everything you see." icon_state = "eye_implant_diagnostic" HUD_traits = list(TRAIT_DIAGNOSTIC_HUD, TRAIT_BOT_PATH_HUD) + hud_color = "#CC6E33" /obj/item/organ/cyberimp/eyes/hud/security/syndicate name = "contraband security HUD implant" desc = "A Cybersun Industries brand Security HUD Implant. These illicit cybernetic eye implants will display a security HUD over everything you see." icon_state = "eye_implant_syndicate" organ_flags = ORGAN_ROBOTIC | ORGAN_HIDDEN + hud_color = null diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm index a499b900de5..d604344ba98 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm @@ -5,7 +5,76 @@ organ_flags = ORGAN_ROBOTIC failing_desc = "seems to be broken." - var/implant_color = COLOR_WHITE + /// icon of the bodypart overlay we're going to be applying to our owner + var/aug_icon = 'icons/mob/human/species/misc/bodypart_overlay_augmentations.dmi' + /// icon_state of the bodypart overlay we're going to be applying to our owner + var/aug_overlay = null + /// Does the implant have an emissive overlay too? + var/emissive_overlay = FALSE + /// Bodypart overlay we're going to apply to whoever we're implanted into + var/datum/bodypart_overlay/augment/bodypart_aug = null + +/obj/item/organ/cyberimp/Initialize(mapload) + . = ..() + if (aug_overlay) + bodypart_aug = new(src) + +/obj/item/organ/cyberimp/Destroy() + QDEL_NULL(bodypart_aug) + return ..() + +/obj/item/organ/cyberimp/proc/get_overlay_state() + return aug_overlay + +/obj/item/organ/cyberimp/proc/get_overlay(image_layer, obj/item/bodypart/limb) + . = list() + . += image(icon = aug_icon, icon_state = get_overlay_state(), layer = image_layer) + if (emissive_overlay) + . += emissive_appearance(aug_icon, "[get_overlay_state()]_e", limb.owner || limb, image_layer) + +/obj/item/organ/cyberimp/on_bodypart_insert(obj/item/bodypart/limb) + . = ..() + if (bodypart_aug) + limb.add_bodypart_overlay(bodypart_aug) + +/obj/item/organ/cyberimp/on_bodypart_remove(obj/item/bodypart/limb) + . = ..() + if (bodypart_aug) + limb.remove_bodypart_overlay(bodypart_aug) + +/datum/bodypart_overlay/augment + layers = EXTERNAL_ADJACENT + /// Implant that owns this overlay + var/obj/item/organ/cyberimp/implant + +/datum/bodypart_overlay/augment/New(obj/item/organ/cyberimp/implant) + . = ..() + src.implant = implant + +/datum/bodypart_overlay/augment/Destroy(force) + implant = null + return ..() + +/datum/bodypart_overlay/augment/generate_icon_cache() + . = ..() + . += implant.get_overlay_state() + +/datum/bodypart_overlay/augment/get_overlay(layer, obj/item/bodypart/limb) + layer = bitflag_to_layer(layer) + var/list/imageset = implant.get_overlay(layer, limb) + if(blocks_emissive == EMISSIVE_BLOCK_NONE || !limb) + return imageset + + var/list/all_images = list() + for(var/image/overlay as anything in imageset) + all_images += overlay + all_images += emissive_blocker(overlay.icon, overlay.icon_state, limb, layer = overlay.layer, alpha = overlay.alpha) + + return all_images + +/obj/item/organ/cyberimp/feel_for_damage(self_aware) + // No feeling in implants (yet?) + return "" //[[[[BRAIN]]]] @@ -280,6 +349,7 @@ icon_state = "implant_mask" slot = ORGAN_SLOT_BREATHING_TUBE w_class = WEIGHT_CLASS_TINY + aug_overlay = "breathing_tube" /obj/item/organ/cyberimp/mouth/breathing_tube/emp_act(severity) . = ..() diff --git a/code/modules/surgery/organs/internal/ears/_ears.dm b/code/modules/surgery/organs/internal/ears/_ears.dm index 1dc461694e2..ab6b43ea20b 100644 --- a/code/modules/surgery/organs/internal/ears/_ears.dm +++ b/code/modules/surgery/organs/internal/ears/_ears.dm @@ -141,6 +141,10 @@ speech_args[SPEECH_MESSAGE] = message return COMPONENT_UPPERCASE_SPEECH +/obj/item/organ/ears/feel_for_damage(self_aware) + // Ear damage has audible effects, so we don't really need to "feel" it when self-examining + return "" + /obj/item/organ/ears/invincible damage_multiplier = 0 @@ -191,7 +195,15 @@ // Construct image of inner ears, apply to base ears as an overlay feature_key += "inner" var/mutable_appearance/inner_ears = ..() - inner_ears.appearance_flags = RESET_COLOR + inner_ears.appearance_flags = RESET_COLOR|KEEP_APART + if(limb.cached_color_filter) + inner_ears.color = limb.color + inner_ears = filter_appearance_recursive(inner_ears, limb.cached_color_filter) + if(limb.owner) + if(limb.owner.color) + inner_ears.color = limb.owner.color + if(limb.owner.cached_color_filter) + inner_ears = filter_appearance_recursive(inner_ears, limb.owner.cached_color_filter) feature_key = initial(feature_key) base_ears.overlays += inner_ears diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm index daf2504e0ee..351fef140b2 100644 --- a/code/modules/surgery/organs/internal/eyes/_eyes.dm +++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm @@ -37,8 +37,8 @@ /// Are these eyes immune to pepperspray? var/pepperspray_protect = FALSE - var/eye_color_left = "" //set to a hex code to override a mob's left eye color - var/eye_color_right = "" //set to a hex code to override a mob's right eye color + var/eye_color_left = null // set to a hex code to override a mob's left eye color + var/eye_color_right = null // set to a hex code to override a mob's right eye color var/eye_icon_state = "eyes" /// Do these eyes have blinking animations var/blink_animation = TRUE @@ -74,6 +74,13 @@ . = ..() receiver.cure_blind(NO_EYES) apply_damaged_eye_effects() + // Ensures that non-player mobs get their eye colors assigned, as players get them from prefs + if (ishuman(receiver)) + var/mob/living/carbon/human/as_human = receiver + if (!eye_color_left) + eye_color_left = as_human.eye_color_left + if (!eye_color_right) + eye_color_right = as_human.eye_color_right refresh(receiver, call_update = !special) RegisterSignal(receiver, COMSIG_ATOM_BULLET_ACT, PROC_REF(on_bullet_act)) RegisterSignal(receiver, COMSIG_COMPONENT_CLEAN_FACE_ACT, PROC_REF(on_face_wash)) @@ -90,9 +97,9 @@ return var/mob/living/carbon/human/affected_human = eye_owner - if(length(eye_color_left)) + if(eye_color_left) affected_human.add_eye_color_left(eye_color_left, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE) - if(length(eye_color_right)) + if(eye_color_right) affected_human.add_eye_color_right(eye_color_right, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE) refresh_atom_color_overrides() @@ -158,9 +165,9 @@ var/left_color = COLOR_WHITE var/right_color = COLOR_WHITE - if (length(eye_color_left)) + if (eye_color_left) left_color = eye_color_left - if (length(eye_color_right)) + if (eye_color_right) right_color = eye_color_right if (checked_color[ATOM_COLOR_TYPE_INDEX] == ATOM_COLOR_TYPE_FILTER) @@ -312,7 +319,7 @@ left_scar.blend_mode = BLEND_INSET_OVERLAY . += left_scar - if (iris_overlay && length(eye_color_left) && length(eye_color_right)) + if (iris_overlay && eye_color_left && eye_color_right) var/mutable_appearance/left_iris = mutable_appearance(icon, "[iris_overlay]_l") var/mutable_appearance/right_iris = mutable_appearance(icon, "[iris_overlay]_r") var/list/color_left = rgb2num(eye_color_left, COLORSPACE_HSL) @@ -408,6 +415,10 @@ damaged = TRUE +/obj/item/organ/eyes/feel_for_damage(self_aware) + // Eye damage has visual effects, so we don't really need to "feel" it when self-examining + return "" + #define BASE_BLINKING_DELAY 5 SECONDS #define RAND_BLINKING_DELAY 1 SECONDS #define BLINK_DURATION 0.15 SECONDS @@ -440,15 +451,7 @@ eyelid_right.render_target = "*[REF(parent)]_eyelid_right" parent.vis_contents += eyelid_left parent.vis_contents += eyelid_right - var/sync_blinking = synchronized_blinking && (parent.get_organ_loss(ORGAN_SLOT_BRAIN) < ASYNC_BLINKING_BRAIN_DAMAGE) - // Randomize order for unsynched animations - if (sync_blinking || prob(50)) - var/list/anim_times = animate_eyelid(eyelid_left, parent, sync_blinking) - animate_eyelid(eyelid_right, parent, sync_blinking, anim_times) - else - var/list/anim_times = animate_eyelid(eyelid_right, parent, sync_blinking) - animate_eyelid(eyelid_left, parent, sync_blinking, anim_times) - + animate_eyelids(parent) var/mutable_appearance/left_eyelid_overlay = mutable_appearance(layer = -BODY_LAYER, offset_spokesman = parent) var/mutable_appearance/right_eyelid_overlay = mutable_appearance(layer = -BODY_LAYER, offset_spokesman = parent) left_eyelid_overlay.render_source = "*[REF(parent)]_eyelid_left" @@ -460,14 +463,28 @@ . = list() var/prevent_loops = HAS_TRAIT(parent, TRAIT_PREVENT_BLINK_LOOPS) animate(eyelid, alpha = 0, time = 0, loop = (prevent_loops ? 0 : -1)) - for (var/i in 1 to (prevent_loops ? 1 : BLINK_LOOPS)) - var/wait_time = rand(BASE_BLINKING_DELAY - RAND_BLINKING_DELAY, BASE_BLINKING_DELAY + RAND_BLINKING_DELAY) + + var/wait_time = rand(BASE_BLINKING_DELAY - RAND_BLINKING_DELAY, BASE_BLINKING_DELAY + RAND_BLINKING_DELAY) + if (anim_times) + if (sync_blinking) + wait_time = anim_times[1] + anim_times.Cut(1, 2) + else + wait_time = rand(max(BASE_BLINKING_DELAY - RAND_BLINKING_DELAY, anim_times[1] - RAND_BLINKING_DELAY), anim_times[1]) + + animate(time = wait_time) + . += wait_time + + var/cycles = (prevent_loops ? 1 : BLINK_LOOPS) + for (var/i in 1 to cycles) if (anim_times) if (sync_blinking) wait_time = anim_times[1] anim_times.Cut(1, 2) else wait_time = rand(max(BASE_BLINKING_DELAY - RAND_BLINKING_DELAY, anim_times[1] - RAND_BLINKING_DELAY), anim_times[1]) + else + wait_time = rand(BASE_BLINKING_DELAY - RAND_BLINKING_DELAY, BASE_BLINKING_DELAY + RAND_BLINKING_DELAY) . += wait_time if (anim_times && !sync_blinking) // Make sure that we're somewhat in sync with the other eye @@ -475,8 +492,38 @@ anim_times.Cut(1, 2) animate(alpha = 255, time = 0) animate(time = BLINK_DURATION) - animate(alpha = 0, time = 0) - animate(time = wait_time) + if (i != cycles) + animate(alpha = 0, time = 0) + animate(time = wait_time) + +/obj/item/organ/eyes/proc/blink(duration = BLINK_DURATION, restart_animation = TRUE) + var/left_delayed = rand(50) + // Storing blink delay so mistimed blinks of lizards don't get cut short + var/blink_delay = synchronized_blinking ? rand(0, RAND_BLINKING_DELAY) : 0 + animate(eyelid_left, alpha = 0, time = 0) + if (!synchronized_blinking && left_delayed) + animate(time = blink_delay) + animate(alpha = 255, time = 0) + animate(time = duration) + animate(alpha = 0, time = 0) + animate(eyelid_right, alpha = 0, time = 0) + if (!synchronized_blinking && !left_delayed) + animate(time = blink_delay) + animate(alpha = 255, time = 0) + animate(time = duration) + animate(alpha = 0, time = 0) + if (restart_animation) + addtimer(CALLBACK(src, PROC_REF(animate_eyelids), owner), blink_delay + duration) + +/obj/item/organ/eyes/proc/animate_eyelids(mob/living/carbon/human/parent) + var/sync_blinking = synchronized_blinking && (parent.get_organ_loss(ORGAN_SLOT_BRAIN) < ASYNC_BLINKING_BRAIN_DAMAGE) + // Randomize order for unsynched animations + if (sync_blinking || prob(50)) + var/list/anim_times = animate_eyelid(eyelid_left, parent, sync_blinking) + animate_eyelid(eyelid_right, parent, sync_blinking, anim_times) + else + var/list/anim_times = animate_eyelid(eyelid_right, parent, sync_blinking) + animate_eyelid(eyelid_left, parent, sync_blinking, anim_times) /obj/effect/abstract/eyelid_effect name = "eyelid" @@ -653,8 +700,8 @@ /obj/item/organ/eyes/robotic/flashlight name = "flashlight eyes" desc = "It's two flashlights rigged together with some wire. Why would you put these in someone's head?" - eye_color_left ="fee5a3" - eye_color_right ="fee5a3" + eye_color_left ="#fee5a3" + eye_color_right ="#fee5a3" icon = 'icons/obj/lighting.dmi' icon_state = "flashlight_eyes" flash_protect = FLASH_PROTECTION_WELDER @@ -1028,7 +1075,6 @@ name = "snail eyes" desc = "These eyes seem to have a large range, but might be cumbersome with glasses." icon_state = "eyes_snail" - eyes_layer = ABOVE_BODY_FRONT_HEAD_LAYER //SKYRAT EDIT - Roundstart Snails eye_icon_state = "snail_eyes" blink_animation = FALSE diff --git a/code/modules/surgery/organs/internal/heart/_heart.dm b/code/modules/surgery/organs/internal/heart/_heart.dm index 65ef6de00fb..5875b3bbb43 100644 --- a/code/modules/surgery/organs/internal/heart/_heart.dm +++ b/code/modules/surgery/organs/internal/heart/_heart.dm @@ -138,6 +138,15 @@ /obj/item/organ/heart/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutantheart +/obj/item/organ/heart/feel_for_damage(self_aware) + if(owner.needs_heart() && (!beating || (organ_flags & ORGAN_FAILING))) + return span_boldwarning("[self_aware ? "Your heart is not beating!" : "You don't feel your heart beating."]") + if(damage < low_threshold) + return "" + if(damage < high_threshold) + return span_warning("[self_aware ? "Your heart hurts." : "It hurts, and your heart rate feels irregular."]") + return span_boldwarning("[self_aware ? "Your heart seriously hurts!" : "It seriously hurts, and your heart rate is all over the place."]") + /obj/item/organ/heart/cursed name = "cursed heart" desc = "A heart that, when inserted, will force you to pump it manually." diff --git a/code/modules/surgery/organs/internal/liver/_liver.dm b/code/modules/surgery/organs/internal/liver/_liver.dm index eb908e613f5..d7c8e0a5d5e 100644 --- a/code/modules/surgery/organs/internal/liver/_liver.dm +++ b/code/modules/surgery/organs/internal/liver/_liver.dm @@ -207,6 +207,13 @@ /obj/item/organ/liver/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutantliver +/obj/item/organ/liver/feel_for_damage(self_aware) + if(damage < low_threshold) + return + if(damage < high_threshold) + return span_warning("Your [self_aware ? "liver" : "lower abdomen"] feels sore.") + return span_boldwarning("Your [self_aware ? "liver" : "lower abdomen"] feels like it's on fire!") + // alien livers can ignore up to 15u of toxins, but they take x3 liver damage /obj/item/organ/liver/alien name = "alien liver" // doesnt matter for actual aliens because they dont take toxin damage diff --git a/code/modules/surgery/organs/internal/lungs/_lungs.dm b/code/modules/surgery/organs/internal/lungs/_lungs.dm index dfb4a20294a..f4b1f7bbbbe 100644 --- a/code/modules/surgery/organs/internal/lungs/_lungs.dm +++ b/code/modules/surgery/organs/internal/lungs/_lungs.dm @@ -378,8 +378,7 @@ /// Too much funny gas, time to get brain damage /obj/item/organ/lungs/proc/too_much_bz(mob/living/carbon/breather, datum/gas_mixture/breath, bz_pp, old_bz_pp) if(bz_pp > BZ_trip_balls_min) - breather.adjust_hallucinations(20 SECONDS) - breather.reagents.add_reagent(/datum/reagent/bz_metabolites, 5) + breather.reagents.add_reagent(/datum/reagent/bz_metabolites, clamp(bz_pp, 1, 5)) if(bz_pp > BZ_brain_damage_min && prob(33)) breather.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150, ORGAN_ORGANIC) @@ -854,6 +853,21 @@ /obj/item/organ/lungs/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutantlungs +/obj/item/organ/lungs/feel_for_damage(self_aware) + if(organ_flags & ORGAN_FAILING) + if(self_aware) + return span_boldwarning("Your lungs hurt madly[HAS_TRAIT(owner, TRAIT_NOBREATH) ? "" : ", and you can't breathe"]!") + return span_boldwarning("It hurts madly[HAS_TRAIT(owner, TRAIT_NOBREATH) ? "" : ", and you can't breathe"]!") + if(damage < low_threshold) + return "" + if(damage < high_threshold) + if(self_aware) + return span_warning("Your lungs feel tight[HAS_TRAIT(owner, TRAIT_NOBREATH) ? "" : ", and breathing is harder"].") + return span_warning("It feels tight[HAS_TRAIT(owner, TRAIT_NOBREATH) ? "" : ", and breathing is harder"].") + if(self_aware) + return span_boldwarning("Your lungs feel extremely tight[HAS_TRAIT(owner, TRAIT_NOBREATH) ? "" : ", and every breath is a struggle"].") + return span_boldwarning("It feels extremely tight[HAS_TRAIT(owner, TRAIT_NOBREATH) ? "" : ", and every breath is a struggle"].") + #define SMOKER_ORGAN_HEALTH (STANDARD_ORGAN_THRESHOLD * 0.75) #define SMOKER_LUNG_HEALING (STANDARD_ORGAN_HEALING * 0.75) diff --git a/code/modules/surgery/organs/internal/stomach/_stomach.dm b/code/modules/surgery/organs/internal/stomach/_stomach.dm index 7ae75c28334..05f860f92f9 100644 --- a/code/modules/surgery/organs/internal/stomach/_stomach.dm +++ b/code/modules/surgery/organs/internal/stomach/_stomach.dm @@ -32,8 +32,13 @@ /// Multiplier for hunger rate var/hunger_modifier = 1 - - var/operated = FALSE //whether the stomach's been repaired with surgery and can be fixed again or not + /// Whether the stomach's been repaired with surgery and can be fixed again or not + var/operated = FALSE + /// List of all atoms within the stomach + var/list/atom/movable/stomach_contents = list() + /// Have we been cut open with a scalpel? If so, how much damage from it we still have from it and can be recovered with a cauterizing tool. + /// All healing goes towards recovering this. + var/cut_open_damage = 0 /obj/item/organ/stomach/Initialize(mapload) . = ..() @@ -43,6 +48,10 @@ else reagents.flags |= REAGENT_HOLDER_ALIVE +/obj/item/organ/stomach/Destroy() + QDEL_LIST(stomach_contents) + return ..() + /obj/item/organ/stomach/on_life(seconds_per_tick, times_fired) . = ..() @@ -200,6 +209,133 @@ SEND_SIGNAL(src, COMSIG_STOMACH_AFTER_EAT, edible) // SKYRAT EDIT ADDITION - Hemophage Organs return +/obj/item/organ/stomach/proc/consume_thing(atom/movable/thing) + RegisterSignal(thing, COMSIG_MOVABLE_MOVED, PROC_REF(content_moved)) + RegisterSignal(thing, COMSIG_QDELETING, PROC_REF(content_deleted)) + stomach_contents += thing + thing.forceMove(owner || src) // We assert that if we have no owner, we will not be nullspaced + return TRUE + +/obj/item/organ/stomach/proc/content_deleted(atom/movable/source) + SIGNAL_HANDLER + stomach_contents -= source + +/obj/item/organ/stomach/proc/content_moved(atom/movable/source) + SIGNAL_HANDLER + if(source.loc == src || source.loc == owner) // not in us? out da list then + return + stomach_contents -= source + UnregisterSignal(source, list(COMSIG_MOVABLE_MOVED, COMSIG_QDELETING)) + +/obj/item/organ/stomach/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + if(loc == null && owner) + for(var/atom/movable/thing as anything in stomach_contents) + thing.forceMove(owner) + else if(loc != null) + for(var/atom/movable/thing as anything in stomach_contents) + thing.forceMove(src) + +/// Empties stomach contents on our current turf +/obj/item/organ/stomach/proc/empty_contents(chance = 100, damaging = FALSE, min_amount = 0) + var/emptied = 0 + var/atom/movable/drop_as = owner || src + var/drop_loc = drop_as.drop_location() + for (var/atom/movable/nugget as anything in stomach_contents) + var/total_chance = chance + // If min_amount is set, make sure that we vomit at least some of our contents + if (min_amount) + total_chance += 100 / (length(stomach_contents) + 1 - min_amount) + if (!prob(total_chance)) + continue + nugget.forceMove(drop_loc) + emptied += 1 + min_amount -= 1 + if (!damaging || QDELETED(owner)) + continue + var/damage = 5 + if (isitem(nugget)) + var/obj/item/as_item = nugget + damage = as_item.w_class * 2 + else if (isliving(nugget)) + var/mob/living/as_living = nugget + damage = as_living.mob_size * 5 + owner.apply_damage(damage, BRUTE, BODY_ZONE_CHEST, wound_bonus = CANT_WOUND, wound_clothing = FALSE) + return emptied + +/obj/item/organ/stomach/on_life(seconds_per_tick, times_fired) + . = ..() + if (!owner || SSmobs.times_fired % 3 != 0) + return + + if (!length(stomach_contents)) + return + + var/obj/item/bodypart/chest/chest = owner.get_bodypart(zone) + var/datum/wound/slash/flesh/slash = chest.get_wound_type(/datum/wound/slash/flesh) + // A chance to spill out all the contents + if (cut_open_damage && slash?.severity >= WOUND_SEVERITY_CRITICAL) + if (SPT_PROB(chest.get_damage(), seconds_per_tick * 3)) + var/emptied = empty_contents() + if (emptied > 0) + owner.apply_damage(emptied * 5, BRUTE, BODY_ZONE_CHEST, wound_bonus = CANT_WOUND, wound_clothing = FALSE) + playsound(get_turf(src), 'sound/effects/splat.ogg', 50) + owner.visible_message(span_danger("Contents of [owner]'s intestines spill out from a huge cut in [owner.p_their()] [chest]!"), + span_userdanger("Contents of your intestines spill out from a huge cut in your [chest]!")) + return + + // Digest the stuff in our stomach, just a bit + for (var/atom/movable/thing as anything in stomach_contents) + if (SEND_SIGNAL(thing, COMSIG_ATOM_STOMACH_DIGESTED, src, owner, seconds_per_tick) & COMPONENT_CANCEL_DIGESTION) + continue + var/acid_pwr = stomach_acid_power(thing, seconds_per_tick) + if (acid_pwr) + thing.acid_act(acid_pwr, 10) + + // If you have strong stomach you can eat glass, literally + if (!isitem(thing) || HAS_TRAIT(owner, TRAIT_STRONG_STOMACH)) + continue + + var/obj/item/as_item = thing + // If your stomach is cut open, it will hurt like hell + if (cut_open_damage) + if (chest && !chest.cavity_item && as_item.w_class <= WEIGHT_CLASS_NORMAL) + // Oopsie! + chest.cavity_item = as_item + stomach_contents -= as_item + continue + + owner.apply_damage(as_item.w_class * (as_item.sharpness ? 2 : 1), BRUTE, BODY_ZONE_CHEST, wound_bonus = CANT_WOUND, + sharpness = as_item.sharpness, attacking_item = as_item, wound_clothing = FALSE) + + if (!as_item.sharpness) + continue + + var/was_failing = (organ_flags & ORGAN_FAILING) + apply_organ_damage(as_item.w_class) + // Damage caused organ failure + if (was_failing || !(organ_flags & ORGAN_FAILING)) + continue + + cut_open_damage = maxHealth * 0.5 + if (HAS_TRAIT(owner, TRAIT_ANALGESIA)) + continue + + owner.visible_message(span_warning("[owner] doubles over in pain!"), span_userdanger("You feel a sharp, searing sensation in your stomach!")) + owner.Paralyze(1 SECONDS) + owner.adjust_eye_blur(5 SECONDS) + +/// Acid power of whatever we're digesting +/obj/item/organ/stomach/proc/stomach_acid_power(atom/movable/nomnom, seconds_per_tick) + if (isliving(nomnom)) // NO VORE ALLOWED + return 0 + // Yeah maybe don't, if something edible ended up here it should either handle itself or not be digested + if (IsEdible(nomnom)) + return 0 + if (HAS_TRAIT(owner, TRAIT_STRONG_STOMACH)) + return 10 + return 0 + /obj/item/organ/stomach/proc/handle_disgust(mob/living/carbon/human/disgusted, seconds_per_tick, times_fired) var/old_disgust = disgusted.old_disgust var/disgust = disgusted.disgust @@ -250,6 +386,8 @@ /obj/item/organ/stomach/on_mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() receiver.hud_used?.hunger?.update_appearance() + RegisterSignal(receiver, COMSIG_CARBON_VOMITED, PROC_REF(on_vomit)) + RegisterSignal(receiver, COMSIG_HUMAN_GOT_PUNCHED, PROC_REF(on_punched)) /obj/item/organ/stomach/on_mob_remove(mob/living/carbon/stomach_owner, special, movement_flags) if(ishuman(stomach_owner)) @@ -257,8 +395,83 @@ human_owner.clear_alert(ALERT_DISGUST) human_owner.clear_mood_event("disgust") stomach_owner.hud_used?.hunger?.update_appearance() + UnregisterSignal(stomach_owner, list(COMSIG_CARBON_VOMITED, COMSIG_HUMAN_GOT_PUNCHED)) return ..() +/obj/item/organ/stomach/feel_for_damage(self_aware) + if(damage < low_threshold) + return "" + if(damage < high_threshold) + return span_warning("Your stomach hurts.") + return span_boldwarning("Your stomach cramps in pain!") + +/// If damage is high enough, we may end up vomiting out whatever we had stored +/obj/item/organ/stomach/proc/on_punched(datum/source, mob/living/carbon/human/attacker, damage, attack_type, obj/item/bodypart/affecting, final_armor_block, kicking) + SIGNAL_HANDLER + if (!length(stomach_contents) || damage < 9 || final_armor_block || kicking) + return + if (owner.vomit(MOB_VOMIT_MESSAGE | MOB_VOMIT_FORCE)) + // Since we vomited with a force flag, we should've vomited out at least one item + owner.visible_message(span_danger("[owner] doubles over from [attacker]'s punch, vomiting out the contents of [owner.p_their()] stomach!")) + +/// 60% chance to spew out each item when vomiting +/obj/item/organ/stomach/proc/on_vomit(mob/living/carbon/vomiter, distance, force) + SIGNAL_HANDLER + // If we're forced to vomit, try to spew out at least one item + empty_contents(chance = 60, damaging = TRUE, min_amount = (force ? 1 : 0)) + +/obj/item/organ/stomach/tool_act(mob/living/user, obj/item/tool, list/modifiers) + if (tool.tool_behaviour == TOOL_SCALPEL) + if (cut_open_damage > 0) + balloon_alert(user, "already cut open!") + return ITEM_INTERACT_FAILURE + + balloon_alert(user, "cutting open...") + playsound(user, 'sound/items/handling/surgery/scalpel1.ogg', 75) + if (!do_after(user, 3 SECONDS, src)) + balloon_alert(user, "interrupted!") + apply_organ_damage(tool.force) + return ITEM_INTERACT_FAILURE + + playsound(user, 'sound/items/handling/surgery/scalpel2.ogg', 75) + var/emptied = empty_contents() + if (emptied > 0) + playsound(get_turf(src), 'sound/effects/splat.ogg', 50) + user.visible_message(span_warning("[user] cuts [src] open[emptied ? "!" : ", but it's empty."]"), span_notice("You cut [src] open[emptied ? "." : ", but there's nothing inside."]")) + cut_open_damage += apply_organ_damage(maxHealth * 0.5) + return ITEM_INTERACT_SUCCESS + + if (tool.tool_behaviour != TOOL_CAUTERY) + return ..() + + if (cut_open_damage <= 0) + balloon_alert(user, "fully intact!") + return ITEM_INTERACT_FAILURE + + playsound(user, 'sound/items/handling/surgery/cautery1.ogg', 75) + balloon_alert(user, "mending the incision...") + if (!do_after(user, 3 SECONDS, src)) + balloon_alert(user, "interrupted!") + apply_organ_damage(tool.force) + return ITEM_INTERACT_FAILURE + + playsound(user, 'sound/items/handling/surgery/cautery2.ogg', 75) + balloon_alert(user, "incision mended") + apply_organ_damage(-cut_open_damage) + cut_open_damage = 0 // Just in case + return ITEM_INTERACT_SUCCESS + +/obj/item/organ/stomach/apply_organ_damage(damage_amount, maximum, required_organ_flag) + . = ..() + // So after a while, or a bunch of stomach meds, even a cut stomach can recover + if (. < 0) + cut_open_damage = max(0, cut_open_damage + .) + +/obj/item/organ/stomach/examine(mob/user) + . = ..() + if (cut_open_damage) + . += span_danger("It has a sizeable cut in it, exposing its insides!") + /obj/item/organ/stomach/bone name = "mass of bones" desc = "You have no idea what this strange ball of bones does." @@ -302,6 +515,13 @@ emp_vulnerability = 40 metabolism_efficiency = 0.07 +/obj/item/organ/stomach/cybernetic/tier2/stomach_acid_power(atom/movable/nomnom) + if (isliving(nomnom)) + return 0 + if (IsEdible(nomnom)) + return 0 + return 20 + /obj/item/organ/stomach/cybernetic/tier3 name = "upgraded cybernetic stomach" desc = "An upgraded version of the cybernetic stomach, designed to improve further upon organic stomachs. Handles disgusting food very well." @@ -311,6 +531,13 @@ emp_vulnerability = 20 metabolism_efficiency = 0.1 +/obj/item/organ/stomach/cybernetic/tier2/stomach_acid_power(atom/movable/nomnom) + if (isliving(nomnom)) + return 0 + if (IsEdible(nomnom)) + return 0 + return 35 + /obj/item/organ/stomach/cybernetic/surplus name = "surplus prosthetic stomach" desc = "A mechanical plastic oval that utilizes sulfuric acid instead of stomach acid. \ diff --git a/code/modules/surgery/organs/internal/tongue/_tongue.dm b/code/modules/surgery/organs/internal/tongue/_tongue.dm index 0d4c61d8403..65a0374c9db 100644 --- a/code/modules/surgery/organs/internal/tongue/_tongue.dm +++ b/code/modules/surgery/organs/internal/tongue/_tongue.dm @@ -178,6 +178,10 @@ /obj/item/organ/tongue/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutanttongue +/obj/item/organ/tongue/feel_for_damage(self_aware) + // No effect + return "" + /obj/item/organ/tongue/lizard name = "forked tongue" desc = "A thin and long muscle typically found in reptilian races, apparently moonlights as a nose." diff --git a/code/modules/surgery/organs/organ_movement.dm b/code/modules/surgery/organs/organ_movement.dm index 61f9a8d2508..47edbea1b69 100644 --- a/code/modules/surgery/organs/organ_movement.dm +++ b/code/modules/surgery/organs/organ_movement.dm @@ -291,4 +291,19 @@ /// Proc that gets called when someone starts surgically inserting the organ /obj/item/organ/proc/pre_surgical_insertion(mob/living/user, mob/living/carbon/new_owner, target_zone) + if (!valid_zones) + return TRUE + + // Ensure that in case we're somehow placed elsewhere (HARS-esque bs) we don't break our zone + if (!valid_zones[target_zone]) + return FALSE + + swap_zone(target_zone) return TRUE + +/// Readjusts the organ to fit into a different body zone/slot +/obj/item/organ/proc/swap_zone(target_zone) + if (!valid_zones[target_zone]) + CRASH("[src]'s ([type]) swap_zone was called with invalid zone [target_zone]") + zone = target_zone + slot = valid_zones[zone] diff --git a/code/modules/tgui/external.dm b/code/modules/tgui/external.dm index f9e05f9e95a..5d93ee76541 100644 --- a/code/modules/tgui/external.dm +++ b/code/modules/tgui/external.dm @@ -90,6 +90,10 @@ // If UI is not interactive or usr calling Topic is not the UI user, bail. if(!ui || ui.status != UI_INTERACTIVE) return TRUE + if(action == "change_ui_state") + var/mob/living/user = ui.user + //write_preferences will make sure it's valid for href exploits. + user.client.prefs.write_preference(GLOB.preference_entries[layout_prefs_used], params["new_state"]) /** * public diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index 4a9463aca5c..a7136863222 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -37,8 +37,6 @@ var/datum/ui_state/state = null /// Rate limit client refreshes to prevent DoS. COOLDOWN_DECLARE(refresh_cooldown) - /// Are byond mouse events beyond the window passed in to the ui - var/mouse_hooked = FALSE /** * public @@ -107,8 +105,6 @@ window.send_message("update", get_payload( with_data = TRUE, with_static_data = TRUE)) - if(mouse_hooked) - window.set_mouse_macro() SStgui.on_open(src) return TRUE @@ -159,18 +155,6 @@ /datum/tgui/proc/set_autoupdate(autoupdate) src.autoupdate = autoupdate -/** - * public - * - * Enable/disable passing through byond mouse events to the window - * - * required value bool Enable/disable hooking. - */ -/datum/tgui/proc/set_mouse_hook(value) - src.mouse_hooked = value - //Handle unhooking/hooking on already open windows ? - - /** * public * @@ -248,7 +232,7 @@ "status" = status, "interface" = list( "name" = interface, - "layout" = user.client.prefs.read_preference(/datum/preference/choiced/tgui_layout), + "layout" = user.client.prefs.read_preference(src_object.layout_prefs_used), ), "refreshing" = refreshing, "window" = list( diff --git a/code/modules/tgui/tgui_window.dm b/code/modules/tgui/tgui_window.dm index 9fb846450e4..7fa6faecc68 100644 --- a/code/modules/tgui/tgui_window.dm +++ b/code/modules/tgui/tgui_window.dm @@ -25,19 +25,6 @@ var/initial_inline_html var/initial_inline_js var/initial_inline_css - var/mouse_event_macro_set = FALSE - - /** - * Static list used to map in macros that will then emit execute events to the tgui window - * A small disclaimer though I'm no tech wiz: I don't think it's possible to map in right or middle - * clicks in the current state, as they're keywords rather than modifiers. - */ - var/static/list/byondToTguiEventMap = list( - "MouseDown" = "byond/mousedown", - "MouseUp" = "byond/mouseup", - "Ctrl" = "byond/ctrldown", - "Ctrl+UP" = "byond/ctrlup", - ) /** * public @@ -233,8 +220,6 @@ /datum/tgui_window/proc/close(can_be_suspended = TRUE) if(!client) return - if(mouse_event_macro_set) - remove_mouse_macro() if(can_be_suspended && can_be_suspended()) log_tgui(client, context = "[id]/close (suspending)", @@ -398,32 +383,3 @@ /datum/tgui_window/vv_edit_var(var_name, var_value) return var_name != NAMEOF(src, id) && ..() - - -/datum/tgui_window/proc/set_mouse_macro() - if(mouse_event_macro_set) - return - - for(var/mouseMacro in byondToTguiEventMap) - var/command_template = ".output CONTROL PAYLOAD" - var/event_message = TGUI_CREATE_MESSAGE(byondToTguiEventMap[mouseMacro], null) - var target_control = is_browser \ - ? "[id]:update" \ - : "[id].browser:update" - var/with_id = replacetext(command_template, "CONTROL", target_control) - var/full_command = replacetext(with_id, "PAYLOAD", event_message) - - var/list/params = list() - params["parent"] = "default" //Technically this is external to tgui but whatever - params["name"] = mouseMacro - params["command"] = full_command - - winset(client, "[mouseMacro]Window[id]Macro", params) - mouse_event_macro_set = TRUE - -/datum/tgui_window/proc/remove_mouse_macro() - if(!mouse_event_macro_set) - stack_trace("Unsetting mouse macro on tgui window that has none") - for(var/mouseMacro in byondToTguiEventMap) - winset(client, null, "[mouseMacro]Window[id]Macro.parent=null") - mouse_event_macro_set = FALSE diff --git a/code/modules/tgui_input/alert.dm b/code/modules/tgui_input/alert.dm index 0b12184ba7a..b6df3fc4c3e 100644 --- a/code/modules/tgui_input/alert.dm +++ b/code/modules/tgui_input/alert.dm @@ -80,7 +80,7 @@ /datum/tgui_alert/Destroy(force) SStgui.close_uis(src) state = null - QDEL_NULL(buttons) + buttons?.Cut() return ..() /** diff --git a/code/modules/tgui_input/checkboxes.dm b/code/modules/tgui_input/checkboxes.dm index 9e548b9c136..622cd6d7e91 100644 --- a/code/modules/tgui_input/checkboxes.dm +++ b/code/modules/tgui_input/checkboxes.dm @@ -73,8 +73,7 @@ /datum/tgui_checkbox_input/Destroy(force) SStgui.close_uis(src) state = null - QDEL_NULL(items) - + items?.Cut() return ..() /datum/tgui_checkbox_input/proc/wait() diff --git a/code/modules/tgui_input/list.dm b/code/modules/tgui_input/list.dm index fcee265e5a8..1771d7758de 100644 --- a/code/modules/tgui_input/list.dm +++ b/code/modules/tgui_input/list.dm @@ -97,7 +97,8 @@ /datum/tgui_list_input/Destroy(force) SStgui.close_uis(src) state = null - QDEL_NULL(items) + items?.Cut() + items_map?.Cut() return ..() /** diff --git a/code/modules/transport/tram/tram_structures.dm b/code/modules/transport/tram/tram_structures.dm index 6f8251c7966..abfca37fb56 100644 --- a/code/modules/transport/tram/tram_structures.dm +++ b/code/modules/transport/tram/tram_structures.dm @@ -36,7 +36,6 @@ smoothing_flags = SMOOTH_BITMASK smoothing_groups = SMOOTH_GROUP_TRAM_STRUCTURE canSmoothWith = SMOOTH_GROUP_TRAM_STRUCTURE - can_be_unanchored = FALSE can_atmos_pass = ATMOS_PASS_DENSITY explosion_block = 3 receive_ricochet_chance_mod = 1.2 diff --git a/code/modules/transport/transport_module.dm b/code/modules/transport/transport_module.dm index 83fd824bd6a..5ba006456f3 100644 --- a/code/modules/transport/transport_module.dm +++ b/code/modules/transport/transport_module.dm @@ -381,7 +381,7 @@ var/turf/closed/mineral/dest_mineral_turf = dest_turf for(var/mob/client_mob in SSspatial_grid.orthogonal_range_search(dest_mineral_turf, SPATIAL_GRID_CONTENTS_TYPE_CLIENTS, 8)) shake_camera(client_mob, duration = 2, strength = 3) - dest_mineral_turf.gets_drilled(give_exp = FALSE) + dest_mineral_turf.gets_drilled() for(var/obj/structure/victim_structure in dest_turf.contents) if(QDELING(victim_structure)) diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 6c95835621a..d0d502b42c0 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -114,6 +114,7 @@ #include "can_see.dm" #include "card_mismatch.dm" #include "cardboard_cutouts.dm" +#include "cargo_crate_sanity.dm" #include "cargo_dep_order_locations.dm" #include "cargo_selling.dm" #include "chain_pull_through_space.dm" diff --git a/code/modules/unit_tests/blindness.dm b/code/modules/unit_tests/blindness.dm index e4e6a4667fd..6ab6058aa61 100644 --- a/code/modules/unit_tests/blindness.dm +++ b/code/modules/unit_tests/blindness.dm @@ -52,14 +52,14 @@ // Check for the status effect, duh TEST_ASSERT(dummy.is_blind(), "Dummy, [status_message], did not have the blind status effect.") // Being more technical, we need to check for client color and screen overlays - TEST_ASSERT(HAS_CLIENT_COLOR(dummy, /datum/client_colour/monochrome/blind), "Dummy, [status_message], did not have the monochrome client color.") + TEST_ASSERT(HAS_CLIENT_COLOR(dummy, /datum/client_colour/monochrome), "Dummy, [status_message], did not have the monochrome client color.") TEST_ASSERT(HAS_SCREEN_OVERLAY(dummy, /atom/movable/screen/fullscreen/blind), "Dummy, [status_message], did not have a blind screen overlay in their list of screens.") /datum/unit_test/blindness/proc/check_if_not_blind(mob/living/carbon/human/dummy, status_message = "after being cured of blindness") // Check for no status effect TEST_ASSERT(!dummy.is_blind(), "Dummy, [status_message], still had the blindness status effect.") // Check that the client color and screen overlay are gone - TEST_ASSERT(!HAS_CLIENT_COLOR(dummy, /datum/client_colour/monochrome/blind), "Dummy, [status_message], still had the monochrome client color.") + TEST_ASSERT(!HAS_CLIENT_COLOR(dummy, /datum/client_colour/monochrome), "Dummy, [status_message], still had the monochrome client color.") TEST_ASSERT(!HAS_SCREEN_OVERLAY(dummy, /atom/movable/screen/fullscreen/blind), "Dummy, [status_message], still had the blind sceen overlay.") /** diff --git a/code/modules/unit_tests/cargo_crate_sanity.dm b/code/modules/unit_tests/cargo_crate_sanity.dm new file mode 100644 index 00000000000..db1effb50d7 --- /dev/null +++ b/code/modules/unit_tests/cargo_crate_sanity.dm @@ -0,0 +1,42 @@ +/** + * This unit test loops through all cargo crates that are available to purchase, and confirms that they're below the expected sanity minimum when sold. + * This prevents us from merging a crate that sells for more that it costs to buy. + */ + +/datum/unit_test/cargo_crate_sanity + +/datum/unit_test/cargo_crate_sanity/Run() + + for(var/crate in subtypesof(/datum/supply_pack)) + var/datum/supply_pack/new_crate = allocate(crate) + if(new_crate.test_ignored) + continue // We can safely ignore custom supply packs like the stock market or mining supply crates, or packs that have innate randomness. + if(!new_crate?.crate_type) + continue + var/obj/crate_type = allocate(new_crate.crate_type) + var/turf/open/floor/testing_floor = get_turf(crate_type) + var/datum/export_report/minimum_cost = export_item_and_contents(crate_type, delete_unsold = TRUE, dry_run = TRUE) + var/crate_value = counterlist_sum(minimum_cost.total_value) + + var/obj/results = new_crate.generate(testing_floor) + var/datum/export_report/export_log = export_item_and_contents(results, apply_elastic = TRUE, delete_unsold = TRUE, export_market = EXPORT_MARKET_STATION) + + // The value of the crate and all of it's contents. + var/value = counterlist_sum(export_log.total_value) + + // We're selling the crate and it's contents for more value than it's supply_pack costs. + if(value > new_crate.get_cost()) + TEST_FAIL("Cargo crate [new_crate.type] had a sale value of [value], Selling for more than [new_crate.get_cost()], the cost to buy") + + // We're selling the crate & it's contents for less than the value of it's own crate, meaning you can buy and infinite number + if(crate_value > new_crate.get_cost()) + TEST_FAIL("Cargo crate [new_crate.type] container sells for [crate_value], Selling for more than [new_crate.get_cost()], the cost to buy") + for(var/atom/stuff as anything in results.contents) + qdel(stuff) + stuff = null + + qdel(results) + results = null + new_crate = null + minimum_cost = null + export_log = null diff --git a/code/modules/unit_tests/changeling.dm b/code/modules/unit_tests/changeling.dm index bdcc9b2d281..b9d06434bde 100644 --- a/code/modules/unit_tests/changeling.dm +++ b/code/modules/unit_tests/changeling.dm @@ -82,8 +82,7 @@ ling.dna.mutant_bodyparts["spines"] = list(MUTANT_INDEX_NAME = "Long + Membrane", MUTANT_INDEX_COLOR_LIST = list("#886600", "#886600", "#886600")) // SKYRAT EDIT CHANGE - ORIGINAL: ling.dna.features["spines"] = "Long + Membrane" ling.dna.body_markings["chest"] = list("Light Belly" = list("#886600", 0)) // SKYRAT EDIT CHANGE - ORIGINAL : ling.dna.features[lizard_markings] = list("Light Belly") ling.dna.features["legs"] = DIGITIGRADE_LEGS - ling.eye_color_left = COLOR_WHITE - ling.eye_color_right = COLOR_WHITE + ling.set_eye_color(COLOR_WHITE) ling.dna.update_ui_block(DNA_EYE_COLOR_LEFT_BLOCK) ling.dna.update_ui_block(DNA_EYE_COLOR_RIGHT_BLOCK) ling.set_species(/datum/species/lizard) diff --git a/code/modules/unit_tests/client_colours.dm b/code/modules/unit_tests/client_colours.dm index 55b6e0b24ad..7275394eb4f 100644 --- a/code/modules/unit_tests/client_colours.dm +++ b/code/modules/unit_tests/client_colours.dm @@ -5,5 +5,11 @@ for(var/datum/client_colour/colour as anything in subtypesof(/datum/client_colour)) // colours can be color matrices (lists), which initial() cannot read. colour = new colour - if(!color_to_full_rgba_matrix(colour.colour, FALSE)) - TEST_FAIL("[colour.type] has an invalid default colour value: [colour.colour]") + if (islist(colour.color)) + var/list/potential_filter = colour.color + // If our list has "type" in it then its a filter, ignore that + if (potential_filter["type"]) + continue + + if(!color_to_full_rgba_matrix(colour.color, FALSE)) + TEST_FAIL("[colour.type] has an invalid default colour value: [colour.color]") diff --git a/code/modules/unit_tests/combat_pistol_whip.dm b/code/modules/unit_tests/combat_pistol_whip.dm index 4a3a45b9e3f..cafecd4f59e 100644 --- a/code/modules/unit_tests/combat_pistol_whip.dm +++ b/code/modules/unit_tests/combat_pistol_whip.dm @@ -15,27 +15,27 @@ TEST_ASSERT_EQUAL(gun.get_ammo(countchambered = TRUE), expected_ammo, "Gun spawned without a full magazine, \ when it should spawn with mag size + 1 (chambered) rounds.") - // Combat mode in melee range -> pistol whip + // Combat mode in melee range with RMB -> pistol whip attacker.set_combat_mode(TRUE) - click_wrapper(attacker, victim) + click_wrapper(attacker, victim, list(RIGHT_CLICK = TRUE, BUTTON = RIGHT_CLICK)) TEST_ASSERT_NOTEQUAL(victim.getBruteLoss(), 0, "Victim did not take brute damage from being pistol-whipped.") TEST_ASSERT_EQUAL(gun.get_ammo(countchambered = TRUE), expected_ammo, "The gun fired a shot when it was used for a pistol whip.") victim.fully_heal() - // No combat mode -> point blank shot - attacker.set_combat_mode(FALSE) + // Combat mode LMB -> point blank shot + attacker.set_combat_mode(TRUE) click_wrapper(attacker, victim) TEST_ASSERT_NOTEQUAL(victim.getBruteLoss(), 0, "Victim did not take brute damage from being fired upon point-blank.") TEST_ASSERT(locate(/obj/item/ammo_casing/c9mm) in attacker.loc, "The gun did not eject a casing when it was used for a point-blank shot.") TEST_ASSERT_EQUAL(gun.get_ammo(countchambered = TRUE), expected_ammo - 1, "The gun did not fire a shot when it was used for a point-blank shot.") victim.fully_heal() - // Combat mode in melee range with bayonet -> bayonet stab + // Combat mode RMB click in melee range with bayonet -> bayonet stab var/obj/item/knife/combat/knife = EASY_ALLOCATE() gun.AddComponent(/datum/component/bayonet_attachable, starting_bayonet = knife) attacker.set_combat_mode(TRUE) - click_wrapper(attacker, victim) + click_wrapper(attacker, victim, list(RIGHT_CLICK = TRUE, BUTTON = RIGHT_CLICK)) TEST_ASSERT_NOTEQUAL(victim.getBruteLoss(), 0, "Victim did not take brute damage from being bayonet stabbed.") victim.fully_heal() @@ -56,5 +56,5 @@ butcher_comp.speed = 1 SECONDS butcher.put_in_active_hand(gun, forced = TRUE) - click_wrapper(butcher, meat) + click_wrapper(butcher, meat, list(RIGHT_CLICK = TRUE, BUTTON = RIGHT_CLICK)) TEST_ASSERT(DOING_INTERACTION(butcher, meat), "The butcher did not start butchering the monkey when using a bayonetted weapon.") diff --git a/code/modules/unit_tests/fish_unit_tests.dm b/code/modules/unit_tests/fish_unit_tests.dm index 62711753eb8..1d6e9e1a0ac 100644 --- a/code/modules/unit_tests/fish_unit_tests.dm +++ b/code/modules/unit_tests/fish_unit_tests.dm @@ -149,7 +149,6 @@ /datum/fish_trait/dummy incompatible_traits = list(/datum/fish_trait/dummy/two) inheritability = 100 - diff_traits_inheritability = 100 reagents_to_add = list(/datum/reagent/fishdummy = FISH_REAGENT_AMOUNT) /datum/fish_trait/dummy/apply_to_fish(obj/item/fish/fish) diff --git a/code/modules/unit_tests/focus_only_tests.dm b/code/modules/unit_tests/focus_only_tests.dm index 5530d7418a7..bd2596e16d6 100644 --- a/code/modules/unit_tests/focus_only_tests.dm +++ b/code/modules/unit_tests/focus_only_tests.dm @@ -56,3 +56,6 @@ /// Checks icon states generated at runtime are valid /datum/unit_test/focus_only/runtime_icon_states + +/// Checks that foodtypes are the same for food whether it's spawned or crafted (with the exact required types) +/datum/unit_test/focus_only/check_foodtypes diff --git a/code/modules/unit_tests/metabolizing.dm b/code/modules/unit_tests/metabolizing.dm index 5397bc13e4f..8aeebb0b86b 100644 --- a/code/modules/unit_tests/metabolizing.dm +++ b/code/modules/unit_tests/metabolizing.dm @@ -23,11 +23,12 @@ SSmobs.pause() var/mob/living/carbon/human/user = allocate(/mob/living/carbon/human/consistent) - var/obj/item/reagent_containers/pill/pill = allocate(/obj/item/reagent_containers/pill) + var/obj/item/reagent_containers/applicator/pill/pill = allocate(/obj/item/reagent_containers/applicator/pill) var/datum/reagent/drug/methamphetamine/meth = /datum/reagent/drug/methamphetamine // Give them enough meth to be consumed in 2 metabolizations pill.reagents.add_reagent(meth, 1.9 * initial(meth.metabolization_rate) * SSMOBS_DT) + pill.layers_remaining = 0 pill.interact_with_atom(user, user) user.Life(SSMOBS_DT) @@ -63,8 +64,8 @@ pill_syringe_mind.active = TRUE pill_syringe_mind.transfer_to(pill_syringe_user) - var/obj/item/reagent_containers/pill/pill = allocate(/obj/item/reagent_containers/pill) - var/obj/item/reagent_containers/pill/pill_two = allocate(/obj/item/reagent_containers/pill) + var/obj/item/reagent_containers/applicator/pill/pill = allocate(/obj/item/reagent_containers/applicator/pill) + var/obj/item/reagent_containers/applicator/pill/pill_two = allocate(/obj/item/reagent_containers/applicator/pill) var/obj/item/reagent_containers/syringe/syringe = allocate(/obj/item/reagent_containers/syringe) @@ -77,6 +78,7 @@ // Let's start with stomach metabolism pill.reagents.add_reagent(meth.type, 5) + pill.layers_remaining = 0 pill.interact_with_atom(pill_user, pill_user) // Set the metabolism efficiency to 1.0 so it transfers all reagents to the body in one go. @@ -105,6 +107,7 @@ // One half pill pill_two.reagents.add_reagent(meth.type, (5 * 0.5) + 1) + pill_two.layers_remaining = 0 pill_two.interact_with_atom(pill_syringe_user, pill_syringe_user) syringe.melee_attack_chain(pill_syringe_user, pill_syringe_user) diff --git a/code/modules/unit_tests/pills.dm b/code/modules/unit_tests/pills.dm index 8567bf390ea..e42c09defdc 100644 --- a/code/modules/unit_tests/pills.dm +++ b/code/modules/unit_tests/pills.dm @@ -1,10 +1,18 @@ /datum/unit_test/pills/Run() var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human/consistent) - var/obj/item/reagent_containers/pill/iron/pill = allocate(/obj/item/reagent_containers/pill/iron) + var/obj/item/reagent_containers/applicator/pill/iron/pill_one = allocate(/obj/item/reagent_containers/applicator/pill/iron) + var/obj/item/reagent_containers/applicator/pill/iron/pill_two = allocate(/obj/item/reagent_containers/applicator/pill/tox) - TEST_ASSERT_EQUAL(human.has_reagent(/datum/reagent/iron), FALSE, "Human somehow has iron before taking pill") + TEST_ASSERT_EQUAL(human.has_reagent(/datum/reagent/iron), FALSE, "Human somehow has iron before taking the any pills") + TEST_ASSERT_EQUAL(human.has_reagent(/datum/reagent/toxin), FALSE, "Human somehow has iron before taking the any pills") - pill.interact_with_atom(human, human) + pill_one.layers_remaining = 0 + pill_one.interact_with_atom(human, human) human.Life(SSMOBS_DT) - TEST_ASSERT(human.has_reagent(/datum/reagent/iron), "Human doesn't have iron after taking pill") + TEST_ASSERT(human.has_reagent(/datum/reagent/iron), "Human doesn't have iron after taking the first pill") + + pill_two.layers_remaining = 4 + pill_two.interact_with_atom(human, human) + human.Life(SSMOBS_DT) + TEST_ASSERT_EQUAL(human.has_reagent(/datum/reagent/toxin), FALSE, "Human has toxin despite consuming a pill with four layers after a single tick") diff --git a/code/modules/unit_tests/reagent_mob_expose.dm b/code/modules/unit_tests/reagent_mob_expose.dm index bf31291e365..20aa9c72e03 100644 --- a/code/modules/unit_tests/reagent_mob_expose.dm +++ b/code/modules/unit_tests/reagent_mob_expose.dm @@ -6,9 +6,9 @@ /datum/reagent/method_patch_test/expose_mob(mob/living/target, methods = PATCH, reac_volume, show_message = TRUE) . = ..() if(methods & PATCH) - target.health = 90 + target.setBruteLoss(20) if(methods & INJECT) - target.health = 80 + target.setBruteLoss(10) /datum/unit_test/reagent_mob_expose/Run() // Life() is handled just by tests @@ -17,7 +17,7 @@ var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human/consistent) var/obj/item/reagent_containers/dropper/dropper = allocate(/obj/item/reagent_containers/dropper) var/obj/item/reagent_containers/cup/glass/bottle/drink = allocate(/obj/item/reagent_containers/cup/glass/bottle) - var/obj/item/reagent_containers/pill/patch/patch = allocate(/obj/item/reagent_containers/pill/patch) + var/obj/item/reagent_containers/applicator/patch/patch = allocate(/obj/item/reagent_containers/applicator/patch) var/obj/item/reagent_containers/syringe/syringe = allocate(/obj/item/reagent_containers/syringe) // INGEST @@ -34,8 +34,8 @@ TEST_ASSERT(human.fire_stacks < 0, "Human still has fire stacks after touching water") // VAPOR + human.fully_heal(ALL) TEST_ASSERT_NULL(human.has_status_effect(/datum/status_effect/drowsiness), "Human is drowsy at the start of testing") - drink.reagents.clear_reagents() drink.reagents.add_reagent(/datum/reagent/nitrous_oxide, 10) drink.reagents.trans_to(human, 10, methods = VAPOR) TEST_ASSERT_NOTNULL(human.has_status_effect(/datum/status_effect/drowsiness), "Human is not drowsy after exposure to vapors") @@ -46,24 +46,26 @@ TEST_ASSERT(human.fire_stacks < old_fire_stacks, "Human does not get wetter after being exposed to water by vapors") // PATCH - human.health = 100 - TEST_ASSERT_EQUAL(human.health, 100, "Human health did not set properly") + human.fully_heal(ALL) + TEST_ASSERT_EQUAL(human.getBruteLoss(), 0, "Human health did not set properly") patch.reagents.add_reagent(/datum/reagent/method_patch_test, 1) patch.self_delay = 0 patch.interact_with_atom(human, human) - TEST_ASSERT_EQUAL(human.health, 90, "Human health did not update after patch was applied") + patch.get_embed().process(SSdcs.wait / 10) + human.Life(SSMOBS_DT) + TEST_ASSERT_EQUAL(human.getBruteLoss(), 20, "Human health did not update after patch was applied") // INJECT syringe.reagents.add_reagent(/datum/reagent/method_patch_test, 1) syringe.melee_attack_chain(human, human) - TEST_ASSERT_EQUAL(human.health, 80, "Human health did not update after injection from syringe") + TEST_ASSERT_EQUAL(human.getBruteLoss(), 10, "Human health did not update after injection from syringe") // INHALE - TEST_ASSERT_NULL(human.has_status_effect(/datum/status_effect/hallucination), "Human is drowsy at the start of testing") - drink.reagents.clear_reagents() + human.fully_heal(ALL) + TEST_ASSERT_NULL(human.has_status_effect(/datum/status_effect/hallucination), "Human is hallucinating at the start of testing") drink.reagents.add_reagent(/datum/reagent/nitrous_oxide, 10) drink.reagents.trans_to(human, 10, methods = INHALE) - TEST_ASSERT_NOTNULL(human.has_status_effect(/datum/status_effect/hallucination), "Human is not drowsy after exposure to vapors") + TEST_ASSERT_NOTNULL(human.has_status_effect(/datum/status_effect/hallucination), "Human is not hallucinating after exposure to vapors") /datum/unit_test/reagent_mob_expose/Destroy() SSmobs.ignite() diff --git a/code/modules/unit_tests/stomach.dm b/code/modules/unit_tests/stomach.dm index 69ef7c06628..368b55e8228 100644 --- a/code/modules/unit_tests/stomach.dm +++ b/code/modules/unit_tests/stomach.dm @@ -6,8 +6,10 @@ var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human/consistent) var/obj/item/food/hotdog/debug/fooditem = allocate(/obj/item/food/hotdog/debug) var/obj/item/organ/stomach/belly = human.get_organ_slot(ORGAN_SLOT_STOMACH) - var/obj/item/reagent_containers/pill/pill = allocate(/obj/item/reagent_containers/pill) + var/obj/item/reagent_containers/applicator/pill/pill_one = allocate(/obj/item/reagent_containers/applicator/pill) + var/obj/item/reagent_containers/applicator/pill/pill_two = allocate(/obj/item/reagent_containers/applicator/pill) var/datum/reagent/drug/methamphetamine/meth = /datum/reagent/drug/methamphetamine + var/datum/reagent/drug/kronkaine/krok = /datum/reagent/drug/kronkaine TEST_ASSERT_EQUAL(human.has_reagent(/datum/reagent/consumable/ketchup), FALSE, "Human somehow has ketchup before eating") @@ -17,13 +19,25 @@ TEST_ASSERT_EQUAL(human.reagents.has_reagent(/datum/reagent/consumable/ketchup), FALSE, "Human body has ketchup after eating it should only be in the stomach") //Give them meth and let it kick in - pill.reagents.add_reagent(meth, 1.9 * initial(meth.metabolization_rate) * SSMOBS_DT) - pill.interact_with_atom(human, human) + pill_one.reagents.add_reagent(meth, 1.9 * initial(meth.metabolization_rate) * SSMOBS_DT) + pill_one.layers_remaining = 0 + pill_one.interact_with_atom(human, human) human.Life(SSMOBS_DT) TEST_ASSERT(human.reagents.has_reagent(meth), "Human body does not have meth after life tick") TEST_ASSERT(human.has_movespeed_modifier(/datum/movespeed_modifier/reagent/methamphetamine), "Human consumed meth, but did not gain movespeed modifier") + // Check if pills properly get stored in stomachs + pill_two.reagents.add_reagent(krok, 1.9 * initial(krok.metabolization_rate) * SSMOBS_DT) + pill_two.layers_remaining = 99 + pill_two.interact_with_atom(human, human) + human.Life(SSMOBS_DT) + + TEST_ASSERT_EQUAL(human.reagents.has_reagent(krok), FALSE, "Human body has krokaine after taking a pill despite it having 99 layers") + TEST_ASSERT(pill_two in belly.stomach_contents, "Krokaine pill did not get stored in target's stomach") + TEST_ASSERT(pill_two.loc == human, "Krokaine pill was not put in target's body") + + QDEL_NULL(pill_two) belly.Remove(human) human.reagents.remove_all(human.reagents.total_volume) @@ -33,8 +47,6 @@ TEST_ASSERT_EQUAL(human.has_reagent(/datum/reagent/consumable/ketchup), FALSE, "Human has ketchup without a stomach") - - /datum/unit_test/stomach/Destroy() SSmobs.ignite() return ..() diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm index 01d6ad9a102..c659a3bb7f9 100644 --- a/code/modules/unit_tests/unit_test.dm +++ b/code/modules/unit_tests/unit_test.dm @@ -136,15 +136,18 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) var/data_filename = "data/screenshots/[path_prefix]_[name].png" fcopy(icon, data_filename) log_test("\t[path_prefix]_[name] was found, putting in data/screenshots") - else if (fexists("code")) - // We are probably running in a local build - fcopy(icon, filename) - TEST_FAIL("Screenshot for [name] did not exist. One has been created.") else - // We are probably running in real CI, so just pretend it worked and move on +#ifdef CIBUILDING + // We are runing in real CI, so just pretend it worked and move on fcopy(icon, "data/screenshots_new/[path_prefix]_[name].png") log_test("\t[path_prefix]_[name] was put in data/screenshots_new") +#else + // We are probably running in a local build + fcopy(icon, filename) + TEST_FAIL("Screenshot for [name] did not exist. One has been created.") +#endif + /// Helper for screenshot tests to take an image of an atom from all directions and insert it into one icon /datum/unit_test/proc/get_flat_icon_for_all_directions(atom/thing, no_anim = TRUE) diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm index cf61ad53d54..cd8a7afb096 100644 --- a/code/modules/uplink/uplink_items/nukeops.dm +++ b/code/modules/uplink/uplink_items/nukeops.dm @@ -86,6 +86,21 @@ item = /obj/item/ammo_box/magazine/m12g/slug purchasable_from = parent_type::purchasable_from | UPLINK_SPY +/datum/uplink_item/ammo_nuclear/basic/flechette + name = "12g Flechette Shells (Bulldog)" + desc = "An alternative 8-round flechette magazine for use in the Bulldog shotgun. \ + Getting stopped by armor? Why not flechette? Turn meat and kevlar to tatters!" + item = /obj/item/ammo_box/magazine/m12g/flechette + purchasable_from = parent_type::purchasable_from | UPLINK_SPY + +/datum/uplink_item/ammo_nuclear/basic/donk + name = "12g Donk Co. 'Donk Spike' Flechette Magazine Box (Bulldog)" + desc = "A whole box of 8-round Donk Co. 'Donk Spike' flechette magazines for use in the \ + Bulldog shotgun. Sponsored by the Donk Corporation! A whole box of these magazines for \ + the price of one purchase! WARNING: DO NOT SNIFF THE MAGAZINES!" + item = /obj/item/storage/box/syndie_kit/shotgun_surplus + purchasable_from = parent_type::purchasable_from | UPLINK_SPY + /datum/uplink_item/ammo_nuclear/incendiary/dragon name = "12g Dragon's Breath Drum (Bulldog)" desc = "An alternative 8-round dragon's breath magazine for use in the Bulldog shotgun. \ diff --git a/code/modules/uplink/uplink_items/spy_unique.dm b/code/modules/uplink/uplink_items/spy_unique.dm index 7d2f5fb34cb..f0e25d7bb68 100644 --- a/code/modules/uplink/uplink_items/spy_unique.dm +++ b/code/modules/uplink/uplink_items/spy_unique.dm @@ -148,3 +148,10 @@ name = /datum/uplink_item/implants/nuclear/thermals::name desc = /datum/uplink_item/implants/nuclear/thermals::desc item = /obj/item/autosurgeon/syndicate/thermal_eyes/single_use + +/datum/uplink_item/spy_unique/nunchaku + name = "Syndie Fitness Nunchuks" + desc = "Heavyweight titanium nunchucks, quickly knocking opponents to the ground, then just as easily smashing the opponent afterward." + item = /obj/item/melee/baton/nunchaku + cost = SPY_UPPER_COST_THRESHOLD + uplink_item_flags = SYNDIE_ILLEGAL_TECH | SYNDIE_TRIPS_CONTRABAND diff --git a/code/modules/uplink/uplink_items/stealthy_tools.dm b/code/modules/uplink/uplink_items/stealthy_tools.dm index 5959be8e9fd..549d2be26d5 100644 --- a/code/modules/uplink/uplink_items/stealthy_tools.dm +++ b/code/modules/uplink/uplink_items/stealthy_tools.dm @@ -71,10 +71,10 @@ cost *= 3 /datum/uplink_item/stealthy_tools/mulligan - name = "Mulligan" - desc = "Screwed up and have security on your tail? This handy syringe will give you a completely new identity \ - and appearance." - item = /obj/item/reagent_containers/syringe/mulligan + name = "Mulligan Kit" + desc = "Screwed up and have security on your tail? This handy syringe and set of documents will give you a completely new identity \ + and appearance, intercepting Nanotrasen communications to announce you as a freshly recruited Assistant." + item = /obj/item/storage/box/syndie_kit/mulligan cost = 4 surplus = 30 purchasable_from = ~(UPLINK_ALL_SYNDIE_OPS) @@ -83,7 +83,7 @@ name = "Radio Jammer" desc = "This device will disrupt any nearby outgoing radio communication when activated. Does not affect binary chat." item = /obj/item/jammer - cost = 5 + cost = 1 /datum/uplink_item/stealthy_tools/smugglersatchel name = "Smuggler's Satchel" diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index e4330bb3b90..51704538d19 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -303,7 +303,7 @@ QDEL_NULL(spark_system) QDEL_NULL(smoke_system) QDEL_NULL(ui_view) - QDEL_NULL(trackers) + QDEL_LIST(trackers) QDEL_NULL(chassis_camera) GLOB.mechas_list -= src //global mech list diff --git a/code/modules/vehicles/wheelchair.dm b/code/modules/vehicles/wheelchair.dm index cc6af6a2f1b..c2c95efd161 100644 --- a/code/modules/vehicles/wheelchair.dm +++ b/code/modules/vehicles/wheelchair.dm @@ -132,6 +132,9 @@ user.visible_message(span_notice("[user] collapses [src]."), span_notice("You collapse [src].")) var/obj/vehicle/ridden/wheelchair/wheelchair_folded = new foldabletype(get_turf(src)) user.put_in_hands(wheelchair_folded) + if (bell_attached) + visible_message(span_notice("The bell attached to [src] falls to the ground.")) + bell_attached.forceMove(drop_location()) qdel(src) /obj/item/wheelchair/attack_self(mob/user) //Deploys wheelchair on in-hand use diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 9e1cdbf446d..37632abe730 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -381,11 +381,9 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) found_anything = FALSE for(var/datum/data/vending_product/record as anything in shuffle(product_records)) //first dump any of the items that have been returned, in case they contain the nuke disk or something - for(var/obj/returned_obj_to_dump in record.returned_products) - LAZYREMOVE(record.returned_products, returned_obj_to_dump) - returned_obj_to_dump.forceMove(get_turf(src)) + for(var/i in 1 to LAZYLEN(record.returned_products)) + var/obj/item/returned_obj_to_dump = dispense(record, get_turf(src), dispense_returned = TRUE) step(returned_obj_to_dump, pick(GLOB.alldirs)) - record.amount-- if(record.amount <= 0) //Try to use a record that actually has something to dump. continue @@ -791,13 +789,9 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) if(record.amount <= 0) //Try to use a record that actually has something to dump. continue - if(record.amount > LAZYLEN(record.returned_products)) //always give out new stuff that costs before free returned stuff, because of the risk getting gibbed involved - dispense(record, get_turf(src), silent = TRUE) - else - var/obj/returned_obj_to_dump = LAZYACCESS(record.returned_products, LAZYLEN(record.returned_products)) //first in, last out - LAZYREMOVE(record.returned_products, returned_obj_to_dump) - returned_obj_to_dump.forceMove(get_turf(src)) - record.amount-- + // Always give out new stuff that costs before free returned stuff, because of the risk getting gibbed involved + var/only_returned_left = (record.amount <= LAZYLEN(record.returned_products)) + dispense(record, get_turf(src), silent = TRUE, dispense_returned = only_returned_left) break deploy_credits() @@ -1077,9 +1071,14 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) var/mob/living/carbon/carbon_target = atom_target for(var/i in 1 to num_shards) var/obj/item/shard/shard = new /obj/item/shard(get_turf(carbon_target)) - shard.set_embed(/datum/embedding/glass_candy) + var/datum/embedding/embed = shard.get_embed() + embed.embed_chance = 100 + embed.ignore_throwspeed_threshold = TRUE + embed.impact_pain_mult = 1 carbon_target.hitby(shard, skipcatch = TRUE, hitpush = FALSE) - shard.set_embed(initial(shard.embed_type)) + embed.embed_chance = initial(embed.embed_chance) + embed.ignore_throwspeed_threshold = initial(embed.ignore_throwspeed_threshold) + embed.impact_pain_mult = initial(embed.impact_pain_mult) return TRUE if (VENDOR_CRUSH_CRIT_PIN) // pin them beneath the machine until someone untilts it if (!isliving(atom_target)) @@ -1461,14 +1460,11 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) use_energy(active_power_usage) if(icon_vend) //Show the vending animation if needed flick(icon_vend,src) - var/obj/item/vended_item - if(!LAZYLEN(item_record.returned_products)) //always give out free returned stuff first, e.g. to avoid walling a traitor objective in a bag behind paid items - vended_item = dispense(item_record, get_turf(src)) - else - playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) - vended_item = LAZYACCESS(item_record.returned_products, LAZYLEN(item_record.returned_products)) //first in, last out - LAZYREMOVE(item_record.returned_products, vended_item) - vended_item.forceMove(get_turf(src)) + + // Always give out free returned stuff first, e.g. to avoid walling a traitor objective in a bag behind paid items + var/returned_available = LAZYLEN(item_record.returned_products) + var/obj/item/vended_item = dispense(item_record, get_turf(src), dispense_returned = returned_available) + if(greyscale_colors) vended_item.set_greyscale(colors=greyscale_colors) if(usr.CanReach(src) && usr.put_in_hands(vended_item)) @@ -1479,19 +1475,27 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) vend_ready = TRUE ///Common proc that dispenses an item. Called when the item is vended, or gotten some other way. -/obj/machinery/vending/proc/dispense(datum/data/vending_product/item_record, atom/spawn_location, silent = FALSE) +/obj/machinery/vending/proc/dispense(datum/data/vending_product/item_record, atom/spawn_location, silent = FALSE, dispense_returned = FALSE) SHOULD_CALL_PARENT(TRUE) if(!silent) playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) - var/obj/item/vended_item = new item_record.product_path (spawn_location) - if(vended_item.type in contraband) - ADD_TRAIT(vended_item, TRAIT_CONTRABAND, INNATE_TRAIT) - on_dispense(vended_item) + + var/obj/item/vended_item + if(dispense_returned) + vended_item = LAZYACCESS(item_record.returned_products, LAZYLEN(item_record.returned_products)) //first in, last out + LAZYREMOVE(item_record.returned_products, vended_item) + vended_item.forceMove(spawn_location) + else + vended_item = new item_record.product_path(spawn_location) + if(vended_item.type in contraband) + ADD_TRAIT(vended_item, TRAIT_CONTRABAND, INNATE_TRAIT) + + on_dispense(vended_item, dispense_returned) item_record.amount-- return vended_item ///A proc meant to perform custom behavior on newly dispensed items. -/obj/machinery/vending/proc/on_dispense(obj/item/vended_item) +/obj/machinery/vending/proc/on_dispense(obj/item/vended_item, dispense_returned = FALSE) return /** @@ -1582,32 +1586,28 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) * This item is then created and tossed out in front of us with a visible message */ /obj/machinery/vending/proc/throw_item() - var/obj/throw_item = null var/mob/living/target = locate() in view(7,src) if(!target) return FALSE + var/obj/thrown_item for(var/datum/data/vending_product/record in shuffle(product_records)) if(record.amount <= 0) //Try to use a record that actually has something to dump. continue var/dump_path = record.product_path if(!dump_path) continue - if(record.amount > LAZYLEN(record.returned_products)) //always throw new stuff that costs before free returned stuff, because of the hacking effort and time between throws involved - throw_item = new dump_path(loc) - else - throw_item = LAZYACCESS(record.returned_products, LAZYLEN(record.returned_products)) //first in, last out - throw_item.forceMove(loc) - LAZYREMOVE(record.returned_products, throw_item) - record.amount-- + // Always throw new stuff that costs before free returned stuff, because of the hacking effort and time between throws involved + var/only_returned_left = (record.amount <= LAZYLEN(record.returned_products)) + thrown_item = dispense(record, get_turf(src), silent = TRUE, dispense_returned = only_returned_left) break - if(!throw_item) + if(isnull(thrown_item)) return FALSE - pre_throw(throw_item) + pre_throw(thrown_item) - throw_item.throw_at(target, 16, 3) - visible_message(span_danger("[src] launches [throw_item] at [target]!")) + thrown_item.throw_at(target, 16, 3) + visible_message(span_danger("[src] launches [thrown_item] at [target]!")) return TRUE /** diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 9f4d99a0afc..1e7b7a36012 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -32,6 +32,9 @@ /obj/item/clothing/head/chaplain/taqiyah/red = 3, /obj/item/clothing/head/hats/tophat = 3, /obj/item/clothing/head/fedora = 3, + /obj/item/clothing/head/fedora/white = 3, + /obj/item/clothing/head/fedora/beige = 3, + /obj/item/clothing/head/fedora/greyscale = 3, /obj/item/clothing/head/hats/bowler = 3, /obj/item/clothing/head/cowboy/white = 3, /obj/item/clothing/head/cowboy/grey = 3, diff --git a/code/modules/vending/cola.dm b/code/modules/vending/cola.dm index bcc44dfedf9..9352c0c8b10 100644 --- a/code/modules/vending/cola.dm +++ b/code/modules/vending/cola.dm @@ -54,7 +54,10 @@ /datum/reagent/consumable/ethanol/neurotoxin = 1, ) -/obj/machinery/vending/cola/on_dispense(obj/item/vended_item) +/obj/machinery/vending/cola/on_dispense(obj/item/vended_item, dispense_returned = FALSE) + // Only apply to newly dispensed items + if(dispense_returned) + return // 35% chance that your drink will be safe, as safe pure acid and sugar that these drinks probably are can be if(!onstation || !HAS_TRAIT(SSstation, STATION_TRAIT_SPIKED_DRINKS) || !prob(65)) return diff --git a/code/modules/vending/donk.dm b/code/modules/vending/donk.dm index 8814745d6b8..e3851bee7f1 100644 --- a/code/modules/vending/donk.dm +++ b/code/modules/vending/donk.dm @@ -18,7 +18,7 @@ ) contraband = list( /obj/item/food/waffles = 2, - /obj/item/food/dankpocket = 2, + /obj/item/food/donkpocket/dank = 2, /obj/item/food/donkpocket/gondola = 1, ) premium = list( diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index 840f9dcefb8..1b5722dbc12 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -55,6 +55,7 @@ /obj/item/storage/box/fishing_lures = 2, /obj/item/book/manual/fish_catalog = 5, /obj/item/reagent_containers/cup/fish_feed = 4, + /obj/item/storage/box/aquarium_props = 4, /obj/item/fish_analyzer = 2, /obj/item/storage/bag/fishing = 2, /obj/item/fishing_rod/telescopic = 1, diff --git a/code/modules/vending/hotdog.dm b/code/modules/vending/hotdog.dm index 094beccb413..9d89702a923 100644 --- a/code/modules/vending/hotdog.dm +++ b/code/modules/vending/hotdog.dm @@ -51,6 +51,9 @@ icon_state = "refill_snack" /// Cute little thing that sets it apart from the other food vending mahicnes. I mean, you don't find this every day. -/obj/machinery/vending/hotdog/on_dispense(obj/item/vended_item) +/obj/machinery/vending/hotdog/on_dispense(obj/item/vended_item, dispense_returned = FALSE) + // Only apply to newly dispensed items + if(dispense_returned) + return if(istype(vended_item, /obj/item/food)) ADD_TRAIT(vended_item, TRAIT_FOOD_CHEF_MADE, VENDING_MACHINE_TRAIT) diff --git a/code/modules/vending/mail.dm b/code/modules/vending/mail.dm index 6bc3648b056..84ed1585af6 100644 --- a/code/modules/vending/mail.dm +++ b/code/modules/vending/mail.dm @@ -14,7 +14,6 @@ density = TRUE max_integrity = 300 integrity_failure = 0.33 - req_access = list(ACCESS_CARGO) circuit = /obj/item/circuitboard/machine/mailsorter var/light_mask = "mailsorter-light-mask" @@ -101,9 +100,6 @@ return is_type_in_list(weapon, accepted_items) /obj/machinery/mailsorter/interact(mob/user) - if (!allowed(user)) - to_chat(user, span_warning("Access denied.")) - return if (currentstate != STATE_IDLE) return if (length(mail_list) == 0) @@ -282,17 +278,17 @@ var/image/mail_output = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_[output_dir]") switch(output_dir) if(NORTH) - mail_output.pixel_y = 32 + mail_output.pixel_z = 32 if(SOUTH) - mail_output.pixel_y = -32 + mail_output.pixel_z = -32 if(EAST) - mail_output.pixel_x = 32 + mail_output.pixel_w = 32 if(WEST) - mail_output.pixel_x = -32 + mail_output.pixel_w = -32 mail_output.color = COLOR_CRAYON_ORANGE var/mutable_appearance/light_out = emissive_appearance(mail_output.icon, mail_output.icon_state, offset_spokesman = src, alpha = mail_output.alpha) - light_out.pixel_y = mail_output.pixel_y - light_out.pixel_x = mail_output.pixel_x + light_out.pixel_z = mail_output.pixel_z + light_out.pixel_w = mail_output.pixel_w . += mail_output . += light_out . += mutable_appearance(base_icon_state, currentstate) diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm index f374073668c..423e4f1c766 100644 --- a/code/modules/vending/medical.dm +++ b/code/modules/vending/medical.dm @@ -20,6 +20,7 @@ /obj/item/cane/white = 2, /obj/item/clothing/glasses/eyepatch/medical = 2, /obj/item/storage/box/bandages = 2, + /obj/item/pinpointer/crew = 2, ) contraband = list( /obj/item/storage/box/gum/happiness = 3, @@ -29,7 +30,6 @@ /obj/item/reagent_containers/hypospray/medipen = 3, /obj/item/storage/belt/medical = 3, /obj/item/sensor_device = 2, - /obj/item/pinpointer/crew = 2, /obj/item/storage/medkit/advanced = 2, /obj/item/shears = 1, /obj/item/storage/organbox = 1, @@ -74,10 +74,10 @@ panel_type = "panel11" product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!" products = list( - /obj/item/reagent_containers/pill/patch/libital = 5, - /obj/item/reagent_containers/pill/patch/aiuri = 5, + /obj/item/reagent_containers/applicator/patch/libital = 5, + /obj/item/reagent_containers/applicator/patch/aiuri = 5, /obj/item/reagent_containers/syringe/convermol = 2, - /obj/item/reagent_containers/pill/insulin = 5, + /obj/item/reagent_containers/applicator/pill/insulin = 5, /obj/item/reagent_containers/cup/bottle/multiver = 2, /obj/item/reagent_containers/cup/bottle/syriniver = 2, /obj/item/reagent_containers/cup/bottle/calomel = 2, @@ -92,9 +92,9 @@ /obj/item/reagent_containers/medigel/sterilizine = 6, // BUBBER EDIT CHANGE ) contraband = list( - /obj/item/reagent_containers/pill/tox = 3, - /obj/item/reagent_containers/pill/morphine = 4, - /obj/item/reagent_containers/pill/multiver = 6, + /obj/item/reagent_containers/applicator/pill/tox = 3, + /obj/item/reagent_containers/applicator/pill/morphine = 4, + /obj/item/reagent_containers/applicator/pill/multiver = 6, ) premium = list( /obj/item/reagent_containers/medigel/synthflesh = 2, diff --git a/code/modules/vending/medical_wall.dm b/code/modules/vending/medical_wall.dm index ae84a0f7030..88844453cc3 100644 --- a/code/modules/vending/medical_wall.dm +++ b/code/modules/vending/medical_wall.dm @@ -7,9 +7,9 @@ density = FALSE products = list( /obj/item/reagent_containers/syringe = 3, - /obj/item/reagent_containers/pill/patch/libital = 5, - /obj/item/reagent_containers/pill/patch/aiuri = 5, - /obj/item/reagent_containers/pill/multiver = 2, + /obj/item/reagent_containers/applicator/patch/libital = 5, + /obj/item/reagent_containers/applicator/patch/aiuri = 5, + /obj/item/reagent_containers/applicator/pill/multiver = 2, /obj/item/reagent_containers/medigel/libital = 2, /obj/item/reagent_containers/medigel/aiuri = 2, /obj/item/reagent_containers/medigel/sterilizine = 4, // BUBBER EDIT CHANGE @@ -18,8 +18,8 @@ /obj/item/storage/box/bandages = 1, ) contraband = list( - /obj/item/reagent_containers/pill/tox = 2, - /obj/item/reagent_containers/pill/morphine = 2, + /obj/item/reagent_containers/applicator/pill/tox = 2, + /obj/item/reagent_containers/applicator/pill/morphine = 2, /obj/item/storage/box/gum/happiness = 1, ) refill_canister = /obj/item/vending_refill/wallmed diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 490ce466e9a..3634dcf18fc 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -23,11 +23,13 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE) GLOB.roaches_deployed = TRUE -/obj/machinery/vending/wardrobe/on_dispense(obj/item/clothing/food) +/obj/machinery/vending/wardrobe/on_dispense(obj/item/clothing/food, dispense_returned = FALSE) if(!istype(food)) return for(var/mob/living/basic/mothroach/roach in contents) - food.take_damage(food.get_integrity() * 0.5) + // Be slightly nicer on returned items + var/damage_mult = dispense_returned ? 0.1 : 0.5 + food.take_damage(food.get_integrity() * damage_mult) /obj/machinery/vending/wardrobe/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() diff --git a/code/modules/wiremod/components/atom/matscanner.dm b/code/modules/wiremod/components/atom/matscanner.dm index eb23efddb3a..556c1ea47f2 100644 --- a/code/modules/wiremod/components/atom/matscanner.dm +++ b/code/modules/wiremod/components/atom/matscanner.dm @@ -34,7 +34,7 @@ if(!istype(entity) || !IN_GIVEN_RANGE(location, entity, max_range)) result.set_output(null) return - var/list/composition = entity.get_material_composition() + var/list/composition = entity.get_material_composition(break_down_alloys ? NONE : MATCONTAINER_ACCEPT_ALLOYS) var/list/composition_but_with_string_keys = list() for(var/datum/material/material as anything in composition) composition_but_with_string_keys[material.name] = composition[material] diff --git a/code/modules/wiremod/components/bci/hud/bar_overlay.dm b/code/modules/wiremod/components/bci/hud/bar_overlay.dm index 2fbe7620bf7..0f9d80c1873 100644 --- a/code/modules/wiremod/components/bci/hud/bar_overlay.dm +++ b/code/modules/wiremod/components/bci/hud/bar_overlay.dm @@ -49,10 +49,10 @@ SET_PLANE_EXPLICIT(cool_overlay, ABOVE_LIGHTING_PLANE, target_atom) if(image_pixel_x.value != null) - cool_overlay.pixel_x = image_pixel_x.value + cool_overlay.pixel_w = image_pixel_x.value if(image_pixel_y.value != null) - cool_overlay.pixel_y = image_pixel_y.value + cool_overlay.pixel_z = image_pixel_y.value var/datum/atom_hud/alternate_appearance/basic/one_person/alt_appearance = target_atom.add_alt_appearance( /datum/atom_hud/alternate_appearance/basic/one_person, diff --git a/code/modules/wiremod/components/bci/hud/counter_overlay.dm b/code/modules/wiremod/components/bci/hud/counter_overlay.dm index 8fa5be51492..7006432d3ea 100644 --- a/code/modules/wiremod/components/bci/hud/counter_overlay.dm +++ b/code/modules/wiremod/components/bci/hud/counter_overlay.dm @@ -68,9 +68,9 @@ SET_PLANE_EXPLICIT(counter, ABOVE_LIGHTING_PLANE, owner) if(image_pixel_x.value != null) - counter.pixel_x = image_pixel_x.value + counter.pixel_w = image_pixel_x.value if(image_pixel_y.value != null) - counter.pixel_y = image_pixel_y.value + counter.pixel_z = image_pixel_y.value var/datum/atom_hud/alternate_appearance/basic/one_person/alt_appearance = owner.add_alt_appearance( /datum/atom_hud/alternate_appearance/basic/one_person, @@ -91,12 +91,12 @@ SET_PLANE_EXPLICIT(number, ABOVE_LIGHTING_PLANE, owner) if(image_pixel_x.value != null) - number.pixel_x = image_pixel_x.value + (i - 1) * 9 + number.pixel_w = image_pixel_x.value + (i - 1) * 9 else - number.pixel_x = (i - 1) * 9 + number.pixel_w = (i - 1) * 9 if(image_pixel_y.value != null) - number.pixel_y = image_pixel_y.value + number.pixel_z = image_pixel_y.value var/datum/atom_hud/alternate_appearance/basic/one_person/number_alt_appearance = owner.add_alt_appearance( /datum/atom_hud/alternate_appearance/basic/one_person, diff --git a/code/modules/wiremod/components/bci/hud/object_overlay.dm b/code/modules/wiremod/components/bci/hud/object_overlay.dm index 4f09a4d9fab..bcd2044ce5d 100644 --- a/code/modules/wiremod/components/bci/hud/object_overlay.dm +++ b/code/modules/wiremod/components/bci/hud/object_overlay.dm @@ -104,10 +104,10 @@ SET_PLANE_EXPLICIT(cool_overlay, ABOVE_LIGHTING_PLANE, target_atom) if(image_pixel_x.value != null) - cool_overlay.pixel_x = image_pixel_x.value + cool_overlay.pixel_w = image_pixel_x.value if(image_pixel_y.value != null) - cool_overlay.pixel_y = image_pixel_y.value + cool_overlay.pixel_z = image_pixel_y.value if(image_rotation.value != null) var/matrix/turn_matrix = cool_overlay.transform diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm index e524bdee5cb..b48bb4edb5d 100644 --- a/code/modules/zombie/organs.dm +++ b/code/modules/zombie/organs.dm @@ -23,6 +23,10 @@ GLOB.zombie_infection_list -= src . = ..() +/obj/item/organ/zombie_infection/feel_for_damage(self_aware) + // keep stealthy for now, revisit later + return "" + /obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/new_owner, special = FALSE, movement_flags) . = ..() RegisterSignal(new_owner, COMSIG_LIVING_DEATH, PROC_REF(organ_owner_died)) diff --git a/config/admins.txt b/config/admins.txt index f48ff5bc03c..16449d1d0cc 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -10,6 +10,7 @@ NewSta = Game Master Expletives = Game Master kingofkosmos = Game Master MrStonedOne = Lazy Master +RandomDudeFromTheRim = Game Master microscopics = Game Master Gun Hog = Game Master KorPhaeron = Game Master diff --git a/config/blanks.json b/config/blanks.json index f3b38d67bdb..d48e49402c6 100644 --- a/config/blanks.json +++ b/config/blanks.json @@ -26,8 +26,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Review Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "

Name of affected department head (with signature):

", @@ -36,8 +36,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Review Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "

Name of affected department head (with signature):

", @@ -46,8 +46,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Review Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "

Decision on Access Request

", @@ -55,8 +55,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Decision Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "

This document is the property of Nanotrasen Corporation. Without the signatures and stamps of the heads or their deputies, this document has no corporate validity and may not be used in decisions regarding access distribution.

" @@ -83,8 +83,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Review Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "

Name of department head or deputy head (with signature):

", "

[___________________________________]

", @@ -92,8 +92,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Review Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "

Appointment decision

", @@ -125,8 +125,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Decision Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
The decision of the head of staff or his deputy is sufficient grounds for dismissal. If only the head of personnel or his deputy makes the decision to dismiss, VOID values must be entered in the head of department fields.

", @@ -137,8 +137,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Decision Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

" @@ -167,8 +167,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Decision Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "

Name of department head or deputy head (with signature):

", "

[___________________________________]

", @@ -176,8 +176,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Decision Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

" @@ -212,8 +212,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date the complaint was reviewed:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

" @@ -240,8 +240,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
An order may be addressed not only to a specific person, but also to a group of people, as well as to a department. This should be indicated in the text of the order. The person responsible for the execution of the order must sign in the name of the person who received the order.

", @@ -252,8 +252,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

", @@ -282,8 +282,8 @@ "

The name of the permittee (with signature):

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

" @@ -308,8 +308,8 @@ "

Name of the head of security or his deputy (with signature):

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

" @@ -334,8 +334,8 @@ "

Name of the head of security or his deputy (with signature):

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

" @@ -353,11 +353,11 @@ "

Reason for interrogation:

", "

[___________________________________]

", "

Start date of the interrogation:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

End date of interrogation:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

The course of the interrogation:

", "

[___________________________________]

", "

[___________________________________]

", @@ -379,8 +379,8 @@ "

Name of the interrogator (with signature):

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

" @@ -411,14 +411,14 @@ "

[___________________________________]

", "

[___________________________________]

", "

Report Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "
", "

Name of the person who received the report (with signature):

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

" @@ -448,8 +448,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

", @@ -485,8 +485,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

", @@ -539,8 +539,8 @@ "

Requested Punishment:

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
By writing and signing this form, you consent to the processing of your personal data by Nanotrasen Corporation.

", @@ -552,8 +552,8 @@ "

Notes:

", "

[___________________________________]

", "

Date the suit was reviewed:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", @@ -581,8 +581,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
Responsibility for any damage caused to the Nanotrasen during the execution of the described work lies with the person requesting the permit and the person giving the permit.

", @@ -593,8 +593,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

", @@ -626,8 +626,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
Responsibility for improper receipt of equipment lies with the person who signed the permit for the issuance of equipment. The VOID value must be filled in when completing the equipment list.

", @@ -638,8 +638,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

", @@ -667,8 +667,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
Responsibility for any damage caused to the Nanotrasen object during the execution of the research described herein lies with the person requesting the permit and the person giving the permit.

", @@ -679,8 +679,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

", @@ -712,8 +712,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
Responsibility for improper receipt of equipment lies with the person who signed the permit for the issuance of equipment. The VOID value must be filled in when completing the equipment list

", @@ -724,8 +724,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

", @@ -761,8 +761,8 @@ "

The attending doctor (with signature):

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

", @@ -795,8 +795,8 @@ "

Coroner's Name (with signature):

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

", @@ -826,8 +826,8 @@ "

Coroner's Name (with signature):

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

", @@ -859,8 +859,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
The person who signed the permission to receive the package is responsible for the improper receipt of the package. The VOID value must be filled in when completing the equipment list.

", @@ -871,8 +871,8 @@ "

[___________________________________]

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "

Place for a stamp

", "
", "
This document is the property of Nanotrasen Corporation. Without the signatures and seals of the managers or their deputies, this document has no corporate force.

", @@ -904,8 +904,8 @@ "

Total price (includes the cost of paper)

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "
", "
This payment document is the property of Nanotrasen. You must deliver this document to the head of the Nanotrasen facility staff within 24 hours of service for independent tax accounting.

", "
" @@ -936,8 +936,8 @@ "

Total price (includes the cost of paper)

", "

[___________________________________]

", "

Date:

", - "

[___].[___].[___]

", - "

[___]:[___]

", + "

[____________]

", + "

[______] GST

", "
", "
This payment document is the property of Nanotrasen. You must deliver this document to the head of the Nanotrasen facility staff within 24 hours of service for independent tax accounting.

", "
" diff --git a/config/config.txt b/config/config.txt index eb9bd605dde..364aaaf81b3 100644 --- a/config/config.txt +++ b/config/config.txt @@ -387,9 +387,6 @@ AUTOADMIN_RANK Game Master ## Uncomment to automatically deadmin players when they click to ready up or join game. For latejoining, does it before they pick a role because it's best done early to limit metainfo. #AUTO_DEADMIN_ON_READY_OR_LATEJOIN -## Number of game ticks before player-admins will be automatically deadminned. -#AUTO_DEADMIN_TIMEGATE 600 - ## Uncomment to automatically deadmin antagonists when they gain the role. #AUTO_DEADMIN_ANTAGONISTS @@ -629,6 +626,9 @@ PR_ANNOUNCEMENTS_PER_ROUND 5 ## The maximum number of concurrent tts http requests that can be made by the server at once. #TTS_MAX_CONCURRENT_REQUESTS 4 +## The number of seconds before tts https requests timeout (0 for infinite not recommended) +#TTS_HTTP_TIMEOUT_SECONDS 30 + ## Add voices to the TTS voice blacklist. #TTS_VOICE_BLACKLIST Sans Undertale #TTS_VOICE_BLACKLIST Papyrus Undertale diff --git a/config/logging.txt b/config/logging.txt index 2bd9e90fcd9..0bc5f025ef0 100644 --- a/config/logging.txt +++ b/config/logging.txt @@ -97,7 +97,7 @@ LOG_VOTE LOG_WHISPER ## log all world.Topic() calls -# LOG_WORLD_TOPIC +LOG_WORLD_TOPIC ## log manual target zone switching LOG_ZONE_SWITCH diff --git a/dependencies.sh b/dependencies.sh index 75872fca082..d4f3183506c 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -8,7 +8,7 @@ export BYOND_MAJOR=515 export BYOND_MINOR=1647 #rust_g git tag -export RUST_G_VERSION=3.7.0 +export RUST_G_VERSION=3.8.0 #node version export NODE_VERSION_LTS=22.11.0 diff --git a/html/changelogs/AutoChangeLog-pr-90356.yml b/html/changelogs/AutoChangeLog-pr-90356.yml new file mode 100644 index 00000000000..3ce423c59c4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-90356.yml @@ -0,0 +1,4 @@ +author: "timothymtorres" +delete-after: True +changes: + - map: "Move mafia, CTF, and deathmatch maps into minigame folder" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-90357.yml b/html/changelogs/AutoChangeLog-pr-90357.yml new file mode 100644 index 00000000000..604905c6ec5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-90357.yml @@ -0,0 +1,4 @@ +author: "jlsnow301" +delete-after: True +changes: + - bugfix: "Fixed the circuit UI titlebar spacing" \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 1da40fdae51..683ad2a7d07 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -381,3 +381,542 @@ 2025-02-27: TealSeer: - bugfix: fixed the SAD deleting wounds + SmArtKar: + - bugfix: Fixed missing HTML encodes in comms console code + - bugfix: Examining walls no longer allows you to see items mounted on its other + side + TiviPlus: + - code_imp: updated hslify to correctly detect all hexcodes + necromanceranne: + - bugfix: The traitor guncase properly checks for condition changes before letting + a player activate the time bomb. +2025-02-11: + SmArtKar: + - bugfix: Fixed wooden rifle stock being uncraftable + - bugfix: Fixed exceptionally dark armrests on chairs + - bugfix: Fixed dress and gown rendering below gloves and shoes + Time-Green: + - rscdel: Reverts sneeze projectiles +2025-02-12: + FlufflesTheDog: + - bugfix: crafted medibots are more consistently corporeal + Kiromaka: + - balance: Helbital reaper is now 100x more likely. + Rengan: + - bugfix: When you cast examine to the disguised detective, its assignment will + now display correctly. + grungussuss: + - sound: new sounds for cloth items +2025-02-13: + Jacquerel: + - admin: Added easier tooling for admins to add or change the AI controllers on + mobs + JohnFulpWillard: + - admin: Reload Configuration can be cancelled via the alert it gives you. + - admin: Check antagonists & del/law/dna/fingerprint/radio log panels use browsers + which means they have darkmode. Also the tram panel will cancel out if you click + cancel. + Melbert: + - bugfix: Fixed grab offsets not showing for anything but passive grab + - bugfix: Fix jank with mob offsets when riding things + - refactor: Refactored riding component, particularly how it selects layer and offsets. + Report any oddities + - refactor: Refactored pixel offsets of mobs. Report any oddities + RusselNotSCP: + - qol: Andromeda Bitters bottle now only dispenses in 1-5u increments + SmArtKar: + - admin: Admins can now make vendors free without too much hassle + - bugfix: Fixed duplicated comsigs/text and HARS head deletion from prosthetic replacement + - bugfix: Barroaches no longer disappear when worn on your head + - image: Barroaches now have new worn sprites + - bugfix: Fixed perceptomatrix not applying any of its traits + TiviPlus: + - code_imp: deleted all remaining code referencing TGS3 +2025-02-14: + Absolucy: + - bugfix: Syndicate encryption keys properly protect against AoE radio jamming again. + Melbert: + - rscdel: Honorific "full name" setting no longer cares about mononyms, meaning + Lizards and people with similarly hyphenated names will no longer get their + name butchered. + MelokGleb: + - image: broken radio is now not flat and old + SmArtKar: + - bugfix: Makes glowstick fluid respect chosen RLD color + - bugfix: Chef's love and french kissing no longer can stop laser projectiles of + syndiekissers. + - code_imp: Unified two parts of kiss code. + TealSeer: + - qol: The limb grower can now be unwrenched and rotated + Time-Green, Donglesplonge, SmartKar: + - rscadd: Adds the flesh reshaper to genetics and the Gene Engineering techweb! + Restyle all those visual organs! Don't like your moth coworkers' wings? Restyle + them to your liking! + TiviPlus: + - bugfix: Fixed stat panel turf list menu clicks only working on the text + hyperjll: + - qol: The Syndicate Tome's uplink description has been changed to mention it's + functionality. + - balance: Haloperidol's self-purge is drastically reduced while the host is stamina + crit, as a result of permanent stamina crit no longer being a thing to worry + about. + timothymtorres: + - code_imp: Optimize Nyctophobia quirk to not process while certain traits present + - code_imp: Convert weather duration to use time defines +2025-02-15: + Ghommie: + - rscadd: Added three tips to the fishing tips text file. + Jacquerel: + - admin: Gives admins the ability to make mobs say/emote things from a list at random + intervals for the rest of their lives. + - rscdel: Misplaced or stolen traitor uplinks can no longer be recreated using a + radio code and special device, guard yours carefully or buy a backup implant. + - rscdel: Roundstart traitors can no longer take on additional objectives in order + to earn additional Telecrystals and fast-forward any unlock timers on items. + They also cannot earn the ability to complete a Final Objective. + - balance: Roundstart traitors can now buy the Contractor Kit from their traitor + uplink, rather than only midround traitors. + - rscadd: Traitors can buy Romerol for 25 TC, after 30 minutes of time has passed + in a round. + - image: Watchers won't display an animated cog at the same time as using their + gaze attack. + Melbert: + - bugfix: Spy uplink scans on RMB as intended + davethwave: + - rscdel: Removed the weighting of viro symptoms + grungussuss: + - sound: sutures got some sounds +2025-02-16: + 00-Steven: + - bugfix: Emotion mask reskinning works properly + GwynCodes: + - rscadd: Added a button in the "Secrets" menu to alter the department console order + delay. + - qol: Button makes it easier to find cargo related bugs. + - code_imp: Changed code in department_order.dm to allow for overriding the order + cooldown duration. + - admin: Created an admin button in the "Secrets" panel. + larentoun: + - bugfix: Changeling egg burst now correctly gives "monkey (123)" name for the changeling-monkey + instead of getting a random human name. + leaKsi: + - bugfix: Fixed a few sanitization issues. + necromanceranne: + - bugfix: Pellet clouds now can cause bleeds and punctures if the projectile is + sharp. + - bugfix: Cryogelidia can no longer put you into stasis longer than the lifespan + of the cube prison it kept you in. +2025-02-17: + 00-Steven: + - bugfix: Jumpsuit sensors context tips actually show when you are holding the jumpsuit. + - qol: You may right click to change jumpsuit sensors when it's in your active hand, + instead of having to swap to an empty hand or drop it to do so. + Absolucy: + - admin: Certain UI-based tools (plane debugger, filter editor, etc) that were given + to admins with only +VAREDIT or +DEBUG, but refused to open without +ADMIN, + now actually work for admins that have the needed permission. + Archemagus: + - code_imp: Shuttles with walls painted via color var shouldn't lose their walls + in transit + Archie700: + - qol: Gives a confirmation box describing the mayhem in a bottle's effect when + a player tries to break the bottle. Player must confirm before bottle takes + effect. + Ghommie: + - bugfix: Space dragons' eyes, teeths and claws (and shark form's underside) are + once again of a different color than the rest of the body. + - bugfix: Trying to fish on an adjacent spot won't end up hitting other things on + the same turf (provided you actually click the fishing spot and not other things). + - bugfix: Fixing the icon state for the "fritterish" fish variants. + Jacquerel: + - rscadd: Adjusted what things you can hallucinate people being accused of doing + or being over the radio + - bugfix: Prisoners will no longer spawn on Tram with an item which allows them + to immediately exit the jail. + - balance: Prisoners also don't get bonus goodies in their internals box when the + station trait rolls, because we're mean. + - bugfix: Traitor reputation (which is now basically just a number representing + how many seconds were in the round) is no longer displayed on the roundend screen. + Melbert: + - bugfix: Fixed offset during vehicle traversal over boxes and tables, as well as + while floating + Rengan: + - sound: the volume that vox, admin sound, insturments play at can now be tweaked + in preferences, check your preferences! + - sound: Elevator now uses ambience volume preference, jukeboxes uses instrument + volume preference and end of round musics uses admin music volume preference. + SmArtKar: + - qol: SiliConnect now informs you that you're successfully downloading logs + - bugfix: Fixes SiliConnect not being able to download logs + - bugfix: Fixed broken layering on some vehicles + - bugfix: You can no longer stuff abstract concepts of kisses and slaps into someone's + chest cavity + - bugfix: Fixed map votes not refreshing the amount of possible choices + - rscadd: Added a new 3D printable gun "The Liberator", you can find the gun itself + or its design disc in maintenance tunnels. + SyncIt21: + - bugfix: multiplying reagents in cases like fishing & chem splash will yield accurate + results. New amounts differ from present values + - bugfix: converting reagents actually yields correct ph again + - code_imp: improved performance of reagent logging + - code_imp: copying reagents won't return false negatives for values lesser than + 0.01 + TealSeer: + - qol: The medipen refiller can now be rotated when unanchored with alt-click + TiviPlus: + - code_imp: Made it easier to set custom orders for stat panel tabs in code + - bugfix: fixed some filters (e.g displacement) in filteriffic bluescreening the + UI + - bugfix: fixed tgui alerts sometimes having a lot of empty space in their layout + distributivgesetz: + - config: Added support for multiple chat channel configs for channel announcements. + norsvenska: + - map: The NTSS Independence has, once again, been upgraded. Now featuring a proper + ballroom, an expanded infirmary, a security office, and much more available + seating. + - bugfix: Doctor Rumack, the NTSS Independence's resident medibot, is no longer + invisible. + subject217: + - sound: The ghost poll sound is quieter. + timothymtorres: + - bugfix: Fix runtime when simple mobs are exposed to reagents +2025-02-18: + Absolucy: + - bugfix: SecurEye now properly follows moving cameras. + Archemagus: + - rscadd: 'Many things now handles via AAS: Bounty Cubes, Request Consoles, Brig + Cells, Vending Machines and Orion Trails alerts, Weather Reports, Cargo Order + Console' + - code_imp: Now anyone can make their own entry for AAS + - refactor: AAS internals, also cleanup + EnterTheJake: + - rscadd: New Heretic starting Side-Knowdge Warren King's Welcome + - rscadd: New Heretic T1 Side knowledge, Phylactery Of Damnation. + - rscadd: New Heretic T2 Side knowledge, Ether Of The Newborn. + - rscadd: New Heretic T3 Side knowledge, Codex Morbus. + - rscadd: New Heretic T2 Side knowledge, Rust Sower grenade. + - rscadd: New Heretic T3 Side knowledge, Greaves Of The Prophet. + - rscadd: New Blade Path Spell, Wolves Among Sheep. + - balance: Heretic curses have been removed from the tree and bundled in the new + Knowledge, Codex Morbus. + - balance: Blade Path tree has been shuffled a bit, all spells have been moved up + by one tier to make space for the new spell. + Jacquerel: + - balance: The reputation "time locks" on various items in the Traitor uplink have + been reduced or removed. Effected items include the holoparasite kit, energy + sword, power fist, gloves of the northstar, pizza bomb, bag of x4, combat bakery + kit, reverse revolver, kinetic accelerator modkit, laser arm implant, concealed + weapon bay, chemical dart gun, and stationwide APC check. + - balance: The centcom inspector costume is now more expensive. + - rscdel: Several previously nukie-only wardrobe options in the traitor uplink are + now once more only available to nuclear operatives. + - rscdel: Spies can no longer receive an elite nuclear operative suit. + LT3: + - bugfix: Revert next map command actually reverts the map vote + - admin: Admins now have a verb to revert the map vote + SmArtKar: + - bugfix: Fixed scars not being examine-able if you wore a mask + - bugfix: Fixed uniform sensors being examine-able even when worn under a spacesuit. + - map: Moved Birdshot's tech storage to be between bridge and engineering, with + a brand old abandoned brewery in its former place. + - bugfix: Fixed mapvotes spontaneously failing + - bugfix: Fixed pyroclastic slime RRing ghosts + - balance: Space helmets and bio/bomb/rad hoods have lost their slowdown/FOV respectively, + but now can have their visor covered by spraypaint or pepper spray. + - balance: Driscoll mask no longer protects your eyes, unlike welding gas mask which + received said protection. + Xackii: + - rscadd: Big Manipulator now has use mode once again. You need buckle monkey to + unlock this future. + - rscadd: Big Manipulator now has wires. + - bugfix: Big Manipualtor now sees objects that appeared on the tile using spawn + or any other means in which the object is not considered to have moved +2025-02-19: + Holoo-1: + - bugfix: fixed circuit connections not being drawn outside initial screen on 516 + Jacquerel: + - rscadd: Players who choose to be evil via the quirk menu will be reminded at roundstart + that this doesn't exempt them from server rules. + SmArtKar: + - qol: Cybernetic arm implants now automatically change insertion zones without + the need to screwdriver them. + necromanceranne: + - balance: Having a strongarm implant installed into each arm now allows you to + pry open doors. +2025-02-20: + Aniantan: + - bugfix: Can of fishing bait no longer evaporates its bait when used on an active + fishing rod + - bugfix: Can of fishing bait's quick refill can be used with the fishing rod's + UI too + Ez-Briz: + - bugfix: fixed bluescreen in Access Checker interface + LePiromano: + - balance: nerfed Icebox's "The Thing" boss + - bugfix: fixed "The Thing" 's spike walls destroying items on the floor when summoned + MrMelbert, Time-Green: + - rscadd: Adds an organ tree as a mutation of shrubs (from the exotic seeds crate)! + Spare organs have never been so green! + OrionTheFox: + - map: Tramstation Evidence Storage now has secure lockers, a security records filing + cabinet, and number labels on unsecure lockers + necromanceranne: + - bugfix: Prevents Cryogelidia from putting you into a permanent stasis until someone + injects you with the reagent. + timothymtorres: + - bugfix: Fix deprecated mob robot path from basketball stadium map + - bugfix: Revert Midi2Piano fix (#85967) that broke the the midi converter tool. +2025-02-21: + Aniantan: + - bugfix: You can no longer "use" can of bait on non-bait slots in fishing rod + Melbert: + - sound: Snowstorms now have sounds associated. + Singul0: + - rscadd: After some light bit of restructuring, the local TV station, serving SPACE + SECTOR 13 has opened up again! + TiviPlus: + - code_imp: optimized some icon code + necromanceranne: + - image: Changes Sakhno rifles from olive drab to a wooden finish. +2025-02-22: + Absolucy: + - bugfix: Being a team antagonist will no longer hide all of your other antagonist + roles from the roundend report, i.e a BB+traitor will properly show as both + a BB and a traitor in the roundend report. + - refactor: Refactored some code relating to how entertainment monitors are notified + of active feeds. + Jackraxxus: + - admin: Added a new config to force admins to deadmin when readying up or latejoining + the round. + Jacquerel: + - spellcheck: Makes some VV input prompts clearer to read and use + Jacquerel, Dawnseer, & Carlarc: + - rscadd: Added a variety of shoes to the loadout system + - rscadd: Added another pair of pairs of glasses to the loadout system + - rscadd: Added a variety of pocket items to the loadout system + - rscdel: Removed the Colourist quirk, as you can now get the exact same item via + the loadout system + Melbert: + - rscadd: EVA doors become all access on Red Alert + - rscadd: First Aid Supplies (the compartments in Medbay Storage which hold medkits) + become all access on Red Alert (already present on Icebox). Medbay Storage itself + does NOT become all access. + Melbert, Wallem: + - rscadd: Adds recording setups to the Captain's office on all maps, allowing them + to project their face to all status displays on the station + - rscadd: Centcom now has a soundstage for broadcasting to the station. It's besides + the Thunderdome. + SmArtKar: + - bugfix: Fixed ChemMaster incorrectly lableling produced items + necromanceranne: + - rscadd: Replaces the 10mm semi-automatic surplus rifle with the Sakhno SKS semi-automatic + rifle. + - rscadd: You can acquire a SKS parts kit from the black market. +2025-02-23: + EnterTheJake: + - spellcheck: Updated the description on a few heretic knowledges to display the + crafting requirements. + Ghommie: + - bugfix: Fixed lobstrosities being able to fish other lobstrosities (and chests) + yet again. + Jacquerel: + - balance: Traitor reputation now advances at a fixed rate, not dependent on current + server population. + - balance: The dual esword, sleeping carp scroll, spider extract, and romerol vial + cannot be purchased if fewer than 20 players have joined the game. + Melbert: + - bugfix: Mirror reflections should be more accurate now + - bugfix: Becoming a Vampire while standing in front of a mirror correctly vanishes + you (rather than waiting to exit and enter the mirror's view) + - admin: Adds the Policy Panel verb, which shows you all the policy the server has + set. + SmArtKar: + - bugfix: Added a flatpacker flatpack to birdshot + - bugfix: Fixed scar overlays on eyes going out of sprite bounds + - bugfix: Fixes borgs not accepting encryption keys + - qol: Borg encryption key interactions now use balloon alerts, and popping out + a key puts it in your hands instead of dropping it on the ground. + - balance: Crusher marks now can be instantly detonated, but firing one puts you + on an attack cooldown again + - spellcheck: Added slightly more descriptive spellbook descriptions to Mjolnir + and Singulo Hammer + - bugfix: White canes need to be extended in order to allow you to examine faster + with them + - admin: Added better feedback to localhost Start Now button + - bugfix: AI uplink brain can no longer give you free ghost from which you can return + to your AI core + - bugfix: You can no longer dupe reagents or swap types mid-print with chemmaster + - bugfix: Spawn Debug Full Crew no longer runtimes + - admin: Spawn Debug Full Crew now explicitly warns you a second time if you're + attempting to use it as a non-localhost user. + - bugfix: Added BZ back to birdshot's xenobio + - balance: Gave space suits back half of their missing slowdown due to an oversight + in a prior change. + TealSeer: + - qol: air alarm wires are now labeled if you have the engineering skillchip + Xander3359: + - rscadd: Living heart can now track lost eldritch blades + jlsnow301: + - bugfix: Tgui menu component is fixed following tgui core v1.8.1 + subject217: + - bugfix: Tramstation disposals now allow you to send mail to R&D. + timothymtorres: + - rscadd: Add irradiation to radioactive reagents uranium, radium, and polonium. + - balance: Radioactive reagents uranium, radium, and polonium now cause irradiate + effects when they come into contact with mobs or objects. This can be via several + means, ingestion, touch, or vapors. The more radioactive the reagent, the more + likely it is to irradiate. Polonium is the most radioactive with a x3 multiplier, + radium is next with a x2 multiplier, and uranium is the weakest with just a + x1 multiplier. + - balance: Polonium no longer guarantees instant irradiation when the reagent is + inside a mob. +2025-02-24: + DaCoolBoss: + - map: '[Birdshot] Deleted some badly-placed resin tiles in eastern maints.' + - map: '[Birdshot] Shuffled the items inside the Gold Standard Law Firm room to + look better.' + Ghommie: + - bugfix: cult slurring/stuttering now removed before the april fools punch line + upon conversion, thus untarnishing the Rick and Morty reference. + - bugfix: Fixing loaded trophy fishes possibly not having materials. + Hatterhat: + - rscadd: Glaive retool kits for proto-kinetic crushers are now in mining vendors' + ordering lists. + - code_imp: Proto-kinetic crusher retool kits now have support for alternate inhand + icon files with alternate dimensions. + K4rlox: + - rscadd: Human plushie has been added to the game, Obtainable thru Cargo, Loadouts + and Spawners. + Likteer: + - rscadd: Grown grass can be dryed (rack/dehumidifier) to make hay tiles. + SmArtKar: + - bugfix: Hitscan projectiles like emitter beams should look less weird during extreme + lag spikes + - bugfix: Moon amulet now properly turns insane people into converts and drains + sanity of sane people, instead of doing the inverse + StrangeWeirdKitten: + - bugfix: You can no longer be immune to megafauna with a polybelt as a mining mob. + Time-Green: + - rscadd: Taking plant or shadow limbs will now behave as expected! Take a plant + arm, and it will heal in light! Or take plant and shadow limbs and be in constant + agony as you realize this world was not made for you + - refactor: Refactors how we handle photosynthesis/nyxosynthesis by moving it into + a new status_effect framework controlled by podyparts + Y0SH1_M4S73R (with special thanks to Vect0r, whose original PR inspired the implementation of these changes): + - rscadd: Shuttle blueprints, the tool used to construct and modify custom shuttles. + Print a set at a science, engineering, or cargo techfab after researching Shuttle + Engineering, or craft a crude set from the crafting menu. + - rscadd: Shuttle blueprint database upgrade for engineering cyborgs, printable + from the Exosuit Fabricator after researching Shuttle Engineering. A version + of shuttle blueprints designed for use by cyborgs. + - rscadd: Shuttle frame rods, usable to construct custom shuttles. Hand-craft by + using 5 rods on 1 titanium sheet, or by printing them at a science, engineering, + or cargo techfab after researching Shuttle Engineering. + - rscadd: Custom shuttle flight control and navigation boards, printable from a + science, engineering, or cargo techfab after researching Shuttle Engineering. + - rscadd: Shuttle engine boards can be printed from a science, engineering, or cargo + techfab after researching shuttle engineering. + - rscadd: The shuttle engine supply pack is no longer locked behind the purchase + of the Build Your Own Shuttle kit. + - rscadd: Shuttle Construction Starter Kit goodie pack, containing a set of shuttle + blueprints, flight control and navigation console boards, and two engine boards, + can be purchased from cargo for 1200 credits. Requires aux base access to purchase. + - refactor: Shuttles now keep track of what areas are underneath each of their individual + turfs, so that the areas left behind on movement are consistent with what they + were beforehand. + - refactor: Shuttle ceilings now place themselves down as baseturfs, instead of + only appearing if the turf above is open space. + grungussuss: + - qol: ghost poll sound can now be disabled + - qol: ghost poll sound volume can now be tweaked + - sound: added new ghost poll sound. + - sound: normalised volume of ghost poll sounds +2025-02-25: + EOBGames: + - rscadd: 'No longer content to speak purely in Galactic Common, the Space Russians + have begun to use their own language: Spinwarder Russian. Best of luck in understanding + them; we sure don''t!' + Jacquerel: + - balance: Foam now passes through tables, grilles, computers, and several other + dense structures. You can still escape foam by mantling onto tables and such. + - balance: MODSuit parts now slow you only when deployed, regardless of whether + they are sealed. + - balance: MODSuit parts no longer slow you when they aren't deployed. + Melbert, Absolucy: + - qol: Touches up the language menu + SmArtKar: + - image: Resprited advanced robotic limbs + SmArtKar, PiotrTheTchaikowsky: + - image: Resprited boxing gloves + combustor: + - map: Added an air alarm to birdshot's engine room +2025-02-26: + Dmeto: + - bugfix: Nebulastation Supermatter is no longer hotwired roundstart. + Jacquerel: + - balance: The part of a MODsuit that the other parts deploy from always counts + as deployed for the purposes of speed calculation. + KingkumaArt: + - image: Cooked bacon resprited to be more visually clear that it's cooked + Melbert: + - rscadd: The Kitchen Coldroom, RND Server Room, Xenobio Kill Room, and Telecomms + on all maps now come equipped with walkable, transparent airtight plastic flaps. + - rscadd: Medbay Coldrooms are now consistently cold across all maps that has one. + They, too, now have plastic flaps. + - rscadd: Plastic flaps will now melt in hot environments / active fires. Cargo + flaps are more resilient to fire than kitchen flaps. + - qol: Open doors no longer layer beneath plastic flaps, in other words you can + actually click on them to shut them. + - qol: Plastic flaps may be less irritating to traverse for things which can already + pass through glass + - sound: Walking out of plastic flaps now has sfx. Crawling out is still silent. + SmArtKar: + - image: Resprited tinkerer gloves + - rscadd: You can use tables as makeshift lava bridges + - bugfix: Fixed crusher retool kits turning crushers invisible + SmArtKar, CoiledLamb: + - image: Resprited the handheld crew monitor + TealSeer: + - qol: The RCD examine text now lists any upgrades it has installed. + TiviPlus: + - code_imp: The Discord Announcer for PRs is back + necromanceranne: + - balance: Mech PKA low-pressure damage has been reduced to 50, from 80. Increased + the attack cooldown to match the standard PKA. + - balance: Mech PKA AOE blast does not mine turfs, and only does 30% of the main + projectiles damage to mining mobs in the AOE effect. + - bugfix: The mech PKA AOE blast visual effect now properly appears when hitting + a mob directly. + - code_imp: MOB_MINING and MOB_CRUSTACEAN are now defined biotypes. + - code_imp: Audits some mining mob biotypes to make more sense based on what kind + of creature they are and to include MOB_MINING in their defines. + possiblepossibility: + - bugfix: fixes slaughter demon roundend report + - bugfix: Fixes (most) emergency access on maintenance airlocks on WawaStation + - bugfix: wizard statues are gray +2025-02-27: + DaCoolBoss: + - balance: Trash items now contain small amounts of material. + Hatterhat: + - code_imp: Guns now have burst delay and fire delay variables instead of fire delay + affecting both. If a weapon's burst feels off, please submit an issue report. + Majkl-J: + - bugfix: The charging defib mount no longer runtimes when there's no defib + SmArtKar: + - bugfix: Fixed flesh reshaper not being placeable on table + - bugfix: Sphere transform module no longer makes you spin permanently + - bugfix: You can now lean on falsewalls + - bugfix: You can no longer activate anomalock heart's voltaic overdrive/tenacity + trauma by pulling off some surgery shenanigans + - bugfix: You no longer lose tenacity trauma gained via lobotomy after losing voltaic + override +2025-02-28: + Profakos: + - bugfix: Request consoles once again enter emergency mode when you hit an emergency + button + SmArtKar: + - image: Resprited GPSs + - bugfix: You can no longer try to occupy an AI uplink brain already occupied by + another AI + - bugfix: Armsy (aka Lord Of The Night (aka flesh snek (aka heretic ascention))) + no longer affects itself with its own spells diff --git a/html/changelogs/archive/2025-03.yml b/html/changelogs/archive/2025-03.yml index e860683af1e..2e47c91ed12 100644 --- a/html/changelogs/archive/2025-03.yml +++ b/html/changelogs/archive/2025-03.yml @@ -1,3 +1,936 @@ +2025-03-01: + SmArtKar: + - bugfix: Cyborg pre-screening dogtags should once again be given to crew with the + quirk of the same name. + TiviPlus: + - code_imp: cleaned up some mass var edit code + necromanceranne: + - code_imp: Cleans up a bit of human punch code. + - bugfix: Stagger combos occur at the correct threshold, and properly utilize armor + or a threshold minimum, adjusted for puncher limb accuracy. +2025-03-02: + Jackraxxus: + - bugfix: AI will no longer deathloop after being revived with 0 backup power. + Jacquerel: + - rscadd: You can transplant xenomorph tails onto people. + - bugfix: The Warp Cube will now fail if it tries to teleport you to nowhere, instead + of turning you blue and then failing + Melbert: + - bugfix: Ion Storms should be far far far less likely to purge ais and far far + far more likely to replace the ai's lawset with a new set + - rscadd: Battle arcades get funny names again + - bugfix: Roundend title music will play at half volume again + - bugfix: April Fools lobby music will correctly always be clown music + - bugfix: Lobby Music will repeat across sequential rounds less often + OrionTheFox: + - qol: Mirrors now have context tips, and can now be unmounted from walls with a + Wrench. (Magic ones can't be removed though. Because magic.) + SmArtKar: + - rscadd: Foam darts now stick to people when they have their cap on, riot foam + darts also can passively deal a bit of stamina damage when you move with one. + - rscadd: Syringes can be inserted into foam darts, making them embed and slowly + leak their reagents into their victim. + - rscadd: Syringe guns can be toggled (with right click) between high power and + low power modes, former being their normal functionality and latter making syringes + embed and slowly leak their contents. + - bugfix: Fixed projectiles sometimes not embedding when they should've + - code_imp: Cleaned embedding code up + - bugfix: You no longer get set ablaze by a person you're fireman carrying through + lava while riding a raptor + - refactor: Refactored item action handling + - bugfix: You should no longer be able to get med/sec/diag HUDs by toggling a hud + in your pocket, or use jump boots from your hands. + - qol: Welding/breathing masks, hardhats and other glasses/helmets no longer show + their actions in your top bar while you're holding them in your hands. + mc-oofert: + - bugfix: The Thing (Outpost 31) will aggro if shot from outside aggro range, has + achievement + - balance: the loot room in outpost 31 now contains a freezer with a set of T2 robotic + organs, and a set of advanced medical tools. Also The Thing returns to its spawn + location if not aggroed + timothymtorres: + - bugfix: Fix illiterate people writing messages with crayons and spraycans. +2025-03-03: + 00-Steven: + - bugfix: Harvesting botany plants actually uses the right drop location. Botany + plants harvested by monkey hardworkers on big manipulators harvesting using + a full plant bag no longer puts the resulting items inside of the big manipulator. + Ghommie: + - balance: objects made out of meat are no longer classified as gross food on top + of being raw and meaty, and actually contain protein and fat instead of standard + nutriment and oil. + - balance: the pizza material stacks, crafted with margherita pizza and rollig pin + mind you, no longer magically contain pepperoni. + Melbert: + - qol: '[Icebox] Botany''s Holofirelocks are now walkable plastic flaps' + SmArtKar: + - code_imp: Split and cleaned up mining loot's code + - refactor: Refactored the hierophant club. + - bugfix: Hierophant club's beacon no longer can go missing (until you try using + it) + - image: Resprited the hierophant arena + TheRyeGuyWhoWillNowDie: + - balance: wildcard limits have been removed from Agent ID cards + - balance: the specops crate gets a variation of the agent ID card which can only + hold limited access (same as it is now) + TiviPlus: + - code_imp: previously silent failures due to empty sounds or too low volumes will + now create a runtime in the runtime log + - bugfix: some footstep sounds like robotic or slimes are no longer silent + subject217: + - balance: Contractor Kit is no longer available in lowpop. +2025-03-04: + 00-Steven: + - qol: Added screentips to the big manipulator. + - bugfix: You can actually open the big manipulator's wires UI while holding an + assembly. + Absolucy: + - bugfix: Fixed more advanced regex-based chat highlights not working. + AyIong: + - bugfix: Fixed random chat BSOD on Byond 516 + Holoo-1: + - qol: cult spells no longer overlap with second row of inventory + Kashargul: + - bugfix: tgui say 516 will no longer change channels when the button is used to + drag it + - bugfix: tgui say 516 will no longer leak radio messages into the wrong channel + - bugfix: runechat flickering when faded up messages fade out + MichiRecRoom: + - bugfix: The component printer now shows icons for the items in its UI. + - bugfix: Nukes will now always be deleted upon exploding, no matter if they have + a valid cutscene to play. + - bugfix: The cleaning AI behavior (generally used by cleanbots) will no longer + return early if the list of emagged phrases is empty. + Rhials: + - spellcheck: Fixes grammar in autosurgeon use message. + SmArtKar: + - bugfix: Fixed external organs not being colored by colorful reagent + - bugfix: Fixed inconsistent crusher trophy droprates + adamsong: + - rscadd: Added the ability for borgs to pathfind into and through restricted areas. + itsmeow: + - bugfix: Fixed lizard body markings and ethereal feature previews in the preference + menu missing some overlays. + - refactor: Optimized spritesheet asset generation greatly using rustg IconForge, + greatly reducing post-initialization lag as well as reducing init times and + saving server computation. + - config: Added 'smart' asset caching, for batched rustg IconForge spritesheets. + It is persistent and suitable for use on local, with automatic invalidation. + - rscadd: Added admin verbs - Debug -> Clear Smart/Legacy Asset Cache for spritesheets. + - bugfix: Fixed R&D console icons breaking on WebView2/516 + mc-oofert: + - bugfix: prevents stripping in caretakers last refuge + - bugfix: the eldritch id (Lock path) now preserves the ID used. + timothymtorres: + - bugfix: Fix hauntinum reagent to work when it is exposed to item objects. +2025-03-05: + Jacquerel: + - rscadd: Apples now react appropriately if they impact doctors or scientists under + the expected circumstances. + StrangeWeirdKitten: + - bugfix: Megafauna should no longer attack eachother. + TJatPBnJ: + - balance: French fries are now immune to the effects of the floor. I miss floor + fries +2025-03-06: + Absolucy: + - qol: Messages from blood cult communion, abductor telepathy, xeno hivemind, golem + resonator, blob telepathy, changeling hivemind, and binary chat are now considered + "radio" messages by the chat, so they can properly be sorted via chat tabs. + - qol: Your own messages in blood cult communion, abductor/xenomorph/changeling + hivemind, or golem telepathy will no longer be highlighted in chat (to prevent + highlight spam whenever you talk if you highlight your own name, mainly) + Ghommie: + - bugfix: Follower hoodies can now be crafted. + Kashargul: + - bugfix: TG chat can no longer initialize before the settings loading was called + - qol: chat settings can be exported and imported + LemonInTheDark: + - config: the config loader now supports relatively pathed imports (importing a + file inside a subfolder now acts as if you were IN that subfolder) + Melbert: + - bugfix: Fixed random names always giving male names + Singul0: + - balance: Buffs the energy cells borg factory-spawned cyborgs spawn with (They + are now T2 cells) + TheRyeGuyWhoWillNowDie: + - bugfix: chameleon IDs actually prevent AI tracking now + hry-gh: + - bugfix: the admin music player works again on 516 +2025-03-07: + Ben10Omintrix: + - qol: the raptor minigame now no longer opens up a new window + - rscadd: the raptor minigame has been reworked + Kocma-san: + - qol: ERT leaders now have a headset with high-volume mode + - bugfix: Deathsquad Officer will now have proper outfit + Melbert: + - bugfix: Wigs no longer color their hats + - bugfix: You can hear looping computer sounds again + StrangeWeirdKitten: + - bugfix: Design disks now have a cooldown when uploading to no longer crash the + server. + necromanceranne: + - balance: Last resort is no longer an innate changeling ability. Changeling on + changeling violence is back on the menu. (literally) + possiblepossibility: + - rscadd: you may now take out individual slices of pizza +2025-03-08: + Ghommie: + - balance: It's now possible to take trophy fish from previous shifts off their + mounts without turning them into dust based on a probability revolving around + the size and weight of the fish against your fishing skill. + Hatterhat: + - bugfix: The Sakhno SKS no longer ejects its entire internal magazine upon interaction. + To facilitate this, it now requires the bolt to be open like its bolt-action + contemporaries in order to load ammunition. + - bugfix: You can no longer force ammunition into Sakhno precision rifles and other + bolt-action-likes through a closed bolt. + Melbert: + - rscadd: If you are sufficiently drunk, you can resist your phobias and social + anxiety. + - rscadd: Your mood will increase further the more drunk you are. Until you crash + out. + SmArtKar: + - image: Resprited all eyes and gave cybernetic eyes unique sprites + necromanceranne: + - bugfix: Touch protection actually respects the TOUCH exposure method. + - bugfix: You cannot Fry-Fu someone through bio protective clothing using three + drops of essential oils heated to the temperature of the sun. +2025-03-09: + Absolucy: + - bugfix: Fixed some hearing sensitive objects hearing the same thing multiple times, + such as the broadcast camera sending everything to the entertainment channel + twice. + - qol: Changed the civilian bounty console's cooldown message to a balloon alert, + and it now says like "1 minute and 30 seconds" instead of "1.5 minutes" + - code_imp: Minor improvements to civilian bounty console code. + - code_imp: Removed a random unused var on space turfs. + Hatterhat: + - balance: Spacemen (e.g. you, the reader) grappling a target now prioritize using + their bare hands to beat their target to death if they're grappled, instead + of contorting in weird ways to kick them (also, presumably, to death). + - balance: Spacemen have learned to Punch Good(er) against grappled targets, leading + to kick-tier damage against standing grappled targets - even if they're not + doing the grappling. + - balance: Strong-Arm implant users also benefit from the training of punching grappled + people as well - as a treat, horizontal targets slam into the ground and break + tiling for no additional damage, but a very visible sign of "oh god someone + got pasted here". + - qol: Holosigns (engineering holobarriers, janitor holosigns, PENLITE holobarriers, + etc.) can now be projected onto doors. + - qol: Holofans from ATMOS holoprojectors can now be projected onto doors, windows, + and grilles. + LikeLakers2: + - bugfix: Fixes a potential runtime with the radioactivity mutation. + SmArtKar: + - bugfix: Removed a rogue fire alarm from DeltaStation's freezer + - bugfix: Fixed fake airlock bolts being examineable + - bugfix: Fixed most mining mobs being unaffected by additional damage against them + - bugfix: Fixed hat stabilizers not detaching clothing traits, turning any helmet + with a pacifism bud attached into one. + - bugfix: Fixed certain hallucinations displaying below floors/decals/items + - bugfix: Cult spells no longer play attack animation when clicking on an invalid + target + - bugfix: Fixed prototype egun's electrodes instantly detaching + - bugfix: Fixed night shifts removing coloring from lights + - bugfix: Objects on tables no longer get burnt by lava + - bugfix: Stacking machines can now pick up bluespace crystals + necromanceranne: + - bugfix: Makes absolutely sure we're removing Cyrogelidia's status effects if the + reagent is out of our mobs system. + - bugfix: The strongarm set bonus no longer requires a specific biotype to function. + You can now get the set bonus as an android. +2025-03-10: + EnterTheJake: + - balance: '"Wolves Among Sheep" cooldown increased from 2 to 5 minutes.' + Paxilmaniac: + - balance: The syndie smartgun has 2 tile aimbot now + SmArtKar: + - bugfix: 'Fixed pre-filled fish stasis cases breaking fish inside of them + + /:cl' + - bugfix: Immortal pyro anomalies no longer (unsuccessfully) attempt to spawn pyro + slimes + - bugfix: Fixed balloon alert positioning on wide mobs + - bugfix: Fixed constant hotspot runtimes + - bugfix: Hotspots should properly play their SFX when created by sources other + than plasmafires. + - bugfix: Fixes rideable mob layering + StrangeWeirdKitten: + - code_imp: Readds return_turf_delta_p() and is_nearby_planetary_atmos() as turf + helpers. +2025-03-11: + Sadboysuss: + - sound: regenerative meshes now make sounds when healing and have new drop/pickup + sounds + SmArtKar: + - bugfix: Fixed missing distro pipe in CE's office, and missing cable in tech storage + Vallat: + - bugfix: fixed "Save chat log" verb + Wallem: + - qol: some tgui lists that use the same simple function--Navigation menu, Fulton + navbeacon selection, Ghost teleportation, etc.--have been given a candystripe. + combustor: + - map: Removed cameras from most break rooms and cargo warehouses. + - qol: Added and moved a bunch of cameras to remove silly blind-spots and added + cams to rooms where there should've been cams. + - map: Added EVA shutter buttons to birdshot +2025-03-12: + Melbert: + - qol: When reaching the wizard grand finale, you no longer get locked into finale + effects that cannot yet be invoked. + - bugfix: Preference dummy now properly updates when changing some species features + - qol: If you have the bald quirk selected, the wig shows up on the preference dummy + - qol: If you have the bald quirk selected, and your role starts with a hat, the + hat will start attached to your wig + - balance: Reworks Changeling's Darkness Adaptation. It's strength now scales with + how dark your environment is, rather than being static transparency. + - bugfix: Fixes Digital Camo's examine message + - bugfix: '[Delta] Rearranges / adds some missing wallmounts' + Singul0: + - bugfix: fixes unwalkable tiles in the film studio bar + SmArtKar: + - bugfix: Connected Birdshot dorms to distro + - bugfix: Fixed a missing wire under Wawa's Coldroom APC + - bugfix: Going through lava while buckled to an object no longer explodes the server + - bugfix: Getting a carp infusion or committing a certain holofish suicide no longer + gets rid of your voidwalker overlay. + StrangeWeirdKitten: + - bugfix: Character creator preview being miniature + subject217: + - bugfix: Updated the description of insulated gloves to reflect their lack of chunky + fingers. +2025-03-13: + Absolucy: + - code_imp: Spawning the debug "sheet snatcher" box will no longer try to do ~400 + stack merges. + Hatterhat: + - qol: Genetics data disks are now infinitely recolorable/reskinnable via alt-click. + Holoo-1: + - bugfix: fixed offstation humans being able to be cult target + Kocma-san: + - code_imp: The damage multiplier of xenomorph bodypart has been relocated + Melbert: + - bugfix: You can make eye charts out of blank signs + SmArtKar: + - bugfix: Fixed spiderwebs, alien weeds, kudzu, and other stuff layering below catwalks + and glass floors + - bugfix: Polymorph belts no longer can consume unlimited amounts of cores + - balance: Delusions now override your examine and tooltip names, similarly to prosopagnosia. + - bugfix: Delusions no longer turn you into shadowy blobs when moving between z-levels + - rscadd: Newspapers now give you inversed FOV, but you can negate this by poking + out holes in them with a sharp or pointy tool. They also prevent people from + seeing you whisper. + - balance: Empaths can now "feel" people whispering even if they can't see their + mouth. + - code_imp: Cleaned up newspaper code. + - bugfix: Nooatrium can no longer revive suicided mobs + - bugfix: Fixes black vision for dextrous mobs using 516 version of BYOND + Thunder12345: + - bugfix: Alien pistols do damage again + Wallem: + - rscadd: Some aliens have recently been discovered to be green. + - image: The circuit drone has had its icons updated + itsmeow: + - bugfix: Fixed TGUI assets and icons sometimes not showing up until you refreshed + the page on 516 clients +2025-03-14: + ArcaneMusic: + - bugfix: To prevent infinite sales issues, security helmets, armors, and batons + packs now all cost 600 credits, up from 400. + - bugfix: Candle packs now cost 400 credits, up from 300, and candles now sell for + 12.25 cr each. + ArrisFairburne: + - qol: Added a widget to the main menu of the modular computer screen, which will + tell the user what the current alert level is and if they are needed to fix + the problem. + Ben10Omintrix: + - rscadd: tweaks the raptor taming minigame to be fairer + - rscadd: the taming minigame's difficulty now relies on the raptor's personality + as well as the rider's quirks + DATA-xPUNGED: + - rscadd: 'Added a new smite: Retcon' + - refactor: Refactored the component temporary_atom into an atom level fade_into_nothing + proc + Ghommie: + - rscadd: You can now craft multi-dimensional payloads with dimensional anomalies. + - qol: Food types are now passed down when cooking from recipes. For example, a + plate of corned "beef" made from giant killer tomato slabs no longer counts + as meat but only vegetables now. + - bugfix: Fixed a metric ton of inconsistencies with food types and recipes. + - bugfix: Dank-pockets (the weed variant) can now be microwaved. + Hatterhat: + - bugfix: Burst-firing weapons now respect their fire delay, in the event that their + fire delay is longer than click cooldown. If your local burst-fire weapon starts + to feel weird because of this, please submit an issue report. + Maximal08: + - qol: Now you can turn the conveyor belt counterclockwise using the right mouse + button with the wrench in your hand. + Melbert: + - qol: Wallet loadout item comes pre-equipped + - qol: Lipstick loadout item comes pre-applied + - qol: You can choose your lipstick color from any color now. You can also choose + what layer it defaults to. + - rscadd: If you exhale a cloud of smoke from a cigarette while face to face with + someone, you'll blow it right in their face. + - rscadd: Syndicate Cigarettes will blind (for a very short time) if you blow their + smoke in someone's face. + - balance: Syndicate bombs get harder to defuse the longer its timer is set, up + to 9 minutes. + - bugfix: Training bombs won't message admins when they're "detonated" or defused. + SmArtKar: + - bugfix: Fixed animated circuit tiles missing CS:S when powered off + - rscadd: Instead of dissolving instantly, pills now activate after 4 seconds. This + timer can be increased by using a dropper filled with sugar on them, 1s added + per 1u dropped. + - rscadd: Patches now stick to you and slowly bleed their reagents, instead of being + strictly inferior to both pills and sprays. + - rscadd: Items that you accidentally swallow now go into your stomach contents. + - refactor: Patches are no longer considered pills by the game + - refactor: All stomachs now have contents, instead of it being exclusive to aliens. + You can cut open a stomach to empty it with a scalpel, and mend an existing + incision with a cautery. + Twaticus: + - bugfix: the station may appear dusty again! + Y0SH1M4S73R: + - rscadd: The station blueprints can be used to toggle whether custom shuttles can + be built/expanded/docked within station areas. + - qol: Custom areas do not have to be completely contained within shuttle frames, + as long as the APC isn't attached to the frame. + - rscadd: Custom shuttles with functioning engines will fly off into the sunset + when the emergency shuttle leaves. + - rscadd: Custom shuttle navigation computers can view space levels adjacent to + the one the shuttle is currently docked at. + - bugfix: Constructed shuttle engines no longer contribute twice as much engine + power to shuttles, nor can they be used to add unlimited shuttle power. + - bugfix: Constructed shuttle engines now connect to shuttles when build, rather + than needing to be unachored and then reanchored. +2025-03-15: + ArcaneMusic: + - balance: Sheets of material and stock blocks are now subject to elastic price + changes. AKA, if you sell materials, their price will go down after sale and + will return after some time. + - bugfix: Stock blocks can no longer be made with no value or with a quantity of + zero material. + - bugfix: The GMM Machine can now no longer create stock blocks when unpowered. + - qol: The GMM machine now lights up when powered. + Holoo-1: + - bugfix: fixed white space when observing in auto observe mode + Melbert: + - bugfix: Plaslamen can see prefs again + SmArtKar: + - bugfix: Fixed basic mobs not idling due to nearby ghosts + hry-gh: + - bugfix: icons generate properly for janicarts +2025-03-16: + AyIong: + - bugfix: Antagonists tab in preferences, scrollable in Byond 516 now + - bugfix: Fixed TGUI text inputs, that's allows only 1 symbol instead infinity + Melbert: + - rscadd: Your mood printout (clicking on the mood face) has been reformatted, and + should generally be cleaner. + - rscadd: Self examining was reworked, and overall gives you a lot less perfect + information, unless you are self-aware. + - rscadd: Bullet and grenade shrapnel is now hidden from examining - it's skin deep. + You can't rip them out with your hands, but hemostats / wirecutters still suffice + if you know they're there. Health analyzers still pick them up too. + - qol: Ghosts aren't notified about NPCs getting appendicitis + Mothblocks: + - rscadd: You can now craft radio jammers. + - balance: Radio jammers have had their cost lowered from 5 TC to 1 TC. + SmArtKar: + - bugfix: You can no longer insert infinite amounts of slime cores into advanced + chem grenades + - bugfix: Non-beaker containers in grenades work once more + - bugfix: Proximity sensors in grenade finally work after like, 4 years. + - code_imp: Cleaned up chemical grenade code + tralezab: + - balance: The cargo console now has a delay to express orders (renamed to autodelivery) +2025-03-17: + Absolucy: + - bugfix: Toxins no longer damage your liver if you are immune to toxins anyways. + ArcaneMusic: + - bugfix: Stock blocks that have gone liquid should properly recalculate their cost + when possible. + - bugfix: Spawned sheets of uranium now actually hold 50 sheets. + Ben10Omintrix: + - bugfix: AI controllers should now be able to react much quicker + Hatterhat: + - bugfix: The glaive retool kit works again and no longer turns your crusher invisible. + Majkl-J: + - bugfix: Afro (Huge) layers correctly now + - bugfix: Plasmaman helmet hats layer correctly now, as does everything else with + the hat stabilizer component + - bugfix: Cyborg hats should now layer correctly, among other worn items + Melbert: + - refactor: Refactored martial arts, if you notice any oddities like managing to + know two martial arts at once or having your powers disappear, report it! + - rscadd: If you know multiple martial arts, such as krav maga from gloves and cqc + from a book, you can now swap between them at will via a button in the IC tab! + RandomDudeFromTheRim: + - spellcheck: fixed a single typo when using Vortex Recall + SmArtKar: + - bugfix: You no longer can insert sheets into unpowered, broken or opened autolathes. + - qol: Screwdriver/crowbar/multitool interactions on autolathes now work with left + click instead of right click. + - qol: Autosurgeons now can insert toolkit implants into your left arm when used + in the left hand/with left arm zone selected + jlsnow301: + - bugfix: A number of UIs with spacing issues - such as genetics scanner and circuit + boards - have been fixed. Report issues! +2025-03-18: + 00-Steven: + - refactor: Refactored table frame interactions, please report any issues. + - bugfix: You can no longer make material-less material tables out of certain items. + - bugfix: Fancy tables remember which carpet was used to make them, and no longer + magically transmute carpets into simpler types. + - bugfix: You can no longer stack abductor table frame-using tables specifically. + - qol: Added screentips for deconstructing table frames and constructing tables + out of them if the material you're holding can do so. + - qol: Table frames can now also be deconstructed on right click for parity with + tables, in addition to left click. + - qol: Table frame interactions use balloon alerts. + EmptyLullaby: + - balance: Crew pinpointers have been moved to the regular section of the medivend, + and as such now benefit from the department discount. + EnnyDaiz: + - bugfix: remove downmix stereo=>mono where it is not required + Hatterhat: + - bugfix: The Cyber Tac Glitch MODsuit now has appropriately offset gauntlets. + - bugfix: The Cyber Tac Glitch MODsuit now has visor overlays instead of the menacing + white void. Red eyes, take warning (because that's when the armor booster is + active). + - bugfix: The Cyber Tac Glitch MODsuit's interface theme is now an appropriately + terminal-esque. + - bugfix: Dark Paladin MODsuits from the Dead Money bundle are no longer menacingly + white. + - bugfix: Armor boosters in MODsuits in general are no longer menacingly white voids. + Jacquerel: + - rscadd: The Mulligan Injector now comes as a kit which can create manifest entries + for you under your new identity, as well as an Assistant ID Card with your new + name. + Kylerace: + - refactor: tech disk uploading isnt super slow anymore (much harder to crash spacetime + with it) + Maximal08: + - rscadd: Adds wires for holopad + Melbert: + - admin: Adds "Dustself" + - admin: Adds "Dust" smite. Does what it says on the tin + - admin: Adds "Divine" smites. They are variations of normal smites themed around + divine intervention. + - balance: Mobs that pry open doors (regal rats, space dragons, strong arms) now + deal damage to the doors, similar to how jaws of life damage the doors + - qol: Double-examining a human will tell you if they have any limbs abnormal to + their species, assuming said limbs aren't concealed by their clothing. + OHJ4Y: + - qol: Botanical aprons can now hold your internals tank. + OrionTheFox: + - rscadd: the Tile Sprayer now includes quite a few more tile decals! Warning lines, + guide arrows, diagonals and filled tiles! Wow! + SSensum13: + - qol: 'Now you can shoot guns pointblank in combat mode! If you want to attack + melee only: use combat mode + right mouse button.' + SmArtKar: + - spellcheck: Fixes a missing space in battle rifle's examine text + - rscadd: Certain implants now have visuals when implanted + - bugfix: You no longer blink when you adjust your clothing + - bugfix: Fixed an issue where some NPC/midround humans would not get their eye + color set correctly + - bugfix: Fixed perceptomatix helmet allowing you to see even when unconscious + - refactor: Refactored how client colors are handled, ensuring that certain effects + like nightmare goggles don't disappear when another vision-affecting piece of + clothing is worn. + TheBibleMelts: + - bugfix: Added a Megacell to the Russian Derelict engine room. Rejoice, drones! + Xackii: + - qol: 'Big Manipulator: Now you can change manipualtor work speed to slow down + manipulator manipulations.' + - qol: 'Big Manipulator: Use mode now can work with "empty hand" - monkey worker + will use its paw to interact with objects without requiring item in paw.' + - qol: 'Big Manipulator: Manipulator now can be locked with using id prevents anybody + else configurate manipulator settings.' + - bugfix: 'Big Manipulator: Fixes random disappearance of a part of the manipulator + ui.' +2025-03-19: + Ghommie: + - bugfix: Fixing an issue with food exports. + - bugfix: fixed a small rendering issue with fishes inside an aquarium. + Melbert: + - bugfix: Fixed drunkness mood printout + SmArtKar: + - bugfix: Fixed premium internals boxes still being stretched + Twaticus: + - image: resprites party pod and harvester + hack-wrench: + - rscadd: Added syndie fitness nunchuks to spy uplink (medium-high bounty) +2025-03-20: + Ghommie: + - bugfix: The number of coins, chips or bills that can fit inside a piggy bank is + now capped, anything exceeding that amount is converted into a single holochip. + Melbert: + - qol: Corpses spawned from human-like NPCs will spawn damaged according to how + they died (or will even gib if the npc was gibbed) + - bugfix: Maint Russians with guns will now spawn corpses instead of vanishing + - rscadd: HoP now spawns with a platinum ID card which can hold infinite common + access slots, but is still limited in amount of command slots. + - bugfix: Some niche bullets are now hidden when embedded + RandomDudeFromTheRim: + - bugfix: You can no longer stuff anomaly cores into an autolathe for glass and + iron + Rhials: + - qol: Blobs now have a custom icon for the orbit menu/ComboHUD. + SmArtKar: + - qol: Improved formatting on holopad controls for AI + - bugfix: Fixed holopads softlocking AIs + - bugfix: Fixed escape shuttles only taking 4/9/19 minutes to arrive + - bugfix: Fixed emergency mode lighting using incorrect light color + - balance: Improved crate mimics' disguise + TealSeer: + - bugfix: fixed the blood filter whitelist doing the opposite of what it should + necromanceranne: + - balance: Flechette has been reworked into an AP pellet round that embeds and wounds, + but has less actual damage to buckshot. You can print it once Exotic Ammunition + has been researched. Also available to Nuclear Operatives. + - rscadd: Donk Co. 'Donk Spike' flechette rounds. No longer offered by Donk Co. + It can sometimes shows up in trashbins and dumpsters. And operatives can buy + it in bulk if they really feel like it. + - balance: Mech PKA now once again mines turfs and does full damage on its AOE explosion + (still only hitting mining mobs). + - balance: The standard PKA AOE mods are now by default 10% capacity. But they cannot + be used with one another. + - balance: The standard PKA offensive AOE mod now does the PKA's full damage in + its AOE. + - balance: Mining AOEs will affect everything within a 2 tile radius around the + point of impact, up from a 1 tile radius. + - code_imp: Changes floor diseases from advanced diseases into basic diseases. Should + mostly function the same, except you can't mutate them. + timothymtorres: + - code_imp: Remove redundant NOT operator from CALCULATE_ADJACENT_TURFS + warbluke: + - rscadd: Added Holodisks to loadout options +2025-03-21: + AyIong: + - bugfix: Fixed preferences layout for Byond 515 after fixing it for Byond 516 + EmptyLullaby: + - bugfix: donksoft flechette box has been fixed + Ghommie: + - bugfix: Adds missing aquarium props box to goodies and games vending machine. + GremlinSeeker: + - map: redesigned wawa station's atmospherics + GreytideSkye: + - spellcheck: Photocopier finally learned about %date and %time, and changed the + forms' fields to accommodate them. + Holoo-1: + - rscadd: AIs now can create a popup window via multicam + LemonInTheDark: + - rscadd: Smoothed objects on shuttles now will only smooth with other shuttles + (added support for extensions of this system) + - refactor: I've funked around with our smoothing system, cutting out some older + code. Lemme know if anything is weird PLEASE + Maximal08: + - spellcheck: changes the description of the stable red extract from "Nullifies + all equipment based slowdowns." to "Nullifies all equipment based speed change." + Melbert: + - rscadd: Adds 4-5 new hallucinations. Collect them all. + - balance: If you are only hallucinating a little bit, the game will prefer to pick + more subtle hallucinations. If you are hallucinating a ton, it will prefer the + more wacky hallucinations. + - balance: If you are only hallucinating a little bit, the cooldown between hallucinations + is longer. If you are hallucinating a ton, it will be shorter. + - balance: If a hallucination fails to trigger (such as a deaf person getting a + sound hallucination) the next one will be a lot sooner. + - balance: RDS hallucination amount is capped at mid tier hallucinations. This means + bubblegum and co. will be a lot rarer, or will even never show. HOWEVER, there + is now a preference allowing you to uncap your RDS hallucinations. + - balance: Mindbreaker toxin is more effective at suppressing RDS. + - balance: Some hallucinations effects have been tweaked up or down according to + the new thresholds. Madness mask as an example. + - bugfix: '"Fake Fire" Hallucination works again, and now has a unique message for + if you stop-drop-roll that other people see.' + MelokGleb: + - rscadd: The Blood-Drunk Miner has found an ancient hunting knife... + SmArtKar: + - bugfix: You can no longer dupe loot by reviving certain mobs (like ash drakes) + - refactor: Refactored how overlay lights work - having one in your pocket will + no longer color air around you into piss + - qol: Painted flashlights once again emit colored light. + - bugfix: Playing battle arcades now gives you a moodlet and counts as gaming for + the gamer quirk + - code_imp: Cleaned up real gamer code + Twaticus: + - image: Resprites trashcarts, cardboard boxes, and tattoo kits. + deathrobotpunch: + - qol: Removed the access restrictions from mail sorter vending machine + vinylspiders: + - bugfix: combat rmb will no longer fire the gun at the same time as pistol whipping + for certain guns + warbluke: + - bugfix: Toner cartridges are no longer larger than the airlock sprayer. +2025-03-22: + Ghommie: + - bugfix: Custom material toolboxes and fishing rods can now be printed with alloys + such a plasteel and plasmaglass. + Melbert: + - bugfix: Failing to inject no longer prints a strange message +2025-03-23: + ArcaneMusic: + - image: The civilian bounty teleporter pad and pirate bounty pads now have new + sprites. + Ghommie: + - balance: Makes fishing rods with higher (or lower) bait speed a smidge easier + to control during the minigame + - balance: Made fish traits inheritability easier. They're now guaranteed to be + passed down to offsprings if both parents have them. + OrionTheFox: + - rscadd: Added greyscale Fedoras, available in the Clothesmate! + - image: Resprited most of the Fedoras - now they'll all be much more consistent + with the detective's updated and sleek ones. They also all have a hairmask now, + so hair will no longer clip with them! + - image: To pair with this, the Beige suit has been just slightly tweaked and the + Curator's "Treasure Hunter Jacket" entirely recolored to better match their + fedoras. + jlsnow301: + - bugfix: The air alarm has been refactored and had some slight UI improvements. + Please report any issues to the github! +2025-03-24: + Absolucy: + - bugfix: Fixed an edge-case where, if two heretics of different paths applied a + mark to the same person, the effects from the first mark (i.e moon path's pacifism) + would likely be permanent. + Ghommie: + - balance: Autoreel fishing lines do what their name implies and nudges the bait + towards the fish a little during the minigame when you're not pressing the mouse + button. Also cloaked lines are more transparent, and better at catching a certain + fish... + Jacquerel: + - bugfix: Disks will now be inserted into the autolathe if you successfully insert + them, rather than if you do not succeed in inserting them. + - balance: The action animation indicating someone is performing an action with + a progress bar now inherits how visible they are. You won't easily see a pair + of gears floating in space if a Voidwalker starts diving under the station. + - qol: It is now easier to see where you currently are while jaunting + JohnFulpWillard: + - qol: Smartfridges and Vending machines no longer have a setting to change the + list/grid mode, it instead updates automatically as you swap the mode in-game. + Melbert: + - bugfix: Being atrocinated ignores elevation from tables and such + - qol: Mappers can now disable bookshelf randomization + - qol: Random books found via mail or in maint will no longer random into books + from the "adult" section + - qol: Bookshelf randomization will now exclude adult books unless marked as adult + MelokGleb: + - spellcheck: fixed a typo in actor role conditions + SmArtKar: + - bugfix: Being at low sanity will actually give your hallucinations as intended. + - bugfix: Fixed jittering resetting the wrong pair of visual offsets + - bugfix: You can no longer craft balloon armor and weapons without knowing Balloon + Sutra + - bugfix: Air sensors now show up in atmospherics category + - spellcheck: Fixed grammar/capitalization in crafter/slapcrafting error messages + - code_imp: Cleaned up some crafting code + SyncIt21: + - bugfix: storages are no longer initialized with items that can't be put back in + after taking them out + - refactor: storage initialization has been refactored. Please report bugs on github + mcbalaam: + - refactor: Reworked the Big Manipulators UI + zxaber: + - qol: Cyborg PDAs' home screens now have Robotact at the top of the screen. + - bugfix: Sheets of materials with NODROP can no longer be given to repair bots. +2025-03-25: + Absolucy: + - code_imp: Slightly improved the code for the Cortex Imprint bioware. + Capsandi: + - bugfix: "live donk Fr\xE9chette rounds and m12gsl bulldog magazine sprites look\ + \ less like ERRORs." + Jacquerel: + - qol: Users of Ashen Passage and Phase Shift will be able to move instantly upon + cast rather than after a delay + - balance: Space Crawl now functions if you are on a space tile, or if you are in + an outdoor area with low air pressure. + Neuroplasty: + - spellcheck: Fixed a typo for the Chemical Separator + SmArtKar: + - code_imp: Removed the 516 beta warning entirely + - qol: Moved material item insertion to right click for material containers + - bugfix: Adjusting sanity over the allowed maximum will no longer completely halt + the change, and instead actually cap it at the maximum value. + - code_imp: Cleaned up mood and mood-adjacent code. + - refactor: Audited all remaining coloring code - among noticeable changes, blood + should no longer get colored or "leak out" of item bounds, atmos pipes no longer + color weirdly and repairbots are white again. + - bugfix: Fixed incorrect offsets on wide items' attack animations + - bugfix: Fixed darkness adaptation not refreshing eye status correctly + - bugfix: Fixed failed wrench/welder interaction attempts resulting in you attacking + reflectors + TealSeer: + - bugfix: fixed the ship ambience volume slider not working properly + combustor: + - bugfix: Fixes the det's shutters on icebox + imedial: + - qol: AI shells can track people now too + - bugfix: bloodless species no longer have a free bonechiller + subject217: + - spellcheck: fixed a typo and a grammar error +2025-03-26: + Absolucy: + - qol: Players with the Prosopagnosia quirk will now see the ID name (if there is + one) examining someone, instead of ALWAYS Unknown, altho it'll have a question + mark, i.e "John Doe?" + - qol: Prosopagnosia no longer makes you see yourself as Unknown. + - bugfix: The _ispath SDQL2/Lua wrapper can now be used to actually check if something + is a path. + - code_imp: Added the _is_type_in_typecache wrapper, for SDQL2 / Lua scripts. + OrionTheFox: + - bugfix: fixed some tiny sprite flickering on two atmos wallmounts + SmArtKar: + - bugfix: Fixed vendor machine glass shards being permanently stuck in people + - bugfix: Large internals station trait no longer prevents admin-specific internals + boxes from spawning + StrangeWeirdKitten: + - code_imp: do_after() can now hold custom cog icons. Add some today! +2025-03-27: + Bisar: + - balance: Door remotes now match the access of their owner (except for the Captain, + whose remote access is unchanged). Door remotes, however, respect the high security + area control of other remotes; as such, even if a Head can enter an area like + the brig, only the Security remote works to open the entrance. + Goat: + - bugfix: Clown biodome on lavaland uses lavaland turf now for the bananium ore. + Holoo-1: + - bugfix: fixed AI multicam room on multiz maps not showing anything + Melbert: + - bugfix: Fix storage whitelists / blacklists being ignored in some contexts (hotkeys) + SmArtKar: + - bugfix: Fixed all satchels having reduced storage + - bugfix: MODsuits should now be affected by stabilized red crossbreeds + - bugfix: MODsuit slowdowns should no longer behave weirdly with ash accretion/magboots/armor + booster modules. + - refactor: Refactored MODsuit slowdown calculations to be query-based instead of + modules directly modifying part speed values. + - bugfix: Fixed techweb scrolling cutting off the last node + mcbalaam: + - refactor: Minor Big Manipulator code refactoring + norsvenska: + - bugfix: Wawastation's port bow solar array now has a cable under all panels by + default. +2025-03-28: + LemonInTheDark: + - bugfix: Fixed our pathfinding logic getting deeply confused by border objects + - admin: Added clientside displayed pathfinding debug tools, give em a go + Melbert: + - qol: Examining a heretic influence gives you a sp00ky message rather than an empty + box + RandomDudeFromTheRim: + - bugfix: fixed an extremely hypothetical, yet possible respawn exploit + SmArtKar: + - rscadd: Nyctophobia and Claustrophobia quirks now have proper terror effects instead + of making you walk/suffocate. Immersion! + - refactor: All sources of "terror"/"fear" now use a common component, meaning they + share their counters. + - bugfix: Fixed shift right clicking shoes giving some interesting options. + - bugfix: Fixed blue space on lower Z levels + - bugfix: Fixed toolbelts being able to unintended items + distributivgesetz: + - bugfix: Players on 516 can submit votes for IRV again. +2025-03-29: + 00-Steven: + - bugfix: Dispensing a returned item from a vendor actually reduces the amount of + stock for that item. + - bugfix: Special vendor dispensing behaviours get applied to thrown items. + - bugfix: Special vendor dispensing behaviours actually get applied to returned + items where applicable. + Absolucy: + - qol: Reword the Pushover quirk's description to be more accurate to how it actually + works. + Absolucy, hry-gh: + - bugfix: Fixed a potential bluescreen error relating to stylesheets on BYOND 516. + AyIong: + - bugfix: Fixed small character preview, color matrix preview, mech preview, and + other previews with uses ByondUI map + Cirrial: + - bugfix: Donk pocket boxes start with more than one donk pocket again. + Cyberboss: + - config: Added `TTS_HTTP_TIMEOUT_SECONDS` for setting the maximum duration TTS + HTTP requests can run for before being aborted. + FlufflesTheDog: + - qol: Drones can use silicon emotes + Goat: + - bugfix: The Tiziran Empire has now actually puts canned goods in their canned + good exports along with putting more food in their farm fresh boxes. + Jacquerel: + - rscadd: You can pick up desk bells by dragging them onto yourself. This is now + how you attach them to wheelchairs, instead of dragging it onto the wheelchair. + - bugfix: Folding a wheelchair with attached bell will drop the bell to the ground + instead of deleting it forever. + Majkl-J: + - bugfix: Mystery box items no longer layer on the lowest z_level when in multiz + - code_imp: mystery_box_item is now a type of /obj/effect/abstract + - code_imp: The mobs subsystem and blood.dm file for living mobs no longer use single + letter vars + - refactor: Changed many of our use cases for pixel_x and pixel_y correctly into + pixel_w and pixel_z, fixing layering issues in the process. + SmArtKar: + - bugfix: Fixes incorrect indentation in blob victory code which could cause immense + lag as a result + - bugfix: Fixed weird overlay positioning on dismembered bodyparts + jlsnow301: + - bugfix: Fixed scrolling the experiscanner UI + necromanceranne: + - admin: Added logging to fuel pools being ignited by someone deliberately. + timothymtorres: + - code_imp: Change some hardcoded ice/snow temperature variables that were set to + 180 to use `ICEBOX_MIN_TEMPERATURE` instead. +2025-03-30: + AyIong: + - bugfix: de-shrunked alternate names modal + Ben10Omintrix: + - rscadd: adds the cain and abel to the colossus lootpool! + EnterTheJake: + - bugfix: Space phase is as fast as it used to be. + Ezel: + - map: Hopline looks now more like a line. + - bugfix: medbay grid is wired to eachother again +2025-03-31: + Absolucy: + - admin: 'Added some new Lua functions: SS13.ispath, SS13.typecacheof, SS13.is_type_in_typecache, + SS13.get_turf, and SS13.get_area' + - bugfix: Fixed a broken check in the SS13.register_signal Lua function. + - bugfix: Fixed the _winget SDQL2/Lua wrapper, so it actually returns the return + value of winget. + Kashargul: + - bugfix: confirm buttons on the chat window + - bugfix: scroll tracking failing on large display counts when large messages blocks + where received + LT3: + - bugfix: Tram information plate and other signs mount correctly on tram walls + OrionTheFox: + - spellcheck: added a missing space to the description of the Donk Co. Failed Products + Schematics research + SmArtKar: + - bugfix: Fixed a series of storage-related bugs caused by a refactor PR. + - bugfix: Fixed weather from Z levels above rendering over players' UI + - qol: Multi-Z Detail setting has been renamed to Multi-Z Depth with an explanation + on what it does. "Standard" setting has been renamed to "No Culling" + - bugfix: Fixed encryption keys in makeshift jammer crafting recipes not having + an icon. + SyncIt21: + - bugfix: lockboxes & fancy storages spawned at round start with items in them don't + have issues anymore + - bugfix: cigarette donut & gorilla cube boxes hold the correct stuff again + Watermelon914: + - admin: Play Internet Sound will now automatically stop lobby music and prevent + lobby music from playing at roundend whilst active. + timothymtorres: + - bugfix: Fix soviet bears basketball minigame map not loading due to a misspelled + name when looking up map file. + - bugfix: Basketball runtimes when minigame mobs get deleted with clients + - map: Moved basketball maps into minigames folder. Removed centcomm landmark for + basketball minigame. + - refactor: Refactored basketball minigame to use lazyloading instead of the default + maploader. 2025-03-02: Alecksohs: - rscadd: Added a omni-species Kiryu-esque outfit to the Outfit Vendor. diff --git a/html/changelogs/archive/2025-04.yml b/html/changelogs/archive/2025-04.yml new file mode 100644 index 00000000000..8d71b64e368 --- /dev/null +++ b/html/changelogs/archive/2025-04.yml @@ -0,0 +1,9 @@ +2025-04-01: + Ghommie: + - bugfix: Fish will no longer drown if left half-submerged in a fishable turf on + which it can normally be found. Instead it will disperse after a while or if + starving. Note that this only happens if the fish is native to such turfs (eg. + lavaloop on beach water will still die). + SmArtKar: + - bugfix: Fixed gas station and phonebooth ruins magically summoning weather on + bottom levels of Icebox diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi index 83d7c14d0cc..9942d0a5398 100644 Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ diff --git a/icons/effects/dirt.dmi b/icons/effects/dirt.dmi index c3eeae8a9c5..5d5334f7bc9 100644 Binary files a/icons/effects/dirt.dmi and b/icons/effects/dirt.dmi differ diff --git a/icons/effects/dirt.png b/icons/effects/dirt.png new file mode 100644 index 00000000000..bee5b205ac1 Binary files /dev/null and b/icons/effects/dirt.png differ diff --git a/icons/effects/dirt.png.toml b/icons/effects/dirt.png.toml new file mode 100644 index 00000000000..cd6f740828a --- /dev/null +++ b/icons/effects/dirt.png.toml @@ -0,0 +1,2 @@ +template = "bitmask/diagonal_32x32.toml" +output_name = "dirt" diff --git a/icons/effects/dirt_misc.dmi b/icons/effects/dirt_misc.dmi new file mode 100644 index 00000000000..6346b48da87 Binary files /dev/null and b/icons/effects/dirt_misc.dmi differ diff --git a/icons/hud/pic_in_pic.dmi b/icons/hud/pic_in_pic.dmi index 9c550f3c25e..516b933125d 100644 Binary files a/icons/hud/pic_in_pic.dmi and b/icons/hud/pic_in_pic.dmi differ diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index 7bb42a56a14..787d2867042 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/clothing/head/hats.dmi b/icons/mob/clothing/head/hats.dmi index 1ff429b68b1..7d603fed0fa 100644 Binary files a/icons/mob/clothing/head/hats.dmi and b/icons/mob/clothing/head/hats.dmi differ diff --git a/icons/mob/clothing/modsuit/mod_clothing.dmi b/icons/mob/clothing/modsuit/mod_clothing.dmi index 8a39f37bf0b..fa6077e073a 100644 Binary files a/icons/mob/clothing/modsuit/mod_clothing.dmi and b/icons/mob/clothing/modsuit/mod_clothing.dmi differ diff --git a/icons/mob/clothing/modsuit/mod_modules.dmi b/icons/mob/clothing/modsuit/mod_modules.dmi index d6dfa4c50a2..6ec3b13ea98 100644 Binary files a/icons/mob/clothing/modsuit/mod_modules.dmi and b/icons/mob/clothing/modsuit/mod_modules.dmi differ diff --git a/icons/mob/clothing/suits/jacket.dmi b/icons/mob/clothing/suits/jacket.dmi index 869966528b2..3cd0f0c464b 100644 Binary files a/icons/mob/clothing/suits/jacket.dmi and b/icons/mob/clothing/suits/jacket.dmi differ diff --git a/icons/mob/clothing/under/suits.dmi b/icons/mob/clothing/under/suits.dmi index e8fd6a820d3..b858489717d 100644 Binary files a/icons/mob/clothing/under/suits.dmi and b/icons/mob/clothing/under/suits.dmi differ diff --git a/icons/mob/huds/antag_hud.dmi b/icons/mob/huds/antag_hud.dmi index bb85cdd0cce..e2ba2ca89fc 100644 Binary files a/icons/mob/huds/antag_hud.dmi and b/icons/mob/huds/antag_hud.dmi differ diff --git a/icons/mob/human/hair_masks.dmi b/icons/mob/human/hair_masks.dmi index bb7b55e0cc3..dd54ce1e886 100644 Binary files a/icons/mob/human/hair_masks.dmi and b/icons/mob/human/hair_masks.dmi differ diff --git a/icons/mob/human/species/misc/bodypart_overlay_augmentations.dmi b/icons/mob/human/species/misc/bodypart_overlay_augmentations.dmi new file mode 100644 index 00000000000..a8e122dfe52 Binary files /dev/null and b/icons/mob/human/species/misc/bodypart_overlay_augmentations.dmi differ diff --git a/icons/mob/human/species/misc/bodypart_overlay_simple.dmi b/icons/mob/human/species/misc/bodypart_overlay_simple.dmi index e17934a6cdb..f6cbf72ff9d 100644 Binary files a/icons/mob/human/species/misc/bodypart_overlay_simple.dmi and b/icons/mob/human/species/misc/bodypart_overlay_simple.dmi differ diff --git a/icons/mob/inhands/clothing/hats_lefthand.dmi b/icons/mob/inhands/clothing/hats_lefthand.dmi index 6ad1f8886c9..3ea3bd8ae5b 100644 Binary files a/icons/mob/inhands/clothing/hats_lefthand.dmi and b/icons/mob/inhands/clothing/hats_lefthand.dmi differ diff --git a/icons/mob/inhands/clothing/hats_righthand.dmi b/icons/mob/inhands/clothing/hats_righthand.dmi index 3aba15568ef..f0d5f3fa3e2 100644 Binary files a/icons/mob/inhands/clothing/hats_righthand.dmi and b/icons/mob/inhands/clothing/hats_righthand.dmi differ diff --git a/icons/mob/inhands/equipment/idcards_lefthand.dmi b/icons/mob/inhands/equipment/idcards_lefthand.dmi index 90b96bd4d47..8dc99487d68 100644 Binary files a/icons/mob/inhands/equipment/idcards_lefthand.dmi and b/icons/mob/inhands/equipment/idcards_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/idcards_righthand.dmi b/icons/mob/inhands/equipment/idcards_righthand.dmi index a4b0ec4bb74..9fd835f25f2 100644 Binary files a/icons/mob/inhands/equipment/idcards_righthand.dmi and b/icons/mob/inhands/equipment/idcards_righthand.dmi differ diff --git a/icons/mob/inhands/equipment/kitchen_righthand.dmi b/icons/mob/inhands/equipment/kitchen_righthand.dmi index 4e5664bbc0c..0aa87d9558b 100644 Binary files a/icons/mob/inhands/equipment/kitchen_righthand.dmi and b/icons/mob/inhands/equipment/kitchen_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/melee_lefthand.dmi b/icons/mob/inhands/weapons/melee_lefthand.dmi index dc9cb6e9866..8ceaa871caf 100644 Binary files a/icons/mob/inhands/weapons/melee_lefthand.dmi and b/icons/mob/inhands/weapons/melee_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/melee_righthand.dmi b/icons/mob/inhands/weapons/melee_righthand.dmi index c694a765520..615aad43152 100644 Binary files a/icons/mob/inhands/weapons/melee_righthand.dmi and b/icons/mob/inhands/weapons/melee_righthand.dmi differ diff --git a/icons/mob/silicon/aibots.dmi b/icons/mob/silicon/aibots.dmi index b0bc6261f6d..fa4c11f891a 100644 Binary files a/icons/mob/silicon/aibots.dmi and b/icons/mob/silicon/aibots.dmi differ diff --git a/icons/mob/simple/carp.dmi b/icons/mob/simple/carp.dmi index e33b9c7ada8..8501653023b 100644 Binary files a/icons/mob/simple/carp.dmi and b/icons/mob/simple/carp.dmi differ diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index 7b7a18dc221..da1c70c17c3 100644 Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ diff --git a/icons/obj/clothing/head/hats.dmi b/icons/obj/clothing/head/hats.dmi index 2ce0eebb2ad..70872619f9b 100644 Binary files a/icons/obj/clothing/head/hats.dmi and b/icons/obj/clothing/head/hats.dmi differ diff --git a/icons/obj/clothing/head/sombrero.dmi b/icons/obj/clothing/head/sombrero.dmi index b072bf65d46..258034d4fc5 100644 Binary files a/icons/obj/clothing/head/sombrero.dmi and b/icons/obj/clothing/head/sombrero.dmi differ diff --git a/icons/obj/clothing/suits/jacket.dmi b/icons/obj/clothing/suits/jacket.dmi index b867e7da3a7..53d035518e7 100644 Binary files a/icons/obj/clothing/suits/jacket.dmi and b/icons/obj/clothing/suits/jacket.dmi differ diff --git a/icons/obj/clothing/under/suits.dmi b/icons/obj/clothing/under/suits.dmi index 42c79981df6..22699ebf0c6 100644 Binary files a/icons/obj/clothing/under/suits.dmi and b/icons/obj/clothing/under/suits.dmi differ diff --git a/icons/obj/fluff/previews.dmi b/icons/obj/fluff/previews.dmi index 8a69c136318..c68db312ed7 100644 Binary files a/icons/obj/fluff/previews.dmi and b/icons/obj/fluff/previews.dmi differ diff --git a/icons/obj/machines/harvester.dmi b/icons/obj/machines/harvester.dmi index d6d9b01fc62..74e2dbf591d 100644 Binary files a/icons/obj/machines/harvester.dmi and b/icons/obj/machines/harvester.dmi differ diff --git a/icons/obj/machines/sleeper.dmi b/icons/obj/machines/sleeper.dmi index db92230e486..507fd2a270d 100644 Binary files a/icons/obj/machines/sleeper.dmi and b/icons/obj/machines/sleeper.dmi differ diff --git a/icons/obj/machines/telepad.dmi b/icons/obj/machines/telepad.dmi index 2ae0d4f1259..b06436ebd63 100644 Binary files a/icons/obj/machines/telepad.dmi and b/icons/obj/machines/telepad.dmi differ diff --git a/icons/obj/machines/wallmounts.dmi b/icons/obj/machines/wallmounts.dmi index e659a0248ec..abb110520f9 100644 Binary files a/icons/obj/machines/wallmounts.dmi and b/icons/obj/machines/wallmounts.dmi differ diff --git a/icons/obj/maintenance_loot.dmi b/icons/obj/maintenance_loot.dmi index c75cb583c19..961aaede1b7 100644 Binary files a/icons/obj/maintenance_loot.dmi and b/icons/obj/maintenance_loot.dmi differ diff --git a/icons/obj/pipes_n_cables/stationary_canisters.dmi b/icons/obj/pipes_n_cables/stationary_canisters.dmi index 4f87a50845b..062ee812d40 100644 Binary files a/icons/obj/pipes_n_cables/stationary_canisters.dmi and b/icons/obj/pipes_n_cables/stationary_canisters.dmi differ diff --git a/icons/obj/pipes_n_cables/stationary_canisters.png b/icons/obj/pipes_n_cables/stationary_canisters.png new file mode 100644 index 00000000000..d25fc52caa2 Binary files /dev/null and b/icons/obj/pipes_n_cables/stationary_canisters.png differ diff --git a/icons/obj/pipes_n_cables/stationary_canisters.png.toml b/icons/obj/pipes_n_cables/stationary_canisters.png.toml new file mode 100644 index 00000000000..1832dd37a82 --- /dev/null +++ b/icons/obj/pipes_n_cables/stationary_canisters.png.toml @@ -0,0 +1,2 @@ +output_name = "canister" +template = "bitmask/diagonal_32x32.toml" diff --git a/icons/obj/pipes_n_cables/stationary_canisters_misc.dmi b/icons/obj/pipes_n_cables/stationary_canisters_misc.dmi new file mode 100644 index 00000000000..857b5a816b4 Binary files /dev/null and b/icons/obj/pipes_n_cables/stationary_canisters_misc.dmi differ diff --git a/icons/obj/science/circuits.dmi b/icons/obj/science/circuits.dmi index e91025ae613..de20bbe111e 100644 Binary files a/icons/obj/science/circuits.dmi and b/icons/obj/science/circuits.dmi differ diff --git a/icons/obj/service/bureaucracy.dmi b/icons/obj/service/bureaucracy.dmi index f52379a72b3..b464b7fbabb 100644 Binary files a/icons/obj/service/bureaucracy.dmi and b/icons/obj/service/bureaucracy.dmi differ diff --git a/icons/obj/service/janicart_upgrade.dmi b/icons/obj/service/janicart_upgrade.dmi index 92bb4740eeb..c8413f1e9c3 100644 Binary files a/icons/obj/service/janicart_upgrade.dmi and b/icons/obj/service/janicart_upgrade.dmi differ diff --git a/icons/obj/storage/box.dmi b/icons/obj/storage/box.dmi index 1fa377e2ebc..58b67dc3779 100644 Binary files a/icons/obj/storage/box.dmi and b/icons/obj/storage/box.dmi differ diff --git a/icons/obj/storage/closet.dmi b/icons/obj/storage/closet.dmi index ec01f4b9a34..bfa929fb0d5 100644 Binary files a/icons/obj/storage/closet.dmi and b/icons/obj/storage/closet.dmi differ diff --git a/icons/obj/storage/crates.dmi b/icons/obj/storage/crates.dmi index 7695ac5f848..2cb8f51fcf6 100644 Binary files a/icons/obj/storage/crates.dmi and b/icons/obj/storage/crates.dmi differ diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index 908f2ddc16f..14c905b28b5 100644 Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ diff --git a/icons/obj/weapons/baton.dmi b/icons/obj/weapons/baton.dmi index 6b7cbd8544a..101baab3c79 100644 Binary files a/icons/obj/weapons/baton.dmi and b/icons/obj/weapons/baton.dmi differ diff --git a/icons/obj/weapons/guns/ammo.dmi b/icons/obj/weapons/guns/ammo.dmi index 521ec8376e4..80a9544aee9 100644 Binary files a/icons/obj/weapons/guns/ammo.dmi and b/icons/obj/weapons/guns/ammo.dmi differ diff --git a/icons/obj/weapons/guns/ballistic.dmi b/icons/obj/weapons/guns/ballistic.dmi index 3ee34aeca0b..f2ec063b287 100644 Binary files a/icons/obj/weapons/guns/ballistic.dmi and b/icons/obj/weapons/guns/ballistic.dmi differ diff --git a/icons/obj/weapons/guns/projectiles.dmi b/icons/obj/weapons/guns/projectiles.dmi index 6de67f9e1d4..3930212fdbe 100644 Binary files a/icons/obj/weapons/guns/projectiles.dmi and b/icons/obj/weapons/guns/projectiles.dmi differ diff --git a/icons/obj/weapons/stabby.dmi b/icons/obj/weapons/stabby.dmi index be125b5f31d..80c4cf86802 100644 Binary files a/icons/obj/weapons/stabby.dmi and b/icons/obj/weapons/stabby.dmi differ diff --git a/icons/obj/weapons/stabby_wide.dmi b/icons/obj/weapons/stabby_wide.dmi new file mode 100644 index 00000000000..fa5c96f8a49 Binary files /dev/null and b/icons/obj/weapons/stabby_wide.dmi differ diff --git a/icons/turf/debug.dmi b/icons/turf/debug.dmi index 848187dd9f0..4bc24f6c787 100644 Binary files a/icons/turf/debug.dmi and b/icons/turf/debug.dmi differ diff --git a/icons/turf/smooth_wall.dmi b/icons/turf/smooth_wall.dmi index afb5f9536aa..e46ea0ae778 100644 Binary files a/icons/turf/smooth_wall.dmi and b/icons/turf/smooth_wall.dmi differ diff --git a/icons/turf/walls/false_walls.dmi b/icons/turf/walls/false_walls.dmi index 1b02b4bdbe6..74b72633bb4 100644 Binary files a/icons/turf/walls/false_walls.dmi and b/icons/turf/walls/false_walls.dmi differ diff --git a/lua/SS13_base.lua b/lua/SS13_base.lua index 470288af87e..5372901ddec 100644 --- a/lua/SS13_base.lua +++ b/lua/SS13_base.lua @@ -19,12 +19,55 @@ function SS13.get_runner_client() return dm.global_vars.GLOB.directory[SS13.get_runner_ckey()] end -SS13.type = dm.global_procs._text2path +function SS13.ispath(thing, path) + return dm.global_procs._ispath(thing, path) == 1 +end + +function SS13.type(typepath) + if type(typepath) == "string" then + return dm.global_procs._text2path(typepath) + elseif SS13.ispath(typepath) then + return typepath + else + return nil + end +end function SS13.istype(thing, type) return dm.global_procs._istype(thing, SS13.type(type)) == 1 end +function SS13.typecacheof(string_types) + local types = {} + for _, path in string_types do + if path ~= nil then + table.insert(types, SS13.type(path)) + end + end + return dm.global_procs.typecacheof(types) +end + +function SS13.is_type_in_typecache(thing, typecache) + return dm.global_procs._is_type_in_typecache(thing, typecache) == 1 +end + +function SS13.get_turf(thing) + return dm.global_procs._get_step(thing, 0) +end + +function SS13.get_area(thing) + if SS13.istype(thing, "/area") then + return thing + else + local turf = SS13.get_turf(thing) + -- don't bother with SS13.is_valid, turfs don't get destroyed + if dm.is_valid_ref(turf) then + return turf.loc + end + end + return nil +end + SS13.new = dm.new function SS13.qdel(datum) @@ -94,7 +137,7 @@ local function create_qdeleting_callback(datum) end function SS13.register_signal(datum, signal, func) - if not type(func) == "function" then + if type(func) ~= "function" then return end if not SS13.istype(datum, "/datum") then diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/colorist.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/colorist.dm deleted file mode 100644 index cad9c0a742e..00000000000 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/colorist.dm +++ /dev/null @@ -1,10 +0,0 @@ -/datum/quirk/item_quirk/colorist - name = "Colorist" - desc = "You like carrying around a hair dye spray to quickly apply color patterns to your hair." - icon = FA_ICON_FILL_DRIP - value = 0 - medical_record_text = "Patient enjoys dyeing their hair with pretty colors." - mail_goodies = list(/obj/item/dyespray) - -/datum/quirk/item_quirk/colorist/add_unique(client/client_source) - give_item_to_holder(/obj/item/dyespray, list(LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, LOCATION_HANDS = ITEM_SLOT_HANDS)) diff --git a/strings/antagonist_flavor/heretic_influences.json b/strings/antagonist_flavor/heretic_influences.json index ef7d55a101f..c0d42d41409 100644 --- a/strings/antagonist_flavor/heretic_influences.json +++ b/strings/antagonist_flavor/heretic_influences.json @@ -62,6 +62,24 @@ "THEIR HAND IS AT MY SIDE.", "THEY WALK THE WORLD. UNNOTICED.", "TO WALK BETWEEN PLANES." + ], + "examine": [ + "Is our reality so fragile?", + "What did I see on the other side?", + "Is this right?", + "This is wrong.", + "I feel a hand at my throat.", + "I weep, yet no tears fall.", + "We are not alone.", + "Am I alone?", + "Is this the end? Or the beginning?", + "What's out there? What's through there?", + "What power is this?", + "Is this what we are? Is this what we can be?", + "Is this what we wanted?", + "We don't deserve this... do we?", + "Are we prepared for this?", + "We thought we were predators, but we are prey." ] } diff --git a/strings/hallucination.json b/strings/hallucination.json index d6e13d570d9..e52ba2611f0 100644 --- a/strings/hallucination.json +++ b/strings/hallucination.json @@ -1,9 +1,10 @@ { "suspicion": [ - "@pick(add_name)i'm watching you...", "@pick(add_name)i know what you're doing", + "@pick(add_name)i'm watching you...", "@pick(add_name)what are you hiding?", - "I saw that" + "I saw that", + "I'm watching you" ], "conversation": [ diff --git a/tgstation.dme b/tgstation.dme index 4d07147758e..88567a87dd4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1,5 +1,10 @@ // All manual changes should be made outside the BEGIN_ and END_ blocks. // New source code should be placed in .dm files: choose File/New --> Code File. + +// This should always be the VERY FIRST THING. No exceptions. Read the file for more info, but basically, this needs to be here so that we can ensure specific code is always the very first thing to execute. +#include "code\genesis_call.dme" +// Again, DO NOT MOVE IT OR ALLOW ANY OTHER #include TO PRECEDE THE ONE ABOVE. + // BEGIN_INTERNALS // END_INTERNALS @@ -565,6 +570,7 @@ #include "code\__HELPERS\duplicating.dm" #include "code\__HELPERS\dynamic_human_icon_gen.dm" #include "code\__HELPERS\events.dm" +#include "code\__HELPERS\fade_into_nothing.dm" #include "code\__HELPERS\files.dm" #include "code\__HELPERS\filters.dm" #include "code\__HELPERS\forensics.dm" @@ -1332,6 +1338,7 @@ #include "code\datums\components\marionette.dm" #include "code\datums\components\martial_art_giver.dm" #include "code\datums\components\mind_linker.dm" +#include "code\datums\components\mind_martial_art.dm" #include "code\datums\components\mirv.dm" #include "code\datums\components\mob_chain.dm" #include "code\datums\components\mob_harvest.dm" @@ -1399,7 +1406,7 @@ #include "code\datums\components\soul_stealer.dm" #include "code\datums\components\soulstoned.dm" #include "code\datums\components\sound_player.dm" -#include "code\datums\components\space_allaergy.dm" +#include "code\datums\components\space_allergy.dm" #include "code\datums\components\space_camo.dm" #include "code\datums\components\space_dive.dm" #include "code\datums\components\space_kidnap.dm" @@ -1485,6 +1492,10 @@ #include "code\datums\components\fantasy\affix.dm" #include "code\datums\components\fantasy\prefixes.dm" #include "code\datums\components\fantasy\suffixes.dm" +#include "code\datums\components\fearful\effects.dm" +#include "code\datums\components\fearful\fearful.dm" +#include "code\datums\components\fearful\sources.dm" +#include "code\datums\components\fearful\terror_handler.dm" #include "code\datums\components\food\decomposition.dm" #include "code\datums\components\food\edible.dm" #include "code\datums\components\food\germ_sensitive.dm" @@ -1505,6 +1516,7 @@ #include "code\datums\components\plumbing\simple_components.dm" #include "code\datums\components\plumbing\splitter.dm" #include "code\datums\components\riding\riding.dm" +#include "code\datums\components\riding\riding_minigame.dm" #include "code\datums\components\riding\riding_mob.dm" #include "code\datums\components\riding\riding_vehicle.dm" #include "code\datums\components\style\style.dm" @@ -1541,9 +1553,6 @@ #include "code\datums\diseases\wizarditis.dm" #include "code\datums\diseases\advance\advance.dm" #include "code\datums\diseases\advance\presets.dm" -#include "code\datums\diseases\advance\floor_diseases\carpellosis.dm" -#include "code\datums\diseases\advance\floor_diseases\gastritium.dm" -#include "code\datums\diseases\advance\floor_diseases\nebula_nausea.dm" #include "code\datums\diseases\advance\symptoms\beard.dm" #include "code\datums\diseases\advance\symptoms\chills.dm" #include "code\datums\diseases\advance\symptoms\choking.dm" @@ -1574,6 +1583,9 @@ #include "code\datums\diseases\advance\symptoms\vomit.dm" #include "code\datums\diseases\advance\symptoms\weight.dm" #include "code\datums\diseases\advance\symptoms\youth.dm" +#include "code\datums\diseases\floor_diseases\carpellosis.dm" +#include "code\datums\diseases\floor_diseases\gastritium.dm" +#include "code\datums\diseases\floor_diseases\nebula_nausea.dm" #include "code\datums\elements\_element.dm" #include "code\datums\elements\ai_control_examine.dm" #include "code\datums\elements\ai_flee_while_injured.dm" @@ -1733,7 +1745,6 @@ #include "code\datums\elements\strippable.dm" #include "code\datums\elements\structure_repair.dm" #include "code\datums\elements\swabbable.dm" -#include "code\datums\elements\temporary_atom.dm" #include "code\datums\elements\tenacious.dm" #include "code\datums\elements\tiny_mob_hunter.dm" #include "code\datums\elements\tool_flash.dm" @@ -2140,6 +2151,7 @@ #include "code\datums\wires\emitter.dm" #include "code\datums\wires\explosive.dm" #include "code\datums\wires\fax.dm" +#include "code\datums\wires\holopad.dm" #include "code\datums\wires\mass_driver.dm" #include "code\datums\wires\mecha.dm" #include "code\datums\wires\microwave.dm" @@ -2655,6 +2667,7 @@ #include "code\game\objects\items\devices\laserpointer.dm" #include "code\game\objects\items\devices\lightreplacer.dm" #include "code\game\objects\items\devices\megaphone.dm" +#include "code\game\objects\items\devices\mulligan_kit.dm" #include "code\game\objects\items\devices\multitool.dm" #include "code\game\objects\items\devices\pipe_painter.dm" #include "code\game\objects\items\devices\polycircuit.dm" @@ -3105,6 +3118,7 @@ #include "code\modules\admin\trophy_manager.dm" #include "code\modules\admin\whitelist.dm" #include "code\modules\admin\callproc\callproc.dm" +#include "code\modules\admin\smites\_smite.dm" #include "code\modules\admin\smites\bad_luck.dm" #include "code\modules\admin\smites\become_object.dm" #include "code\modules\admin\smites\berforate.dm" @@ -3114,6 +3128,7 @@ #include "code\modules\admin\smites\bsa.dm" #include "code\modules\admin\smites\curse_of_babel.dm" #include "code\modules\admin\smites\dock_pay.dm" +#include "code\modules\admin\smites\dust.dm" #include "code\modules\admin\smites\fake_bwoink.dm" #include "code\modules\admin\smites\fat.dm" #include "code\modules\admin\smites\fireball.dm" @@ -3128,9 +3143,9 @@ #include "code\modules\admin\smites\phobia_ocky_icky.dm" #include "code\modules\admin\smites\puzzgrid.dm" #include "code\modules\admin\smites\puzzle.dm" +#include "code\modules\admin\smites\retcon.dm" #include "code\modules\admin\smites\rod.dm" #include "code\modules\admin\smites\scarify.dm" -#include "code\modules\admin\smites\smite.dm" #include "code\modules\admin\smites\supply_pod.dm" #include "code\modules\admin\smites\supply_pod_quick.dm" #include "code\modules\admin\verb_datums\_admin_verb_datum.dm" @@ -3176,6 +3191,7 @@ #include "code\modules\admin\verbs\mapping.dm" #include "code\modules\admin\verbs\maprotation.dm" #include "code\modules\admin\verbs\panicbunker.dm" +#include "code\modules\admin\verbs\path_debugger.dm" #include "code\modules\admin\verbs\plane_debugger.dm" #include "code\modules\admin\verbs\player_ticket_history.dm" #include "code\modules\admin\verbs\playsound.dm" @@ -3990,6 +4006,7 @@ #include "code\modules\client\preferences\prosthetic_limb.dm" #include "code\modules\client\preferences\prosthetic_organ.dm" #include "code\modules\client\preferences\random.dm" +#include "code\modules\client\preferences\rds_limit.dm" #include "code\modules\client\preferences\runechat.dm" #include "code\modules\client\preferences\scaling_method.dm" #include "code\modules\client\preferences\scarred_eye.dm" @@ -4385,8 +4402,13 @@ #include "code\modules\fishing\fish\types\syndicate.dm" #include "code\modules\fishing\fish\types\tiziran.dm" #include "code\modules\fishing\sources\_fish_source.dm" -#include "code\modules\fishing\sources\source_types.dm" -#include "code\modules\flufftext\Dreaming.dm" +#include "code\modules\fishing\sources\subtypes\fishing_portal_machine.dm" +#include "code\modules\fishing\sources\subtypes\mining_ruins.dm" +#include "code\modules\fishing\sources\subtypes\rifts.dm" +#include "code\modules\fishing\sources\subtypes\structures.dm" +#include "code\modules\fishing\sources\subtypes\surgery.dm" +#include "code\modules\fishing\sources\subtypes\turfs.dm" +#include "code\modules\flufftext\dreaming.dm" #include "code\modules\food_and_drinks\pizzabox.dm" #include "code\modules\food_and_drinks\plate.dm" #include "code\modules\food_and_drinks\machinery\coffeemaker.dm" @@ -4439,10 +4461,12 @@ #include "code\modules\forensics\forensics_helpers.dm" #include "code\modules\hallucination\_hallucination.dm" #include "code\modules\hallucination\battle.dm" +#include "code\modules\hallucination\blood_flow.dm" #include "code\modules\hallucination\body.dm" #include "code\modules\hallucination\bolted_airlocks.dm" #include "code\modules\hallucination\bubblegum_attack.dm" #include "code\modules\hallucination\delusions.dm" +#include "code\modules\hallucination\eyes_in_dark.dm" #include "code\modules\hallucination\fake_alert.dm" #include "code\modules\hallucination\fake_chat.dm" #include "code\modules\hallucination\fake_death.dm" @@ -4460,6 +4484,7 @@ #include "code\modules\hallucination\shock.dm" #include "code\modules\hallucination\station_message.dm" #include "code\modules\hallucination\stray_bullet.dm" +#include "code\modules\hallucination\telepathy.dm" #include "code\modules\hallucination\xeno_attack.dm" #include "code\modules\holiday\foreign_calendar.dm" #include "code\modules\holiday\holidays.dm" @@ -4962,7 +4987,6 @@ #include "code\modules\mob\login.dm" #include "code\modules\mob\logout.dm" #include "code\modules\mob\mob.dm" -#include "code\modules\mob\mob_arcade.dm" #include "code\modules\mob\mob_defines.dm" #include "code\modules\mob\mob_helpers.dm" #include "code\modules\mob\mob_lists.dm" @@ -5982,6 +6006,7 @@ #include "code\modules\reagents\chemistry\recipes\slime_extracts.dm" #include "code\modules\reagents\chemistry\recipes\special.dm" #include "code\modules\reagents\chemistry\recipes\toxins.dm" +#include "code\modules\reagents\reagent_containers\applicator.dm" #include "code\modules\reagents\reagent_containers\blood_pack.dm" #include "code\modules\reagents\reagent_containers\chem_pack.dm" #include "code\modules\reagents\reagent_containers\condiment.dm" @@ -6695,7 +6720,6 @@ #include "code\modules\wiremod\shell\wallmount.dm" #include "code\modules\zombie\items.dm" #include "code\modules\zombie\organs.dm" -#include "code\ze_genesis_call\genesis_call.dm" #include "interface\interface.dm" #include "interface\menu.dm" #include "interface\stylesheet.dm" diff --git a/tgui/.prettierignore b/tgui/.prettierignore index a91324ebe6e..336b5d38f16 100644 --- a/tgui/.prettierignore +++ b/tgui/.prettierignore @@ -8,9 +8,13 @@ .swcrc /docs -/public /packages/tgui-polyfill /packages/tgfont/static **/*.json **/*.yml **/*.md + +# Avoid running on any bundles. +/public/**/* +# Running it on tgui.html is fine, however. +!/public/tgui.html diff --git a/tgui/.prettierrc.yml b/tgui/.prettierrc.yml index 01769692264..e3cf66636e8 100644 --- a/tgui/.prettierrc.yml +++ b/tgui/.prettierrc.yml @@ -1 +1,6 @@ singleQuote: true +overrides: + - files: 'public/tgui.html' + options: + trailingComma: es5 + arrowParens: always diff --git a/tgui/packages/tgui-bench/tests/DisposalUnit.test.tsx b/tgui/packages/tgui-bench/tests/DisposalUnit.test.tsx index 376d27a9115..15e97e0baf9 100644 --- a/tgui/packages/tgui-bench/tests/DisposalUnit.test.tsx +++ b/tgui/packages/tgui-bench/tests/DisposalUnit.test.tsx @@ -1,21 +1,10 @@ import { backendUpdate, setGlobalStore } from 'tgui/backend'; import { DisposalUnit } from 'tgui/interfaces/DisposalUnit'; -import { createRenderer } from 'tgui/renderer'; +import { render } from 'tgui/renderer'; import { configureStore } from 'tgui/store'; const store = configureStore({ sideEffects: false }); -const renderUi = createRenderer((dataJson: string) => { - setGlobalStore(store); - - store.dispatch( - backendUpdate({ - data: Byond.parseJson(dataJson), - }), - ); - return ; -}); - export const data = JSON.stringify({ flush: 0, full_pressure: 1, @@ -25,4 +14,14 @@ export const data = JSON.stringify({ isai: 0, }); -export const Default = () => renderUi(data); +export function Default() { + setGlobalStore(store); + + store.dispatch( + backendUpdate({ + data: Byond.parseJson(data), + }), + ); + + return render(); +} diff --git a/tgui/packages/tgui-panel/chat/renderer.jsx b/tgui/packages/tgui-panel/chat/renderer.jsx index a80643b571f..0457ed25027 100644 --- a/tgui/packages/tgui-panel/chat/renderer.jsx +++ b/tgui/packages/tgui-panel/chat/renderer.jsx @@ -134,12 +134,17 @@ class ChatRenderer { /** @type {HTMLElement} */ this.scrollNode = null; this.scrollTracking = true; + this.lastScrollHeight = 0; this.handleScroll = (type) => { const node = this.scrollNode; + if (!node) { + return; + } const height = node.scrollHeight; const bottom = node.scrollTop + node.offsetHeight; const scrollTracking = - Math.abs(height - bottom) < SCROLL_TRACKING_TOLERANCE; + Math.abs(height - bottom) < SCROLL_TRACKING_TOLERANCE || + this.lastScrollHeight === 0; if (scrollTracking !== this.scrollTracking) { this.scrollTracking = scrollTracking; this.events.emit('scrollTrackingChanged', scrollTracking); @@ -349,6 +354,10 @@ class ChatRenderer { } return; } + // Store last scroll position + if (this.scrollNode) { + this.lastScrollHeight = this.scrollNode.scrollHeight; + } // Insert messages const fragment = document.createDocumentFragment(); const countByType = {}; diff --git a/tgui/packages/tgui-panel/index.tsx b/tgui/packages/tgui-panel/index.tsx index b3f13d89270..b91548094fa 100644 --- a/tgui/packages/tgui-panel/index.tsx +++ b/tgui/packages/tgui-panel/index.tsx @@ -12,7 +12,7 @@ import { perf } from 'common/perf'; import { combineReducers } from 'common/redux'; import { setGlobalStore } from 'tgui/backend'; import { captureExternalLinks } from 'tgui/links'; -import { createRenderer } from 'tgui/renderer'; +import { render } from 'tgui/renderer'; import { configureStore } from 'tgui/store'; import { setupGlobalEvents } from 'tgui-core/events'; import { setupHotReloading } from 'tgui-dev-server/link/client.cjs'; @@ -20,12 +20,13 @@ import { setupHotReloading } from 'tgui-dev-server/link/client.cjs'; import { audioMiddleware, audioReducer } from './audio'; import { chatMiddleware, chatReducer } from './chat'; import { gameMiddleware, gameReducer } from './game'; +import { Panel } from './Panel'; import { setupPanelFocusHacks } from './panelFocus'; import { pingMiddleware, pingReducer } from './ping'; import { settingsMiddleware, settingsReducer } from './settings'; import { telemetryMiddleware } from './telemetry'; -perf.mark('inception', window.performance?.timing?.navigationStart); +perf.mark('inception', window.performance?.timeOrigin); perf.mark('init'); const store = configureStore({ @@ -48,28 +49,24 @@ const store = configureStore({ }, }); -const renderApp = createRenderer(() => { - setGlobalStore(store); - - const { Panel } = require('./Panel'); - return ; -}); - -const setupApp = () => { +function setupApp() { // Delay setup if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', setupApp); return; } + setGlobalStore(store); + setupGlobalEvents({ ignoreWindowFocus: true, }); + setupPanelFocusHacks(); captureExternalLinks(); // Re-render UI on store updates - store.subscribe(renderApp); + store.subscribe(() => render()); // Dispatch incoming messages as store actions Byond.subscribe((type, payload) => store.dispatch({ type, payload })); @@ -102,10 +99,10 @@ const setupApp = () => { './telemetry', ], () => { - renderApp(); + render(); }, ); } -}; +} setupApp(); diff --git a/tgui/packages/tgui-panel/panelFocus.js b/tgui/packages/tgui-panel/panelFocus.ts similarity index 81% rename from tgui/packages/tgui-panel/panelFocus.js rename to tgui/packages/tgui-panel/panelFocus.ts index e0f31c8e3a8..90cdf836368 100644 --- a/tgui/packages/tgui-panel/panelFocus.js +++ b/tgui/packages/tgui-panel/panelFocus.ts @@ -7,9 +7,9 @@ * @license MIT */ -import { vecLength, vecSubtract } from 'common/vector'; import { focusMap } from 'tgui/focus'; import { canStealFocus, globalEvents } from 'tgui-core/events'; +import { vecLength, vecSubtract } from 'tgui-core/vector'; // Empyrically determined number for the smallest possible // text you can select with the mouse. @@ -19,9 +19,9 @@ const deferredFocusMap = () => setTimeout(() => focusMap()); export const setupPanelFocusHacks = () => { let focusStolen = false; - let clickStartPos = null; + let clickStartPos: number[] | null = null; window.addEventListener('focusin', (e) => { - focusStolen = canStealFocus(e.target); + focusStolen = canStealFocus(e.target as HTMLElement); }); window.addEventListener('mousedown', (e) => { clickStartPos = [e.screenX, e.screenY]; @@ -33,6 +33,9 @@ export const setupPanelFocusHacks = () => { if (dist >= MIN_SELECTION_DISTANCE) { focusStolen = true; } + if (document.activeElement?.className.includes('Button')) { + focusStolen = true; + } } if (!focusStolen) { deferredFocusMap(); diff --git a/tgui/packages/tgui/App.tsx b/tgui/packages/tgui/App.tsx new file mode 100644 index 00000000000..fcb2fdf1dc8 --- /dev/null +++ b/tgui/packages/tgui/App.tsx @@ -0,0 +1,14 @@ +import { globalStore } from './backend'; +import { IconProvider } from './Icons'; + +export function App() { + const { getRoutedComponent } = require('./routes'); + const Component = getRoutedComponent(globalStore); + + return ( + <> + + + + ); +} diff --git a/tgui/packages/tgui/Icons.tsx b/tgui/packages/tgui/Icons.tsx new file mode 100644 index 00000000000..1a377c3d389 --- /dev/null +++ b/tgui/packages/tgui/Icons.tsx @@ -0,0 +1,30 @@ +import { Suspense, useEffect } from 'react'; +import { fetchRetry } from 'tgui-core/http'; + +import { resolveAsset } from './assets'; +import { logger } from './logging'; + +function loadIconMap() { + fetchRetry(resolveAsset('icon_ref_map.json')) + .then((res) => res.json()) + .then((data) => (Byond.iconRefMap = data)) + .catch((error) => logger.log(error)); +} + +function IconMapLoader() { + useEffect(() => { + if (Object.keys(Byond.iconRefMap).length === 0) { + loadIconMap(); + } + }, []); + + return null; +} + +export function IconProvider() { + return ( + + + + ); +} diff --git a/tgui/packages/tgui/backend.ts b/tgui/packages/tgui/backend.ts index bed4a16c21f..1a0529374b4 100644 --- a/tgui/packages/tgui/backend.ts +++ b/tgui/packages/tgui/backend.ts @@ -13,7 +13,7 @@ import { perf } from 'common/perf'; import { createAction } from 'common/redux'; -import { globalEvents } from 'tgui-core/events'; +import { BooleanLike } from 'tgui-core/react'; import { setupDrag } from './drag'; import { focusMap } from './focus'; @@ -145,22 +145,6 @@ export const backendMiddleware = (store) => { return; } - if (type === 'byond/mousedown') { - globalEvents.emit('byond/mousedown'); - } - - if (type === 'byond/mouseup') { - globalEvents.emit('byond/mouseup'); - } - - if (type === 'byond/ctrldown') { - globalEvents.emit('byond/ctrldown'); - } - - if (type === 'byond/ctrlup') { - globalEvents.emit('byond/ctrlup'); - } - if (type === 'backend/suspendStart' && !suspendInterval) { logger.log(`suspending (${Byond.windowId})`); // Keep sending suspend messages until it succeeds. @@ -257,12 +241,12 @@ type BackendState = { name: string; layout: string; }; - refreshing: boolean; + refreshing: BooleanLike; window: { key: string; size: [number, number]; - fancy: boolean; - locked: boolean; + fancy: BooleanLike; + locked: BooleanLike; }; client: { ckey: string; diff --git a/tgui/packages/tgui/drag.ts b/tgui/packages/tgui/drag.ts index 0884b1b0bd7..5d6609fba33 100644 --- a/tgui/packages/tgui/drag.ts +++ b/tgui/packages/tgui/drag.ts @@ -6,6 +6,7 @@ import { storage } from 'common/storage'; import { vecAdd, vecMultiply, vecScale, vecSubtract } from 'common/vector'; +import { BooleanLike } from 'tgui-core/react'; import { createLogger } from './logging'; @@ -116,10 +117,10 @@ const storeWindowGeometry = async () => { // Recall window geometry from local storage and apply it export const recallWindowGeometry = async ( options: { - fancy?: boolean; + fancy?: BooleanLike; pos?: [number, number]; size?: [number, number]; - locked?: boolean; + locked?: BooleanLike; } = {}, ) => { const geometry = options.fancy && (await storage.get(windowKey)); diff --git a/tgui/packages/tgui/icons.ts b/tgui/packages/tgui/icons.ts deleted file mode 100644 index f2c8d351ebe..00000000000 --- a/tgui/packages/tgui/icons.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { fetchRetry } from 'tgui-core/http'; - -import { resolveAsset } from './assets'; -import { logger } from './logging'; - -export function loadIconRefMap() { - if (Object.keys(Byond.iconRefMap).length > 0) { - return; - } - - fetchRetry(resolveAsset('icon_ref_map.json')) - .then((res) => res.json()) - .then((data) => (Byond.iconRefMap = data)) - .catch((error) => logger.log(error)); -} diff --git a/tgui/packages/tgui/index.tsx b/tgui/packages/tgui/index.tsx index 9fb73e69279..7a999955321 100644 --- a/tgui/packages/tgui/index.tsx +++ b/tgui/packages/tgui/index.tsx @@ -32,26 +32,17 @@ import { setupGlobalEvents } from 'tgui-core/events'; import { setupHotKeys } from 'tgui-core/hotkeys'; import { setupHotReloading } from 'tgui-dev-server/link/client.cjs'; +import { App } from './App'; import { setGlobalStore } from './backend'; -import { loadIconRefMap } from './icons'; import { captureExternalLinks } from './links'; -import { createRenderer } from './renderer'; +import { render } from './renderer'; import { configureStore } from './store'; -perf.mark('inception', window.performance?.timing?.navigationStart); +perf.mark('inception', window.performance?.timeOrigin); perf.mark('init'); const store = configureStore(); -const renderApp = createRenderer(() => { - setGlobalStore(store); - loadIconRefMap(); - - const { getRoutedComponent } = require('./routes'); - const Component = getRoutedComponent(store); - return ; -}); - function setupApp() { // Delay setup if (document.readyState === 'loading') { @@ -59,12 +50,13 @@ function setupApp() { return; } + setGlobalStore(store); + setupGlobalEvents(); setupHotKeys(); captureExternalLinks(); - // Re-render UI on store updates - store.subscribe(renderApp); + store.subscribe(() => render()); // Dispatch incoming messages as store actions Byond.subscribe((type, payload) => store.dispatch({ type, payload })); @@ -72,8 +64,8 @@ function setupApp() { // Enable hot module reloading if (module.hot) { setupHotReloading(); - module.hot.accept(['./debug', './layouts', './routes'], () => { - renderApp(); + module.hot.accept(['./debug', './layouts', './routes', './App'], () => { + render(); }); } } diff --git a/tgui/packages/tgui/interfaces/AirAlarm.tsx b/tgui/packages/tgui/interfaces/AirAlarm.tsx deleted file mode 100644 index f5d439915e9..00000000000 --- a/tgui/packages/tgui/interfaces/AirAlarm.tsx +++ /dev/null @@ -1,569 +0,0 @@ -import { Fragment } from 'react'; -import { - Box, - Button, - LabeledList, - Modal, - NumberInput, - Section, - Table, - VirtualList, -} from 'tgui-core/components'; -import { BooleanLike } from 'tgui-core/react'; - -import { useBackend, useLocalState } from '../backend'; -import { Window } from '../layouts'; -import { - Scrubber, - ScrubberProps, - Vent, - VentProps, -} from './common/AtmosControls'; -import { InterfaceLockNoticeBox } from './common/InterfaceLockNoticeBox'; - -type AirAlarmData = { - locked: BooleanLike; - siliconUser: BooleanLike; - emagged: BooleanLike; - dangerLevel: 0 | 1 | 2; - atmosAlarm: BooleanLike; // fix this - fireAlarm: BooleanLike; - faultStatus: 0 | 1 | 2; - faultLocation: string; - sensor: BooleanLike; - allowLinkChange: BooleanLike; - envData: { - name: string; - value: string; // preformatted in backend, shorter code that way. - danger: 0 | 1 | 2; - }[]; - tlvSettings: { - id: string; - name: string; - unit: string; - warning_min: number; - hazard_min: number; - warning_max: number; - hazard_max: number; - }[]; - vents: VentProps[]; - scrubbers: ScrubberProps[]; - selectedModePath: string; - panicSiphonPath: string; - filteringPath: string; - modes: { - name: string; - desc: string; - path: string; - danger: BooleanLike; - }[]; - thresholdTypeMap: Record; -}; - -export const AirAlarm = (props) => { - const { act, data } = useBackend(); - const locked = data.locked && !data.siliconUser; - return ( - - - - - {!locked && } - - - ); -}; - -const AirAlarmStatus = (props) => { - const { data } = useBackend(); - const { envData } = data; - const dangerMap = { - 0: { - color: 'good', - localStatusText: 'Optimal', - }, - 1: { - color: 'average', - localStatusText: 'Caution', - }, - 2: { - color: 'bad', - localStatusText: 'Danger (Internals Required)', - }, - }; - const faultMap = { - 0: { - color: 'green', - areaFaultText: 'None', - }, - 1: { - color: 'purple', - areaFaultText: 'Manual Trigger', - }, - 2: { - color: 'average', - areaFaultText: 'Automatic Detection', - }, - }; - const localStatus = dangerMap[data.dangerLevel] || dangerMap[0]; - const areaFault = faultMap[data.faultStatus] || faultMap[0]; - return ( -
- - {(envData.length > 0 && ( - <> - {envData.map((entry) => { - const status = dangerMap[entry.danger] || dangerMap[0]; - return ( - - {entry.value} - - ); - })} - - {localStatus.localStatusText} - - - {(data.atmosAlarm && 'Atmosphere Alarm') || - (data.fireAlarm && 'Fire Alarm') || - 'Nominal'} - - - {areaFault.areaFaultText} - - - {data.faultLocation || 'None'} - - - )) || ( - - Cannot obtain air sample for analysis. - - )} - {!!data.emagged && ( - - Safety measures offline. Device may exhibit abnormal behavior. - - )} - -
- ); -}; - -const AIR_ALARM_ROUTES = { - home: { - title: 'Air Controls', - component: () => AirAlarmControlHome, - }, - vents: { - title: 'Vent Controls', - component: () => AirAlarmControlVents, - }, - scrubbers: { - title: 'Scrubber Controls', - component: () => AirAlarmControlScrubbers, - }, - modes: { - title: 'Operating Mode', - component: () => AirAlarmControlModes, - }, - thresholds: { - title: 'Alarm Thresholds', - component: () => AirAlarmControlThresholds, - }, -} as const; - -type Screen = keyof typeof AIR_ALARM_ROUTES; - -const AirAlarmControl = (props) => { - const [screen, setScreen] = useLocalState('screen', 'home'); - const route = AIR_ALARM_ROUTES[screen] || AIR_ALARM_ROUTES.home; - const Component = route.component(); - return ( -
setScreen('home')} - /> - ) - } - > - -
- ); -}; - -// Home screen -// -------------------------------------------------------- - -const AirAlarmControlHome = (props) => { - const { act, data } = useBackend(); - const [screen, setScreen] = useLocalState('screen', 'home'); - const { - selectedModePath, - panicSiphonPath, - filteringPath, - atmosAlarm, - sensor, - allowLinkChange, - } = data; - const isPanicSiphoning = selectedModePath === panicSiphonPath; - return ( - <> - - ) : ( - <> - - act('set_threshold', { - threshold: id, - threshold_type: type, - value: value, - }) - } - unit={unit} - value={oldValue} - minValue={0} - maxValue={100000} - step={10} - /> - - - )} - - - ); -}; - -const AirAlarmControlThresholds = (props) => { - const { act, data } = useBackend(); - const [activeModal, setActiveModal] = useLocalState | null>('tlvModal', null); - const { tlvSettings, thresholdTypeMap } = data; - return ( - <> - - - Threshold - - Danger Below - - - Warning Below - - - Warning Above - - - Danger Above - - Actions - - {tlvSettings.map((tlv) => ( - - {tlv.name} - - - - - - - - - - - - - - <> -
- {activeModal && ( - tlv.id === activeModal.id) || {})[ - activeModal.typeVar - ] - } - {...activeModal} - /> - )} - - ); -}; diff --git a/tgui/packages/tgui/interfaces/AirAlarm/AlarmControl.tsx b/tgui/packages/tgui/interfaces/AirAlarm/AlarmControl.tsx new file mode 100644 index 00000000000..b76226450ae --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirAlarm/AlarmControl.tsx @@ -0,0 +1,59 @@ +import { useState } from 'react'; +import { Button, Section } from 'tgui-core/components'; + +import { AirAlarmControlHome } from './screens/Home'; +import { AirAlarmControlModes } from './screens/Modes'; +import { AirAlarmControlScrubbers } from './screens/Scrubbers'; +import { AirAlarmControlThresholds } from './screens/Thresholds'; +import { AirAlarmControlVents } from './screens/Vents'; +import { AlarmScreen } from './types'; + +export const AIR_ALARM_ROUTES = { + home: { + title: 'Air Controls', + component: AirAlarmControlHome, + }, + vents: { + title: 'Vent Controls', + component: AirAlarmControlVents, + }, + scrubbers: { + title: 'Scrubber Controls', + component: AirAlarmControlScrubbers, + }, + modes: { + title: 'Operating Mode', + component: AirAlarmControlModes, + }, + thresholds: { + title: 'Alarm Thresholds', + component: AirAlarmControlThresholds, + }, +} as const; + +export function AirAlarmControl(props) { + const [screen, setScreen] = useState('home'); + + const route = AIR_ALARM_ROUTES[screen] || AIR_ALARM_ROUTES.home; + const Component = route.component; + const isHome = route.title === 'Air Controls'; + + return ( +
setScreen('home')} + disabled={isHome} + > + Back + + } + > + +
+ ); +} diff --git a/tgui/packages/tgui/interfaces/AirAlarm/AlarmModal.tsx b/tgui/packages/tgui/interfaces/AirAlarm/AlarmModal.tsx new file mode 100644 index 00000000000..e9d10f0db28 --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirAlarm/AlarmModal.tsx @@ -0,0 +1,64 @@ +import { Box, Button, Modal, NumberInput, Section } from 'tgui-core/components'; + +import { useBackend } from '../../backend'; +import { AirAlarmData, EditingModalProps } from './types'; + +export function AlarmEditingModal(props: EditingModalProps) { + const { act } = useBackend(); + const { id, name, type, typeName, unit, oldValue, finish, typeVar } = props; + + return ( + +
finish()} icon="times" color="red" />} + > + + Editing the {typeName.toLowerCase()} value for {name.toLowerCase()} + ... + + {oldValue === -1 ? ( + + ) : ( + <> + + act('set_threshold', { + threshold: id, + threshold_type: type, + value: value, + }) + } + unit={unit} + value={oldValue} + minValue={0} + maxValue={100000} + step={10} + /> + + + )} +
+
+ ); +} diff --git a/tgui/packages/tgui/interfaces/AirAlarm/AlarmStatus.tsx b/tgui/packages/tgui/interfaces/AirAlarm/AlarmStatus.tsx new file mode 100644 index 00000000000..60e8b6748cf --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirAlarm/AlarmStatus.tsx @@ -0,0 +1,94 @@ +import { LabeledList, Section } from 'tgui-core/components'; + +import { useBackend } from '../../backend'; +import { AirAlarmData } from './types'; + +const dangerMap = { + 0: { + color: 'good', + localStatusText: 'Optimal', + }, + 1: { + color: 'average', + localStatusText: 'Caution', + }, + 2: { + color: 'bad', + localStatusText: 'Danger (Internals Required)', + }, +} as const; + +const faultMap = { + 0: { + color: 'good', + areaFaultText: 'None', + }, + 1: { + color: 'purple', + areaFaultText: 'Manual Trigger', + }, + 2: { + color: 'average', + areaFaultText: 'Automatic Detection', + }, +} as const; + +export function AirAlarmStatus(props) { + const { data } = useBackend(); + const { envData } = data; + + const localStatus = dangerMap[data.dangerLevel] || dangerMap[0]; + const areaFault = faultMap[data.faultStatus] || faultMap[0]; + + return ( +
+ + {envData.length <= 0 ? ( + + Cannot obtain air sample for analysis. + + ) : ( + <> + {envData.map((entry) => { + const status = dangerMap[entry.danger] || dangerMap[0]; + return ( + + {entry.value} + + ); + })} + + {localStatus.localStatusText} + + + {(data.atmosAlarm && 'Atmosphere Alarm') || + (data.fireAlarm && 'Fire Alarm') || + 'Nominal'} + + + {areaFault.areaFaultText} + + + {data.faultLocation || 'None'} + + + )} + {!!data.emagged && ( + + Safety measures offline. Device may exhibit abnormal behavior. + + )} + +
+ ); +} diff --git a/tgui/packages/tgui/interfaces/AirAlarm/index.tsx b/tgui/packages/tgui/interfaces/AirAlarm/index.tsx new file mode 100644 index 00000000000..717195bdaea --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirAlarm/index.tsx @@ -0,0 +1,49 @@ +import { useState } from 'react'; +import { Stack } from 'tgui-core/components'; + +import { useBackend } from '../../backend'; +import { Window } from '../../layouts'; +import { InterfaceLockNoticeBox } from '../common/InterfaceLockNoticeBox'; +import { AirAlarmControl } from './AlarmControl'; +import { AlarmEditingModal } from './AlarmModal'; +import { AirAlarmStatus } from './AlarmStatus'; +import { ActiveModal, AirAlarmData } from './types'; +import { ModalContext } from './useModal'; + +export function AirAlarm(props) { + const { data } = useBackend(); + const { tlvSettings } = data; + + const locked = data.locked && !data.siliconUser; + + const modalState = useState(); + const [activeModal, setActiveModal] = modalState; + + return ( + + + + + + + + + + + {!locked && } + + {activeModal && ( + tlv.id === activeModal.id) || {})[ + activeModal.typeVar + ] + } + {...activeModal} + /> + )} + + + + ); +} diff --git a/tgui/packages/tgui/interfaces/AirAlarm/screens/Home.tsx b/tgui/packages/tgui/interfaces/AirAlarm/screens/Home.tsx new file mode 100644 index 00000000000..65edf13c55e --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirAlarm/screens/Home.tsx @@ -0,0 +1,85 @@ +import { Dispatch, SetStateAction } from 'react'; +import { useBackend } from 'tgui/backend'; +import { Button, Stack } from 'tgui-core/components'; + +import { AirAlarmData, AlarmScreen } from '../types'; + +type Props = { + setScreen?: Dispatch>; +}; + +export function AirAlarmControlHome(props: Props) { + const { act, data } = useBackend(); + const { setScreen } = props; + if (!setScreen) { + throw new Error('setScreen is required'); + } + + const { + allowLinkChange, + atmosAlarm, + filteringPath, + panicSiphonPath, + selectedModePath, + sensor, + } = data; + + const isPanicSiphoning = selectedModePath === panicSiphonPath; + return ( + + + + + + + + + + + + + + + + + + + + {!!sensor && !!allowLinkChange && ( + + act('disconnect_sensor')} + > + Disconnect Sensor + + + )} + + ); +} diff --git a/tgui/packages/tgui/interfaces/AirAlarm/screens/Modes.tsx b/tgui/packages/tgui/interfaces/AirAlarm/screens/Modes.tsx new file mode 100644 index 00000000000..75b5993fec4 --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirAlarm/screens/Modes.tsx @@ -0,0 +1,37 @@ +import { useBackend } from 'tgui/backend'; +import { Button, NoticeBox, Stack } from 'tgui-core/components'; + +import { AirAlarmData } from '../types'; + +export function AirAlarmControlModes(props) { + const { act, data } = useBackend(); + const { modes, selectedModePath } = data; + + if (!modes || modes.length === 0) { + return ( + + Nothing to show + + ); + } + + return ( + + {modes.map((mode) => ( + + + + ))} + + ); +} diff --git a/tgui/packages/tgui/interfaces/AirAlarm/screens/Scrubbers.tsx b/tgui/packages/tgui/interfaces/AirAlarm/screens/Scrubbers.tsx new file mode 100644 index 00000000000..23bd127f3e7 --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirAlarm/screens/Scrubbers.tsx @@ -0,0 +1,26 @@ +import { useBackend } from 'tgui/backend'; +import { NoticeBox, VirtualList } from 'tgui-core/components'; + +import { Scrubber } from '../../common/AtmosControls'; +import { AirAlarmData } from '../types'; + +export function AirAlarmControlScrubbers(props) { + const { data } = useBackend(); + const { scrubbers } = data; + + if (!scrubbers || scrubbers.length === 0) { + return ( + + Nothing to show + + ); + } + + return ( + + {scrubbers.map((scrubber) => ( + + ))} + + ); +} diff --git a/tgui/packages/tgui/interfaces/AirAlarm/screens/Thresholds.tsx b/tgui/packages/tgui/interfaces/AirAlarm/screens/Thresholds.tsx new file mode 100644 index 00000000000..8d4eb2248ab --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirAlarm/screens/Thresholds.tsx @@ -0,0 +1,142 @@ +import { useBackend } from 'tgui/backend'; +import { Button, Table } from 'tgui-core/components'; + +import { AirAlarmData } from '../types'; +import { useAlarmModal } from '../useModal'; + +export function AirAlarmControlThresholds(props) { + const { act, data } = useBackend(); + const [activeModal, setActiveModal] = useAlarmModal(); + const { tlvSettings, thresholdTypeMap } = data; + + return ( + + + Threshold + + Danger Below + + + Warning Below + + + Warning Above + + + Danger Above + + Actions + + {tlvSettings.map((tlv) => ( + + {tlv.name} + + + + + + + + + + + + + + <> +
+ ); +} diff --git a/tgui/packages/tgui/interfaces/AirAlarm/screens/Vents.tsx b/tgui/packages/tgui/interfaces/AirAlarm/screens/Vents.tsx new file mode 100644 index 00000000000..f4b289cfe4d --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirAlarm/screens/Vents.tsx @@ -0,0 +1,26 @@ +import { useBackend } from 'tgui/backend'; +import { NoticeBox, VirtualList } from 'tgui-core/components'; + +import { Vent } from '../../common/AtmosControls'; +import { AirAlarmData } from '../types'; + +export function AirAlarmControlVents(props) { + const { data } = useBackend(); + const { vents } = data; + + if (!vents || vents.length === 0) { + return ( + + Nothing to show + + ); + } + + return ( + + {vents.map((vent) => ( + + ))} + + ); +} diff --git a/tgui/packages/tgui/interfaces/AirAlarm/types.ts b/tgui/packages/tgui/interfaces/AirAlarm/types.ts new file mode 100644 index 00000000000..e8efeba00f7 --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirAlarm/types.ts @@ -0,0 +1,67 @@ +import { BooleanLike } from 'tgui-core/react'; + +import { ScrubberProps } from '../common/AtmosControls'; +import { VentProps } from '../common/AtmosControls'; +import { AIR_ALARM_ROUTES } from './AlarmControl'; + +type AlarmStatus = 0 | 1 | 2; + +type EnvironmentData = { + danger: AlarmStatus; + name: string; + value: string; // preformatted in backend, shorter code that way. +}; + +type Mode = { + danger: BooleanLike; + desc: string; + name: string; + path: string; +}; + +type TLVSettings = { + hazard_max: number; + hazard_min: number; + id: string; + name: string; + unit: string; + warning_max: number; + warning_min: number; +}; + +export type AirAlarmData = { + allowLinkChange: BooleanLike; + atmosAlarm: BooleanLike; // fix this + dangerLevel: AlarmStatus; + emagged: BooleanLike; + envData: EnvironmentData[]; + faultLocation: string; + faultStatus: AlarmStatus; + filteringPath: string; + fireAlarm: BooleanLike; + locked: BooleanLike; + modes: Mode[]; + panicSiphonPath: string; + scrubbers: ScrubberProps[]; + selectedModePath: string; + sensor: BooleanLike; + siliconUser: BooleanLike; + thresholdTypeMap: Record; + tlvSettings: TLVSettings[]; + vents: VentProps[]; +}; + +export type AlarmScreen = keyof typeof AIR_ALARM_ROUTES; + +export type EditingModalProps = { + finish: () => void; + id: string; + name: string; + oldValue: number; + type: number; + typeName: string; + typeVar: string; + unit: string; +}; + +export type ActiveModal = Omit | undefined; diff --git a/tgui/packages/tgui/interfaces/AirAlarm/useModal.ts b/tgui/packages/tgui/interfaces/AirAlarm/useModal.ts new file mode 100644 index 00000000000..7f8d3bedc65 --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirAlarm/useModal.ts @@ -0,0 +1,19 @@ +import { createContext, Dispatch, SetStateAction, useContext } from 'react'; + +import { ActiveModal } from './types'; + +type ModalContextType = [ActiveModal, Dispatch>]; + +export const ModalContext = createContext([ + undefined, + () => {}, +]); + +export function useAlarmModal() { + const context = useContext(ModalContext); + if (!context) { + throw new Error('useAlarmModal must be used within a ModalProvider'); + } + + return context; +} diff --git a/tgui/packages/tgui/interfaces/BigManipulator.tsx b/tgui/packages/tgui/interfaces/BigManipulator.tsx index b4e4da145a4..e0170a86709 100644 --- a/tgui/packages/tgui/interfaces/BigManipulator.tsx +++ b/tgui/packages/tgui/interfaces/BigManipulator.tsx @@ -1,4 +1,11 @@ -import { Button, Section, Stack, Table } from 'tgui-core/components'; +import { + Box, + Button, + Section, + Slider, + Stack, + Table, +} from 'tgui-core/components'; import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; @@ -6,13 +13,17 @@ import { Window } from '../layouts'; type ManipulatorData = { active: BooleanLike; - drop_after_use: BooleanLike; + interaction_delay: number; + worker_interaction: string; highest_priority: BooleanLike; - manipulate_mode: string; + interaction_mode: string; settings_list: PrioritySettings[]; throw_range: number; item_as_filter: string; selected_type: string; + delay_step: number; + min_delay: number; + max_delay: number; }; type PrioritySettings = { @@ -20,99 +31,227 @@ type PrioritySettings = { priority_width: number; }; -export const BigManipulator = (props) => { +const MasterControls = () => { + const { act, data } = useBackend(); + const { delay_step, interaction_delay, min_delay, max_delay } = data; + return ( + + Delay: + + {' '} + + + + - ); - })} - {supports_custom_color && ( - - )} - -
- - {data.decal_list.map((decal) => { - const nondirectional = data.nondirectional_decals.includes( - decal.decal, - ); - - return nondirectional ? ( - // Tallll button for nondirectional - - ) : ( - // 4 buttons for directional - + +
+ {color_list.map((color) => { + return ( + + ); + })} + {supports_custom_color && ( + + )} +
+
+ +
+ + {decal_list.map((decal) => { + const nondirectional = data.nondirectional_decals.includes( + decal.decal, + ); - return ( - - ); - })} - - ); - })} - -
+ return nondirectional ? ( + // Tallll button for nondirectional + + ) : ( + // 4 buttons for directional + + {dir_list.map((dir) => { + const selected = + decal.decal === current_decal && + dir.dir === current_dir; + + return ( + + ); + })} + + ); + })} +
+
+
+
); diff --git a/tgui/packages/tgui/interfaces/ExperimentConfigure.jsx b/tgui/packages/tgui/interfaces/ExperimentConfigure.tsx similarity index 53% rename from tgui/packages/tgui/interfaces/ExperimentConfigure.jsx rename to tgui/packages/tgui/interfaces/ExperimentConfigure.tsx index 8b26ec78b39..beddb1e1918 100644 --- a/tgui/packages/tgui/interfaces/ExperimentConfigure.jsx +++ b/tgui/packages/tgui/interfaces/ExperimentConfigure.tsx @@ -1,11 +1,10 @@ -import { sortBy } from 'common/collections'; import { Box, Button, - Flex, Icon, LabeledList, Section, + Stack, Table, Tooltip, } from 'tgui-core/components'; @@ -13,7 +12,34 @@ import { import { useBackend } from '../backend'; import { Window } from '../layouts'; -const ExperimentStages = (props) => { +type Techweb = { + all_servers: string[]; + ref: string; + selected: number; + web_id: string; + web_org: string; +}; + +type ExperimentData = { + description: string; + name: string; + performance_hint: string; + progress: Progress[]; + ref: string; + selected: number; + tag: string; +}; + +type Progress = [string, string, number, number]; + +type Data = { + always_active: boolean; + experiments: ExperimentData[]; + has_start_callback: boolean; + techwebs: Techweb[]; +}; + +function ExperimentStages(props) { return ( {props.children.map((stage, idx) => ( @@ -21,9 +47,9 @@ const ExperimentStages = (props) => { ))}
); -}; +} -const ExperimentStageRow = (props) => { +function ExperimentStageRow(props) { const [type, description, value, altValue] = props; // Determine completion based on type of stage @@ -61,35 +87,36 @@ const ExperimentStageRow = (props) => { ); -}; +} -export const TechwebServer = (props) => { - const { act, data } = useBackend(); +function TechwebServer(props) { + const { act } = useBackend(); const { techwebs } = props; return techwebs.map((server, index) => ( - - + {server.web_id} / {server.web_org} - - + + + + Connectivity to this web is maintained by the following servers... @@ -102,87 +129,10 @@ export const TechwebServer = (props) => { )); -}; +} -export const ExperimentConfigure = (props) => { - const { act, data } = useBackend(); - const { always_active, has_start_callback } = data; - let techwebs = data.techwebs ?? []; - - const experiments = sortBy(data.experiments ?? [], (exp) => exp.name); - - // Group servers together by web - let webs = new Map(); - techwebs.forEach((x) => { - if (x.web_id !== null) { - if (!webs.has(x.web_id)) { - webs.set(x.web_id, []); - } - webs.get(x.web_id).push(x); - } - }); - - return ( - - - - -
- - {webs.size > 0 - ? 'Please select a techweb to connect to...' - : 'Found no servers connected to a techweb!'} - - {webs.size > 0 && - Array.from(webs, ([techweb, techwebs]) => ( - - ))} -
-
- - {techwebs.some((e) => e.selected) && ( -
- - {(experiments.length && - always_active && - 'This device is configured to attempt to perform all available' + - ' experiments, so no further configuration is necessary.') || - (experiments.length && - 'Select one of the following experiments...') || - 'No experiments found on this web'} - - - {experiments.map((exp, i) => { - return ; - })} - -
- )} -
- {!!has_start_callback && ( - - - - )} -
-
-
- ); -}; - -export const Experiment = (props) => { - const { act, data } = useBackend(); +export function Experiment(props) { + const { act } = useBackend(); const { exp } = props; const { name, description, tag, selected, progress, performance_hint, ref } = exp; @@ -199,24 +149,100 @@ export const Experiment = (props) => { backgroundColor={selected ? 'good' : '#40628a'} className="ExperimentConfigure__ExperimentName" > - - {name} - - + + {name} + +
{tag} - +
- - - +
+ + - +
{description} {props.children} {progress} - +
); -}; +} + +export function ExperimentConfigure(props) { + const { act, data } = useBackend(); + const { always_active, has_start_callback } = data; + + let techwebs = data.techwebs ?? []; + + const experiments = data.experiments.sort((a, b) => + a.name.localeCompare(b.name), + ); + + // Group servers together by web + let webs = new Map(); + for (const x of techwebs) { + if (x.web_id !== null) { + if (!webs.has(x.web_id)) { + webs.set(x.web_id, []); + } + webs.get(x.web_id).push(x); + } + } + + let textContent = ''; + if (experiments.length === 0) { + textContent = 'No experiments found on this web'; + } else if (always_active) { + textContent = + 'This device is configured to attempt to perform all available experiments, so no further configuration is necessary.'; + } else { + textContent = 'Select one of the following experiments...'; + } + + return ( + + +
+ + {webs.size > 0 + ? 'Please select a techweb to connect to...' + : 'Found no servers connected to a techweb!'} + + {webs.size > 0 && + Array.from(webs, ([techweb, techwebs]) => ( + + ))} +
+ + {techwebs.some((e) => e.selected) && ( +
+ + {textContent} + + {experiments.map((exp, i) => ( + + ))} +
+ )} + + {!!has_start_callback && ( + + )} +
+
+ ); +} diff --git a/tgui/packages/tgui/interfaces/FishAnalyzer.tsx b/tgui/packages/tgui/interfaces/FishAnalyzer.tsx index 1de90f6a64f..2541fa44a29 100644 --- a/tgui/packages/tgui/interfaces/FishAnalyzer.tsx +++ b/tgui/packages/tgui/interfaces/FishAnalyzer.tsx @@ -183,7 +183,7 @@ const FishItem = (props) => { tooltip={ - Inheritance: {trait.trait_inherit} + Inheritance: {trait.trait_inherit}% {trait.trait_desc} diff --git a/tgui/packages/tgui/interfaces/IntegratedCircuit/index.jsx b/tgui/packages/tgui/interfaces/IntegratedCircuit/index.jsx index 252aa5ab4eb..b23672b0e90 100644 --- a/tgui/packages/tgui/interfaces/IntegratedCircuit/index.jsx +++ b/tgui/packages/tgui/interfaces/IntegratedCircuit/index.jsx @@ -457,72 +457,61 @@ export class IntegratedCircuit extends Component { width={1200} height={800} buttons={ - - - - - act('set_display_name', { display_name: value }) - } - /> - - + + + + act('set_display_name', { display_name: value }) + } + /> + + + + {removable_media.map((device) => ( diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/QuirksPage.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/QuirksPage.tsx index 68d2308b10e..566d78b86c3 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/QuirksPage.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/QuirksPage.tsx @@ -67,20 +67,20 @@ function QuirkList(props: QuirkProps & QuirkListProps) { } = props; return ( - // Stack is not used here for a variety of IE flex bugs - + {quirks.map(([quirkKey, quirk]) => ( - + + + ))} - + ); } @@ -418,7 +418,7 @@ export function QuirksPage(props) { } return ( - + @@ -452,7 +452,7 @@ export function QuirksPage(props) { onInput={(text, value) => setSearchQuery(value)} /> - + { @@ -487,7 +487,7 @@ export function QuirksPage(props) { - + @@ -512,8 +512,8 @@ export function QuirksPage(props) { Current Quirks -   {/* Filler to better align the menu*/} - + {/* Filler to better align the menu*/} + { diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/index.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/index.tsx index 98c04b59188..22037bf4002 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/index.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/index.tsx @@ -233,7 +233,7 @@ export function CharacterPreferenceWindow(props) { - + {pageContents} diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/index.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/index.tsx index 772fdd647db..be5a2acf5d5 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/index.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/index.tsx @@ -442,16 +442,18 @@ function LoadoutPreviewSection() {
act('toggle_job_clothes')} - // > - // Job Clothes - // - // } + /* + title="Preview" + buttons={ + act('toggle_job_clothes')} + > + Job Clothes + + } + */ // BUBBER EDIT REMOVAL END - Better loadout pref > diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/names.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/names.tsx index 86988ff7fd3..c41db5e9dd9 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/names.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/names.tsx @@ -67,12 +67,7 @@ export function MultiNameInput(props: MultiNameProps) { } return ( - +
= { - name: 'Multi-Z Detail', + name: 'Multi-Z Depth', category: 'GAMEPLAY', - description: 'How detailed multi-z is. Lower this to improve performance', + description: + 'How many Multi-Z levels are rendered before they start getting culled. Decrease this to improve performance in case of lag on multi-z maps.', component: createDropdownInput({ - [-1]: 'Standard', + [-1]: 'No Culling', 2: 'High', 1: 'Medium', 0: 'Low', diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/tgui.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/tgui.tsx index 9e63f7a038b..8b358cd1ed4 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/tgui.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/tgui.tsx @@ -1,5 +1,4 @@ -import { CheckboxInput, Feature, FeatureToggle } from '../base'; -import { FeatureDropdownInput } from '../dropdowns'; +import { CheckboxInput, FeatureToggle } from '../base'; export const tgui_fancy: FeatureToggle = { name: 'Enable fancy TGUI', @@ -29,14 +28,6 @@ export const tgui_input_swapped: FeatureToggle = { component: CheckboxInput, }; -export const tgui_layout: Feature = { - name: 'Default TGUI Layout', - category: 'UI', - description: - 'Applies the selected layout type to all interfaces where it possible. Like on Smartfridge.', - component: FeatureDropdownInput, -}; - export const tgui_lock: FeatureToggle = { name: 'Lock TGUI to main monitor', category: 'UI', diff --git a/tgui/packages/tgui/interfaces/SmartVend.tsx b/tgui/packages/tgui/interfaces/SmartVend.tsx index 4e2e2090bef..698686bb729 100644 --- a/tgui/packages/tgui/interfaces/SmartVend.tsx +++ b/tgui/packages/tgui/interfaces/SmartVend.tsx @@ -28,19 +28,12 @@ type Data = { name: string; isdryer: BooleanLike; drying: BooleanLike; - default_list_view: BooleanLike; }; export const SmartVend = (props) => { const { act, data } = useBackend(); const [searchText, setSearchText] = useState(''); - const [displayMode, setDisplayMode] = useState( - getLayoutState() === LAYOUT.Default - ? data.default_list_view - ? LAYOUT.List - : LAYOUT.Grid - : getLayoutState(), - ); + const [displayMode, setDisplayMode] = useState(getLayoutState()); const search = createSearch(searchText, (item: Item) => item.name); const contents = searchText.length > 0 diff --git a/tgui/packages/tgui/interfaces/Techweb/Overview.tsx b/tgui/packages/tgui/interfaces/Techweb/Overview.tsx index 4feaeb4509f..9fbae330360 100644 --- a/tgui/packages/tgui/interfaces/Techweb/Overview.tsx +++ b/tgui/packages/tgui/interfaces/Techweb/Overview.tsx @@ -1,6 +1,6 @@ import { sortBy } from 'common/collections'; import { useState } from 'react'; -import { Flex, Input, Tabs, VirtualList } from 'tgui-core/components'; +import { Flex, Input, Section, Tabs, VirtualList } from 'tgui-core/components'; import { useRemappedBackend } from './helpers'; import { TechNode } from './nodes/TechNode'; @@ -86,11 +86,13 @@ export function TechwebOverview(props) { - - {displayedNodes.map((n) => ( - - ))} - +
+ + {displayedNodes.map((n) => ( + + ))} + +
); diff --git a/tgui/packages/tgui/interfaces/common/LayoutToggle.tsx b/tgui/packages/tgui/interfaces/common/LayoutToggle.tsx index f98b56fe1ed..7c16f5d2f8d 100644 --- a/tgui/packages/tgui/interfaces/common/LayoutToggle.tsx +++ b/tgui/packages/tgui/interfaces/common/LayoutToggle.tsx @@ -10,16 +10,12 @@ type Props = { }; export enum LAYOUT { - Default = 'default', Grid = 'grid', List = 'list', } export function getLayoutState(defaultState?: LAYOUT) { const { config } = useBackend(); - if (config.interface.layout === LAYOUT.Default) { - return defaultState || LAYOUT.Default; - } return config.interface.layout; } @@ -29,22 +25,24 @@ export function getLayoutState(defaultState?: LAYOUT) { */ export function LayoutToggle(props: Props) { const { setState, state } = props; + const { act } = useBackend(); const handleClick = () => { const newState = state === LAYOUT.Grid ? LAYOUT.List : LAYOUT.Grid; setState(newState); + act('change_ui_state', { + new_state: newState, + }); }; - if (getLayoutState() === LAYOUT.Default) { - return ( - -
+ ); +} diff --git a/tgui/packages/tgui/layouts/Window.tsx b/tgui/packages/tgui/layouts/Window.tsx index b9e3e35bf17..fc5b5fe2410 100644 --- a/tgui/packages/tgui/layouts/Window.tsx +++ b/tgui/packages/tgui/layouts/Window.tsx @@ -12,14 +12,13 @@ import { useLayoutEffect, useState, } from 'react'; -import { Box, Icon } from 'tgui-core/components'; -import { UI_DISABLED, UI_INTERACTIVE, UI_UPDATE } from 'tgui-core/constants'; -import { classes } from 'tgui-core/react'; -import { decodeHtmlEntities, toTitleCase } from 'tgui-core/string'; +import { Box } from 'tgui-core/components'; +import { UI_DISABLED, UI_INTERACTIVE } from 'tgui-core/constants'; +import { BooleanLike, classes } from 'tgui-core/react'; +import { decodeHtmlEntities } from 'tgui-core/string'; import { backendSuspendStart, globalStore, useBackend } from '../backend'; import { useDebug } from '../debug'; -import { toggleKitchenSink } from '../debug/actions'; import { dragStartHandler, recallWindowGeometry, @@ -28,14 +27,14 @@ import { } from '../drag'; import { createLogger } from '../logging'; import { Layout } from './Layout'; +import { TitleBar } from './TitleBar'; const logger = createLogger('Window'); - const DEFAULT_SIZE: [number, number] = [400, 600]; type Props = Partial<{ buttons: ReactNode; - canClose: boolean; + canClose: BooleanLike; height: number; theme: string; title: string; @@ -113,7 +112,6 @@ export const Window = (props: Props) => { return suspended ? null : ( { }; Window.Content = WindowContent; - -const statusToColor = (status) => { - switch (status) { - case UI_INTERACTIVE: - return 'good'; - case UI_UPDATE: - return 'average'; - case UI_DISABLED: - default: - return 'bad'; - } -}; - -type TitleBarProps = Partial<{ - canClose: boolean; - className: string; - fancy: boolean; - onClose: (e) => void; - onDragStart: (e) => void; - status: number; - title: string; -}> & - PropsWithChildren; - -const TitleBar = (props: TitleBarProps) => { - const { - className, - title, - status, - canClose, - fancy, - onDragStart, - onClose, - children, - } = props; - const dispatch = globalStore.dispatch; - - const finalTitle = - (typeof title === 'string' && - title === title.toLowerCase() && - toTitleCase(title)) || - title; - - return ( -
- {(status === undefined && ( - - )) || ( - - )} -
fancy && onDragStart && onDragStart(e)} - /> -
- {finalTitle} - {!!children &&
{children}
} -
- {process.env.NODE_ENV !== 'production' && ( -
dispatch(toggleKitchenSink())} - > - -
- )} - {Boolean(fancy && canClose) && ( -
- × -
- )} -
- ); -}; diff --git a/tgui/packages/tgui/renderer.ts b/tgui/packages/tgui/renderer.ts index bbdfeffc165..b5dc066edb0 100644 --- a/tgui/packages/tgui/renderer.ts +++ b/tgui/packages/tgui/renderer.ts @@ -11,65 +11,51 @@ let initialRender: string | boolean = true; let suspended = false; // These functions are used purely for profiling. -export const resumeRenderer = () => { +export function resumeRenderer() { initialRender = initialRender || 'resumed'; suspended = false; -}; +} -export const suspendRenderer = () => { +export function suspendRenderer() { suspended = true; -}; - -type CreateRenderer = ( - getVNode?: (...args: T) => ReactNode, -) => (...args: T) => void; +} enum Render { Start = 'render/start', Finish = 'render/finish', } -// prettier-ignore -export const createRenderer: CreateRenderer = (getVNode) => (...args) => { +export function render(component: ReactNode) { perf.mark(Render.Start); // Start rendering if (!reactRoot) { const element = document.getElementById('react-root'); reactRoot = createRoot(element!); } - if (getVNode) { - reactRoot.render(getVNode(...args)); - } - else { - reactRoot.render(args[0] as any); - } + + reactRoot.render(component); + perf.mark(Render.Finish); if (suspended) { return; } + // Report rendering time if (process.env.NODE_ENV !== 'production') { if (initialRender === 'resumed') { - logger.log('rendered in', - perf.measure(Render.Start, Render.Finish)); - } - else if (initialRender) { + logger.log('rendered in', perf.measure(Render.Start, Render.Finish)); + } else if (initialRender) { logger.debug('serving from:', location.href); - logger.debug('bundle entered in', - perf.measure('inception', 'init')); - logger.debug('initialized in', - perf.measure('init', Render.Start)); - logger.log('rendered in', - perf.measure(Render.Start, Render.Finish)); - logger.log('fully loaded in', - perf.measure('inception', Render.Finish)); - } - else { - logger.debug('rendered in', - perf.measure(Render.Start, Render.Finish)); + logger.debug('bundle entered in', perf.measure('inception', 'init')); + logger.debug('initialized in', perf.measure('init', Render.Start)); + logger.log('rendered in', perf.measure(Render.Start, Render.Finish)); + logger.log('fully loaded in', perf.measure('inception', Render.Finish)); + } else { + logger.debug('rendered in', perf.measure(Render.Start, Render.Finish)); } } + if (initialRender) { initialRender = false; } -}; +} diff --git a/tgui/packages/tgui/routes.tsx b/tgui/packages/tgui/routes.tsx index 9a3892a3aa7..2d05e32472f 100644 --- a/tgui/packages/tgui/routes.tsx +++ b/tgui/packages/tgui/routes.tsx @@ -32,16 +32,16 @@ const routingError = }; // Displays an empty Window with scrollable content -const SuspendedWindow = () => { +function SuspendedWindow() { return ( ); -}; +} // Displays a loading screen with a spinning icon -const RefreshingWindow = () => { +function RefreshingWindow() { return ( @@ -49,10 +49,10 @@ const RefreshingWindow = () => { ); -}; +} // Get the component for the current route -export const getRoutedComponent = () => { +export function getRoutedComponent() { const { suspended, config } = useBackend(); const { kitchenSink = false } = useDebug(); @@ -62,6 +62,7 @@ export const getRoutedComponent = () => { if (config?.refreshing) { return RefreshingWindow; } + if (process.env.NODE_ENV !== 'production') { // Show a kitchen sink if (kitchenSink) { @@ -76,6 +77,7 @@ export const getRoutedComponent = () => { (name: string) => `./${name}/index.tsx`, (name: string) => `./${name}/index.jsx`, ]; + let esModule; while (!esModule && interfacePathBuilders.length > 0) { const interfacePathBuilder = interfacePathBuilders.shift()!; @@ -88,12 +90,15 @@ export const getRoutedComponent = () => { } } } + if (!esModule) { return routingError('notFound', name); } + const Component = esModule[name]; if (!Component) { return routingError('missingExport', name); } + return Component; -}; +} diff --git a/tgui/packages/tgui/styles/functions.scss b/tgui/packages/tgui/styles/functions.scss index 403d43c7b4b..5f6bc9bb5f5 100644 --- a/tgui/packages/tgui/styles/functions.scss +++ b/tgui/packages/tgui/styles/functions.scss @@ -26,17 +26,6 @@ // Color // -------------------------------------------------------- -// Increases perceptual color lightness. -@function lighten($color, $percent) { - $scaled: hsl( - color.channel($color, 'hue', $space: hsl), - color.channel($color, 'saturation', $space: hsl), - color.channel($color, 'lightness', $space: hsl) * (1 + num($percent)) - ); - $mixed: color.mix(hsl(0, 0%, 100%), $color, 100% * num($percent)); - @return color.mix($scaled, $mixed, 75%); -} - // Returns the NTSC luminance of `$color` as a float (between 0 and 1). // 1 is pure white, 0 is pure black. @function luminance($color) { diff --git a/tgui/packages/tgui/styles/interfaces/Fishing.scss b/tgui/packages/tgui/styles/interfaces/Fishing.scss deleted file mode 100644 index d65ddf27393..00000000000 --- a/tgui/packages/tgui/styles/interfaces/Fishing.scss +++ /dev/null @@ -1,77 +0,0 @@ -.fishing { - width: 121px; - height: 500px; - -ms-user-select: none; - user-select: none; - min-width: 121px; - min-height: 500px; -} - -.fishing .main { - position: absolute; - width: 50px; - height: 500px; - left: 30px; -} - -.fishing .main .background { - position: relative; - width: 50px; - height: 500px; - border-radius: 10px; - border: 0px black solid; - -ms-interpolation-mode: nearest-neighbor; -} - -.fishing .main .fish { - width: 100%; - position: absolute; - right: 0; - font-size: 3em; - text-align: center; - -ms-interpolation-mode: nearest-neighbor; - color: white; - background-color: rgba(65, 91, 138, 0.5); -} - -.fishing .main .fish *::before { - position: absolute; - top: -5px; - left: 5px; -} - -.fishing .main .bait { - position: absolute; - width: 100%; - top: 0%; - left: 0; - background: hsl(80.8, 37.7%, 27.1%); - border: 0px hsl(80.8, 37.7%, 27.1%); - border-radius: 10px; -} - -.fishing .completion { - position: absolute; - width: 30px; - height: 500px; - left: 95px; - top: 0; -} - -.fishing .completion .background { - position: relative; - width: 100%; - height: 100%; - border-radius: 5px; - border: 2px black solid; - background: rgb(186, 217, 231); - box-shadow: 5px 5px 2px rgba(0, 0, 0, 0.3); -} - -.fishing .completion .bar { - position: absolute; - width: 100%; - background: hsl(80.9, 80.9%, 39%); - bottom: 0; - border-radius: 5px; -} diff --git a/tgui/packages/tgui/styles/interfaces/Mecha.scss b/tgui/packages/tgui/styles/interfaces/Mecha.scss index 30e33d43b4a..f9a0a55c8b7 100644 --- a/tgui/packages/tgui/styles/interfaces/Mecha.scss +++ b/tgui/packages/tgui/styles/interfaces/Mecha.scss @@ -1,3 +1,5 @@ +@use 'sass:color'; + @use '../base.scss'; @use '../colors.scss'; @use '../functions.scss' as *; @@ -37,7 +39,7 @@ $color-danger: hsl(0, 74%, 45%) !default; padding-left: 0 !important; padding-right: 0 !important; &:hover { - background-color: lighten($color-danger, 15%) !important; - border-color: lighten($color-danger, 15%) !important; + background-color: color.adjust($color-danger, $lightness: 15%) !important; + border-color: color.adjust($color-danger, $lightness: 15%) !important; } } diff --git a/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss b/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss index d27311e3f5e..5e23641f68c 100644 --- a/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss +++ b/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss @@ -1,3 +1,5 @@ +@use 'sass:color'; + @use '../base.scss'; @use '../colors.scss'; @use '../functions.scss' as *; @@ -27,8 +29,11 @@ $background-beige: hsl(50, 33%, 84%); background-color: $background-beige; border-color: $background-beige; &:hover { - background-color: lighten($background-beige, 15%) !important; - border-color: lighten($background-beige, 15%) !important; + background-color: color.adjust( + $background-beige, + $lightness: 15% + ) !important; + border-color: color.adjust($background-beige, $lightness: 15%) !important; } } @@ -42,8 +47,8 @@ $background-beige: hsl(50, 33%, 84%); background-color: $color-caution !important; border-color: $color-caution !important; &:hover { - background-color: lighten($color-caution, 15%) !important; - border-color: lighten($color-caution, 15%) !important; + background-color: color.adjust($color-caution, $lightness: 15%) !important; + border-color: color.adjust($color-caution, $lightness: 15%) !important; } } @@ -51,8 +56,8 @@ $background-beige: hsl(50, 33%, 84%); background-color: $color-danger !important; border-color: $color-danger !important; &:hover { - background-color: lighten($color-danger, 15%) !important; - border-color: lighten($color-danger, 15%) !important; + background-color: color.adjust($color-danger, $lightness: 15%) !important; + border-color: color.adjust($color-danger, $lightness: 15%) !important; } } diff --git a/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss b/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss index d5136cc1a64..48598a3a2f7 100644 --- a/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss +++ b/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss @@ -231,8 +231,8 @@ $department_map: ( &__Quirks { &__QuirkList { background-color: colors.$light-grey; - height: calc(90vh - 170px); - min-height: 100%; + width: 100%; + overflow-x: hidden; overflow-y: scroll; &__quirk { diff --git a/tgui/packages/tgui/styles/layouts/NtosHeader.scss b/tgui/packages/tgui/styles/layouts/NtosHeader.scss index 2a429051f56..3c71302b37e 100644 --- a/tgui/packages/tgui/styles/layouts/NtosHeader.scss +++ b/tgui/packages/tgui/styles/layouts/NtosHeader.scss @@ -18,3 +18,31 @@ margin-bottom: -0.5em; vertical-align: middle; } + +.alertIndicator { + font-weight: bold; + right: '0px'; + text-align: 'center'; + vertical-align: 'center'; + font-family: 'Courier New'; +} + +.alertBlink { + color: #ffffff; + animation: alertBlinkAnimation 1s infinite; +} + +@keyframes alertBlinkAnimation { + 0% { + color: #dddddd; + } + 49% { + color: #dddddd; + } + 50% { + color: #333333; + } + 100% { + color: #333333; + } +} diff --git a/tgui/packages/tgui/styles/layouts/TitleBar.scss b/tgui/packages/tgui/styles/layouts/TitleBar.scss index 8fd7239d55b..da5517c0dd9 100644 --- a/tgui/packages/tgui/styles/layouts/TitleBar.scss +++ b/tgui/packages/tgui/styles/layouts/TitleBar.scss @@ -9,103 +9,95 @@ $text-color: hsla(0, 0%, 100%, 0.75) !default; $background-color: hsl(0, 0%, 21%) !default; -$shadow-color-core: hsl(0, 0%, 8.6%) !default; -$shadow-color: hsla(0, 0%, 0%, 0.1) !default; +$shadow-color: hsla(0, 0%, 0%, 0.66) !default; +$shadow-color-core: hsl(0, 0%, 0%, 0.4) !default; .TitleBar { + position: fixed; + display: flex; + align-items: center; + width: 100vw; + height: base.rem(32px); background-color: $background-color; border-bottom: 1px solid $shadow-color-core; - box-shadow: 0 2px 2px $shadow-color; - box-shadow: 0 base.rem(2px) base.rem(2px) $shadow-color; + box-shadow: 0px 0px base.em(6px) base.em(-1px) $shadow-color; + z-index: 101; // More than Dimmer user-select: none; + // Deprecated. Delete after full transition to 516 -ms-user-select: none; -} -.TitleBar__clickable { - color: color.change($text-color, $alpha: 0.5); - background-color: $background-color; - transition: - color 250ms ease-out, - background-color 250ms ease-out; + &__dragZone { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + } - &:hover { - color: rgba(255, 255, 255, 1); - background-color: hsl(0, 100%, 40%); + &__statusIcon { + text-align: center; + font-size: base.rem(20px); + transition: color 0.5s; + } + + &__title { + pointer-events: none; + display: inline-block; + flex: 1; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + color: $text-color; + font-size: base.rem(14px); + } + + &__buttons { + overflow: hidden; + white-space: nowrap; + pointer-events: all; + display: inline-block; + margin: 0 base.rem(9px); + z-index: 102; + } + + &__KitchenSink { + width: base.rem(21px); + min-width: base.rem(21px); + max-width: base.rem(21px); + background-color: color.adjust(colors.$good, $lightness: -10%, $space: hsl); + color: hsl(120, 100%, 100%); + text-align: center; + border-radius: 0; + + &:hover { + background-color: colors.$good; + } + } + + &__close { + cursor: pointer; + pointer-events: all; + align-content: center; + text-align: center; + font-size: base.rem(16px); + height: 100%; + color: color.change($text-color, $alpha: 0.5); + z-index: 102; transition: - color 0ms, - background-color 0ms; + background-color 0.2s, + color 0.2s; + + &:hover { + background-color: hsl(0, 100%, 40%); + color: rgba(255, 255, 255, 1); + transition-duration: 0s; + } + } + + &__statusIcon, + &__close { + width: base.rem(45px); + min-width: base.rem(45px); + max-width: base.rem(45px); } } - -.TitleBar__title { - position: absolute; - display: inline-block; - top: 0; - left: 46px; - left: base.rem(46px); - color: $text-color; - font-size: 14px; - font-size: base.rem(14px); - line-height: 31px; - line-height: base.rem(31px); - white-space: nowrap; - pointer-events: none; -} - -.TitleBar__buttons { - pointer-events: initial; - display: inline-block; - width: 100%; - margin-left: 10px; -} - -.TitleBar__dragZone { - position: absolute; - top: 0; - left: 0; - right: 0; - height: 32px; - height: base.rem(32px); -} - -.TitleBar__statusIcon { - position: absolute; - top: 0; - left: 12px; - left: base.rem(12px); - transition: color 0.5s; - font-size: 20px; - font-size: base.rem(20px); - line-height: 32px !important; - line-height: base.rem(32px) !important; -} - -.TitleBar__close { - position: absolute; - top: -1px; - right: 0; - width: 45px; - width: base.rem(45px); - height: 32px; - height: base.rem(32px); - font-size: 20px; - font-size: base.rem(20px); - line-height: 31px; - line-height: base.rem(31px); - text-align: center; -} - -.TitleBar__devBuildIndicator { - position: absolute; - top: 6px; - top: base.rem(6px); - right: 52px; - right: base.rem(52px); - min-width: 20px; - min-width: base.rem(20px); - padding: 2px 4px; - padding: base.rem(2px) base.rem(4px); - background-color: color.adjust(colors.$good, $lightness: -10%, $space: hsl); - color: hsl(120, 100%, 100%); - text-align: center; -} diff --git a/tgui/packages/tgui/styles/layouts/Window.scss b/tgui/packages/tgui/styles/layouts/Window.scss index 1bb1e2acd69..c80970aac52 100644 --- a/tgui/packages/tgui/styles/layouts/Window.scss +++ b/tgui/packages/tgui/styles/layouts/Window.scss @@ -22,16 +22,6 @@ ); } -.Window__titleBar { - position: fixed; - z-index: 1; - top: 0; - left: 0; - width: 100%; - height: 32px; - height: base.rem(32px); -} - // Everything after the title bar .Window__rest { position: fixed; @@ -67,7 +57,7 @@ bottom: 0; left: 0; right: 0; - background-color: rgba(lighten(base.$color-bg, 30%), 0.25); + background-color: rgba(color.adjust(base.$color-bg, $lightness: 30%), 0.25); pointer-events: none; } diff --git a/tgui/packages/tgui/styles/main.scss b/tgui/packages/tgui/styles/main.scss index 839980080f5..9df6f5ceaee 100644 --- a/tgui/packages/tgui/styles/main.scss +++ b/tgui/packages/tgui/styles/main.scss @@ -30,7 +30,6 @@ @include meta.load-css('./interfaces/Emojipedia.scss'); @include meta.load-css('./interfaces/ExperimentConfigure.scss'); @include meta.load-css('./interfaces/Fabricator.scss'); -@include meta.load-css('./interfaces/Fishing.scss'); @include meta.load-css('./interfaces/HellishRunes.scss'); @include meta.load-css('./interfaces/HotKeysHelp.scss'); @include meta.load-css('./interfaces/Hypertorus.scss'); diff --git a/tgui/public/tgui.html b/tgui/public/tgui.html index a8d0777a457..fbb87d9608e 100644 --- a/tgui/public/tgui.html +++ b/tgui/public/tgui.html @@ -1,653 +1,679 @@ - + - - - + + + - - - + + + - - + + -@keyframes FatalError__rainbow { - 0% { color: #ff0; } - 50% { color: #0ff; } - 100% { color: #f0f; } -} + + + + + + + + + -@keyframes FatalError__shadow { - 0% { - left: -2px; - text-shadow: 4px 0 #f0f; - } - 50% { - left: 0px; - text-shadow: 0px 0 #0ff; - } - 100% { - left: 2px; - text-shadow: -4px 0 #ff0; - } -} + +
-@keyframes FatalError__tfmX { - 0% { left: 15px; } - 100% { left: -15px; } -} - -@keyframes FatalError__tfmY { - 100% { top: -15px; } -} - - - - - - - - - - - - - - -
- - -
- - + - - + + diff --git a/tools/Tgstation.PRAnnouncer/README.md b/tools/Tgstation.PRAnnouncer/README.md new file mode 100644 index 00000000000..b3885ec83ff --- /dev/null +++ b/tools/Tgstation.PRAnnouncer/README.md @@ -0,0 +1,79 @@ +# PR Announcer + +This is the service used to relay GitHub PR events to game servers. + +## Building + +You must acquire the .NET 8 SDK or greater for your system. See https://dotnet.microsoft.com/en-us/download + +Run `dotnet publish Tgstation.PRAnnouncer.csproj -o ` an executable should be generated in your output directory. + +## Running + +This is a long running daemon best served under systemd or as a Windows service. + +This service has first class support for running under nix via the [flake.nix](./flake.nix) file which can be directly imported from GitHub. + +See an example of what systemd unit settings should be used in [tgstation-pr-announcer.nix](./tgstation-pr-announcer.nix) under `systemd.services.tgstation-pr-announcer`. + +### Configuration + +Create an `appsettings.Production.json` file in the working directory the daemon will be launched from. + +Here's an example config: +```json +{ + "Settings": { + "CommsKey": "", + "GitHubSecret": "", + "GameServerHealthCheckSeconds": 30, // How often this service will ping game servers + "Servers": [ + { + "Address": "blockmoths.tg.lan", // DNS/IP address of game server + "Port": 3336, // Game server port + "InterestedRepoSlugs": [ + "tgstation/tgstation" // List of GitHub owner/repos that notifications should be delivered for + ] + }, + { + "Address": "tgsatan.tg.lan", + "Port": 1337, + "InterestedRepoSlugs": [ + "tgstation/tgstation" + ] + }, + { + "Address": "tgsatan.tg.lan", + "Port": 1447, + "InterestedRepoSlugs": [ + "tgstation/tgstation" + ] + }, + { + "Address": "tgsatan.tg.lan", + "Port": 5337, + "InterestedRepoSlugs": [ + "tgstation/TerraGov-Marine-Corps" + ] + } + ] + }, + "Kestrel": { + "Endpoints": { + "Http": { + "Url": "http://0.0.0.0:11337" // This is the address the service will be hosted on. + } + } + } +} +``` + +#### Webhook Settings + +Webhook must be delivered to `/api/github/webhooks` in the `application/json` format. + +Only `Pull Request` events need to be listened for. + +### HTTPS + +This service only operates over HTTP. HTTPS must be setup by routing through a reverse proxy of choice. diff --git a/tools/UpdatePaths/Scripts/89549_pills_and_patches_to_applicators.txt b/tools/UpdatePaths/Scripts/89549_pills_and_patches_to_applicators.txt new file mode 100644 index 00000000000..2b7c1ed4845 --- /dev/null +++ b/tools/UpdatePaths/Scripts/89549_pills_and_patches_to_applicators.txt @@ -0,0 +1,2 @@ +/obj/item/reagent_containers/pill/patch/@SUBTYPES : /obj/item/reagent_containers/applicator/patch/@SUBTYPES{@OLD} +/obj/item/reagent_containers/pill/@SUBTYPES : /obj/item/reagent_containers/applicator/pill/@SUBTYPES{@OLD} diff --git a/tools/UpdatePaths/Scripts/89706_dankpocket.txt b/tools/UpdatePaths/Scripts/89706_dankpocket.txt new file mode 100644 index 00000000000..8f663909e72 --- /dev/null +++ b/tools/UpdatePaths/Scripts/89706_dankpocket.txt @@ -0,0 +1,2 @@ +# dankpockets are now a subtype of donkpockets +/obj/item/food/dankpocket : /obj/item/food/donkpocket/dank{@OLD} diff --git a/tools/UpdatePaths/Scripts/89993_tufsandmobs_to_mobsandturfs.txt b/tools/UpdatePaths/Scripts/89993_tufsandmobs_to_mobsandturfs.txt new file mode 100644 index 00000000000..39ffe14ca1a --- /dev/null +++ b/tools/UpdatePaths/Scripts/89993_tufsandmobs_to_mobsandturfs.txt @@ -0,0 +1,3 @@ +#comment This repaths AOE Offensive Mining modkit from being a child of the turf aoe mining kit to the mob aoe mining kit + +/obj/item/borg/upgrade/modkit/aoe/turfs/andmobs : /obj/item/borg/upgrade/modkit/aoe/mobs/andturfs{@OLD} diff --git a/tools/UpdatePaths/Scripts/90006_uncapitalize_airless.txt b/tools/UpdatePaths/Scripts/90006_uncapitalize_airless.txt new file mode 100644 index 00000000000..c31872d94d7 --- /dev/null +++ b/tools/UpdatePaths/Scripts/90006_uncapitalize_airless.txt @@ -0,0 +1,5 @@ +#comment Fixes some turfs' airless subtypes being capitalized. + +/turf/open/floor/grass/Airless : /turf/open/floor/grass/airless{@OLD} +/turf/open/floor/iron/recharge_floor/Airless : /turf/open/floor/iron/recharge_floor/airless{@OLD} +/turf/open/floor/catwalk_floor/titanium/Airless : /turf/open/floor/catwalk_floor/titanium/airless{@OLD} diff --git a/tools/deploy.sh b/tools/deploy.sh index d29738df26c..c13ba0639fd 100755 --- a/tools/deploy.sh +++ b/tools/deploy.sh @@ -11,6 +11,7 @@ fi mkdir -p \ $1/_maps \ + $1/code/datums/greyscale/json_configs \ $1/data/spritesheets \ $1/icons \ $1/sound/runtime \ @@ -25,6 +26,7 @@ fi cp tgstation.dmb tgstation.rsc $1/ cp -r _maps/* $1/_maps/ +cp -r code/datums/greyscale/json_configs/* $1/code/datums/greyscale/json_configs/ cp -r icons/* $1/icons/ cp -r sound/runtime/* $1/sound/runtime/ cp -r strings/* $1/strings/