diff --git a/.github/workflows/auto_changelog.yml b/.github/workflows/auto_changelog.yml index a7280acd15f9..1469a0f983dc 100644 --- a/.github/workflows/auto_changelog.yml +++ b/.github/workflows/auto_changelog.yml @@ -14,7 +14,7 @@ jobs: if: github.event.pull_request.merged == true steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Run auto changelog uses: actions/github-script@v6 with: diff --git a/.github/workflows/autowiki.yml b/.github/workflows/autowiki.yml index 91ab12cdb19f..740b5d7d9eb2 100644 --- a/.github/workflows/autowiki.yml +++ b/.github/workflows/autowiki.yml @@ -20,13 +20,13 @@ jobs: echo "SECRETS_ENABLED=$SECRET_EXISTS" >> $GITHUB_OUTPUT - name: Checkout if: steps.secrets_set.outputs.SECRETS_ENABLED - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Restore BYOND cache if: steps.secrets_set.outputs.SECRETS_ENABLED - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/BYOND - key: ${{ runner.os }}-byond-${{ secrets.CACHE_PURGE_KEY }} + key: ${{ runner.os }}-byond-${{ hashFiles('dependencies.sh') }} - name: Install rust-g if: steps.secrets_set.outputs.SECRETS_ENABLED run: | diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 22abc209c990..46d72c298a2c 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -13,98 +13,125 @@ on: merge_group: branches: - master + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: run_linters: if: ( !contains(github.event.head_commit.message, '[ci skip]') ) name: Run Linters runs-on: ubuntu-22.04 - concurrency: - group: run_linters-${{ github.head_ref || github.run_id }} - cancel-in-progress: true + timeout-minutes: 5 + steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Restore SpacemanDMM cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/SpacemanDMM - key: ${{ runner.os }}-spacemandmm + key: ${{ runner.os }}-spacemandmm-${{ hashFiles('dependencies.sh') }} + restore-keys: | + ${{ runner.os }}-spacemandmm- - name: Restore Yarn cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: tgui/.yarn/cache key: ${{ runner.os }}-yarn-${{ hashFiles('tgui/yarn.lock') }} restore-keys: | - ${{ runner.os }}-build- - ${{ runner.os }}- + ${{ runner.os }}-yarn- + - name: Restore Node cache + uses: actions/cache@v4 + with: + path: ~/.nvm + key: ${{ runner.os }}-node-${{ hashFiles('dependencies.sh') }} + restore-keys: | + ${{ runner.os }}-node- + - 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@v3 + uses: actions/cache@v4 with: path: ~/.cargo - key: ${{ runner.os }}-rust + key: ${{ runner.os }}-rust-${{ hashFiles('tools/ci/ci_dependencies.sh')}} restore-keys: | - ${{ runner.os }}-build- - ${{ runner.os }}- + ${{ runner.os }}-rust- + - name: Install OpenDream + uses: robinraju/release-downloader@v1.9 + 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_node.sh bash tools/ci/install_spaceman_dmm.sh dreamchecker - cargo install ripgrep --features pcre2 + bash tools/ci/install_ripgrep.sh tools/bootstrap/python -c '' - - name: Run Linters + - 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: | - bash tools/ci/check_filedirs.sh tgstation.dme - bash tools/ci/check_changelogs.sh - bash tools/ci/check_grep.sh - bash tools/ci/check_misc.sh 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 - tools/bootstrap/python -m tools.maplint.source --github - tools/build/build --ci lint tgui-test - tools/bootstrap/python -m define_sanity.check - tools/bootstrap/python -m dmi.test - tools/bootstrap/python -m mapmerge2.dmm_test - ~/dreamchecker > ${GITHUB_WORKSPACE}/output-annotations.txt 2>&1 - - name: Annotate Lints - uses: yogstation13/DreamAnnotate@v2 - if: success() || failure() - with: - outputFile: output-annotations.txt - - odlint: - if: ( !contains(github.event.head_commit.message, '[ci skip]') ) - name: "Lint with OpenDream" - runs-on: ubuntu-22.04 - concurrency: - group: odlint-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - steps: - - uses: actions/checkout@v4 - - uses: robinraju/release-downloader@v1.9 - with: - repository: "OpenDreamProject/OpenDream" - tag: "latest" - fileName: "DMCompiler_linux-x64.tar.gz" - extract: true + - name: Check Define Sanity + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: tools/bootstrap/python -m define_sanity.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: | - ./DMCompiler_linux-x64/DMCompiler tgstation.dme --suppress-unimplemented --define=CIBUILDING + tools/bootstrap/python -m mapmerge2.dmm_test + tools/bootstrap/python -m tools.maplint.source + - 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: if: ( !contains(github.event.head_commit.message, '[ci skip]') ) name: Compile Maps needs: [collect_data] - runs-on: ubuntu-20.04 - concurrency: - group: compile_all_maps-${{ github.head_ref || github.run_id }} - cancel-in-progress: true + runs-on: ubuntu-22.04 + timeout-minutes: 5 + steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Restore BYOND cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/BYOND - key: ${{ runner.os }}-byond + key: ${{ runner.os }}-byond-${{ hashFiles('dependencies.sh') }} - name: Compile All Maps run: | bash tools/ci/install_byond.sh @@ -119,16 +146,15 @@ jobs: collect_data: if: ( !contains(github.event.head_commit.message, '[ci skip]') ) name: Collect data for other tasks - runs-on: ubuntu-20.04 + 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 }} - concurrency: - group: find_all_maps-${{ github.head_ref || github.run_id }} - cancel-in-progress: true + steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Find Maps id: map_finder run: | @@ -151,29 +177,26 @@ jobs: if: ( !contains(github.event.head_commit.message, '[ci skip]') ) name: Integration Tests needs: [collect_data] + strategy: fail-fast: false matrix: map: ${{ fromJSON(needs.collect_data.outputs.maps).paths }} - concurrency: - group: run_all_tests-${{ github.head_ref || github.run_id }}-${{ matrix.map }} - cancel-in-progress: true + uses: ./.github/workflows/run_integration_tests.yml with: map: ${{ matrix.map }} max_required_byond_client: ${{needs.collect_data.outputs.max_required_byond_client}} run_alternate_tests: - if: "!contains(github.event.head_commit.message, '[ci skip]') && needs.find_all_maps.outputs.alternate_tests != '[]'" + if: ( !contains(github.event.head_commit.message, '[ci skip]') && needs.collect_data.outputs.alternate_tests != '[]' ) name: Alternate Tests needs: [collect_data] strategy: fail-fast: false matrix: setup: ${{ fromJSON(needs.collect_data.outputs.alternate_tests) }} - concurrency: - group: run_all_tests-${{ github.head_ref || github.run_id }}-${{ matrix.setup.major }}.${{ matrix.setup.minor }}-${{ matrix.setup.map }} - cancel-in-progress: true + uses: ./.github/workflows/run_integration_tests.yml with: map: ${{ matrix.setup.map }} @@ -182,23 +205,27 @@ jobs: max_required_byond_client: ${{needs.collect_data.outputs.max_required_byond_client}} check_alternate_tests: - if: "!contains(github.event.head_commit.message, '[ci skip]') && needs.find_all_maps.outputs.alternate_tests != '[]'" + if: ( !contains(github.event.head_commit.message, '[ci skip]') && needs.collect_data.outputs.alternate_tests != '[]' ) name: Check Alternate Tests needs: [run_alternate_tests] - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 + timeout-minutes: 5 steps: - run: echo Alternate tests passed. compare_screenshots: - if: "!contains(github.event.head_commit.message, '[ci skip]') && (success() || failure())" + if: ( !contains(github.event.head_commit.message, '[ci skip]') && (success() || failure()) ) needs: [run_all_tests, run_alternate_tests] name: Compare Screenshot Tests - runs-on: ubuntu-20.04 + timeout-minutes: 15 + runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v3 + - 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@v3 + uses: actions/download-artifact@v4 with: path: artifacts - name: ls -R @@ -219,7 +246,7 @@ jobs: echo ${{ github.event.pull_request.number }} > artifacts/screenshot_comparisons/pull_request_number.txt - name: Upload bad screenshots if: failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: bad-screenshots path: artifacts/screenshot_comparisons @@ -229,19 +256,17 @@ jobs: name: Windows Build needs: [collect_data] runs-on: windows-latest - concurrency: - group: test_windows-${{ github.head_ref || github.run_id }} - cancel-in-progress: true + timeout-minutes: 5 + steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Restore Yarn cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: tgui/.yarn/cache key: ${{ runner.os }}-yarn-${{ hashFiles('tgui/yarn.lock') }} restore-keys: | - ${{ runner.os }}-build- - ${{ runner.os }}- + ${{ runner.os }}-yarn- - name: Compile run: pwsh tools/ci/build.ps1 env: diff --git a/.github/workflows/codeowner_reviews.yml b/.github/workflows/codeowner_reviews.yml index ed06f9b8a99d..e6cfb9802790 100644 --- a/.github/workflows/codeowner_reviews.yml +++ b/.github/workflows/codeowner_reviews.yml @@ -9,10 +9,11 @@ jobs: assign-users: runs-on: ubuntu-latest + timeout-minutes: 5 steps: # Checks-out your repository under $GITHUB_WORKSPACE, so the job can access it - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 #Parse the Codeowner file on non draft PRs - name: CodeOwnersParser diff --git a/.github/workflows/compile_changelogs.yml b/.github/workflows/compile_changelogs.yml index fefd9de30ea2..dd60b07b86bd 100644 --- a/.github/workflows/compile_changelogs.yml +++ b/.github/workflows/compile_changelogs.yml @@ -31,7 +31,7 @@ jobs: sudo apt-get install dos2unix - name: "Checkout" if: steps.value_holder.outputs.ACTIONS_ENABLED - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 25 persist-credentials: false diff --git a/.github/workflows/docker_publish.yml b/.github/workflows/docker_publish.yml index 529a706ff6da..6daec1ded105 100644 --- a/.github/workflows/docker_publish.yml +++ b/.github/workflows/docker_publish.yml @@ -5,10 +5,10 @@ on: workflow_dispatch: jobs: publish: - if: "!contains(github.event.head_commit.message, '[ci skip]')" + if: ( !contains(github.event.head_commit.message, '[ci skip]') ) runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build and Publish Docker Image to Registry uses: elgohr/Publish-Docker-Github-Action@v5 diff --git a/.github/workflows/generate_documentation.yml b/.github/workflows/generate_documentation.yml index 5f13472ca524..0dc79584b9e4 100644 --- a/.github/workflows/generate_documentation.yml +++ b/.github/workflows/generate_documentation.yml @@ -9,13 +9,13 @@ jobs: generate_documentation: permissions: contents: write # for JamesIves/github-pages-deploy-action to push changes in repo - if: "!contains(github.event.head_commit.message, '[ci skip]')" + if: ( !contains(github.event.head_commit.message, '[ci skip]') ) runs-on: ubuntu-20.04 concurrency: gen-docs steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/SpacemanDMM key: ${{ runner.os }}-spacemandmm-${{ secrets.CACHE_PURGE_KEY }} diff --git a/.github/workflows/pr_emoji.yml b/.github/workflows/pr_emoji.yml index 219b319298ad..a9d35d2456fb 100644 --- a/.github/workflows/pr_emoji.yml +++ b/.github/workflows/pr_emoji.yml @@ -10,7 +10,7 @@ jobs: title_and_changelog: runs-on: ubuntu-20.04 steps: - - uses: Wayland-Smithy/emoji-stripper-action@8f4c2fe9748bb9b02f105be4e72a1a42b0f34d84 + - uses: Wayland-Smithy/emoji-stripper-action@de0c1d158edee50700583d6454aa5f5117337599 with: repo-token: ${{ secrets.GITHUB_TOKEN }} title: true diff --git a/.github/workflows/remove_guide_comments.yml b/.github/workflows/remove_guide_comments.yml index d5d405909e21..e3a4ac3feda0 100644 --- a/.github/workflows/remove_guide_comments.yml +++ b/.github/workflows/remove_guide_comments.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Remove guide comments uses: actions/github-script@v6 with: diff --git a/.github/workflows/rerun_flaky_tests.yml b/.github/workflows/rerun_flaky_tests.yml index 24c3ec95197d..7f498de14430 100644 --- a/.github/workflows/rerun_flaky_tests.yml +++ b/.github/workflows/rerun_flaky_tests.yml @@ -10,7 +10,7 @@ jobs: if: ${{ github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.run_attempt == 1 }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Rerun flaky tests uses: actions/github-script@v6 with: @@ -22,7 +22,7 @@ jobs: if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.run_attempt == 2 }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Report flaky tests uses: actions/github-script@v6 with: diff --git a/.github/workflows/run_integration_tests.yml b/.github/workflows/run_integration_tests.yml index 49978ca25a3f..d239ef3547b6 100644 --- a/.github/workflows/run_integration_tests.yml +++ b/.github/workflows/run_integration_tests.yml @@ -16,9 +16,11 @@ on: max_required_byond_client: required: true type: string + jobs: run_integration_tests: runs-on: ubuntu-latest + timeout-minutes: 30 # Monkestation edit: Our CI takes nearly twice as long, so the timeout is twice as long services: mysql: image: mysql:latest @@ -28,12 +30,12 @@ jobs: - 3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Restore BYOND cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/BYOND - key: ${{ runner.os }}-byond-${{ secrets.CACHE_PURGE_KEY }} + key: ${{ runner.os }}-byond-${{ hashFiles('dependencies.sh') }} - name: Setup database run: | sudo systemctl start mysql @@ -64,9 +66,9 @@ jobs: bash tools/ci/run_server.sh ${{ inputs.map }} - name: Upload screenshot tests if: always() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: test_artifacts_${{ inputs.map }} + name: test_artifacts_${{ inputs.map }}_${{ inputs.major }}_${{ inputs.minor }} path: data/screenshots_new/ retention-days: 1 - name: Check client Compatibility diff --git a/.github/workflows/show_screenshot_test_results.yml b/.github/workflows/show_screenshot_test_results.yml index 8e463e46c05f..70eed354d5c6 100644 --- a/.github/workflows/show_screenshot_test_results.yml +++ b/.github/workflows/show_screenshot_test_results.yml @@ -11,7 +11,7 @@ on: - completed jobs: show_screenshot_test_results: - if: "!contains(github.event.head_commit.message, '[ci skip]') && github.event.workflow_run.run_attempt == 1" + if: ( !contains(github.event.head_commit.message, '[ci skip]') && github.event.workflow_run.run_attempt == 1 ) name: Show Screenshot Test Results runs-on: ubuntu-20.04 steps: @@ -25,7 +25,7 @@ jobs: echo "SECRETS_ENABLED=$SECRET_EXISTS" >> $GITHUB_OUTPUT - name: Checkout if: steps.secrets_set.outputs.SECRETS_ENABLED - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Prepare module if: steps.secrets_set.outputs.SECRETS_ENABLED run: | diff --git a/.github/workflows/test_merge_bot.yml b/.github/workflows/test_merge_bot.yml index ebf8928f435d..224ff0707514 100644 --- a/.github/workflows/test_merge_bot.yml +++ b/.github/workflows/test_merge_bot.yml @@ -23,7 +23,7 @@ jobs: echo "GET_TEST_MERGES_URL=$SECRET_EXISTS" >> $GITHUB_OUTPUT - name: Checkout if: steps.secrets_set.outputs.GET_TEST_MERGES_URL - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Prepare module if: steps.secrets_set.outputs.GET_TEST_MERGES_URL run: | diff --git a/.tgs.yml b/.tgs.yml index 76a53577b505..dd18c3b8a257 100644 --- a/.tgs.yml +++ b/.tgs.yml @@ -3,7 +3,7 @@ version: 1 # The BYOND version to use (kept in sync with dependencies.sh by the "TGS Test Suite" CI job) # Must be interpreted as a string, keep quoted -byond: "515.1633" +byond: "515.1637" # Folders to create in "/Configuration/GameStaticFiles/" static_files: # Config directory should be static diff --git a/.vscode/settings.json b/.vscode/settings.json index 6b9aaddb45c2..5477c9a90bf6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,9 @@ { "eslint.nodePath": "./tgui/.yarn/sdks", - "eslint.workingDirectories": ["./tgui"], - "prettier.prettierPath": "./tgui/.yarn/sdks/prettier/index.js", + "eslint.workingDirectories": [ + "./tgui" + ], + "prettier.prettierPath": "./tgui/.yarn/sdks/prettier/index.cjs", "typescript.tsdk": "./tgui/.yarn/sdks/typescript/lib", "typescript.enablePromptUseWorkspaceTsdk": true, "search.exclude": { @@ -13,36 +15,50 @@ }, "files.eol": "\n", "files.insertFinalNewline": true, - "git.branchProtection": ["master"], - "gitlens.advanced.blame.customArguments": ["-w"], + "gitlens.advanced.blame.customArguments": [ + "-w" + ], "tgstationTestExplorer.project.resultsType": "json", "[javascript]": { - "editor.rulers": [80], + "editor.rulers": [ + 80 + ], "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true }, "[javascriptreact]": { - "editor.rulers": [80], + "editor.rulers": [ + 80 + ], "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true }, "[typescript]": { - "editor.rulers": [80], + "editor.rulers": [ + 80 + ], "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true }, "[typescriptreact]": { - "editor.rulers": [80], + "editor.rulers": [ + 80 + ], "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true }, "[scss]": { - "editor.rulers": [80], + "editor.rulers": [ + 80 + ], "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true }, "workbench.editorAssociations": { "*.dmi": "dmiEditor.dmiEditor" }, - "Lua.diagnostics.enable": false -} + "Lua.diagnostics.enable": false, + "git.branchProtection": [ + "master" + ] +} \ No newline at end of file diff --git a/_maps/map_files/Blueshift/Blueshift.dmm b/_maps/map_files/Blueshift/Blueshift.dmm index a3c509373e77..babcd80842a1 100644 --- a/_maps/map_files/Blueshift/Blueshift.dmm +++ b/_maps/map_files/Blueshift/Blueshift.dmm @@ -55,7 +55,7 @@ dir = 1 }, /turf/open/floor/iron/dark/side, -/area/station/security/prison/upper) +/area/station/security/prison) "aaU" = ( /obj/structure/railing/wrestling{ dir = 8 @@ -542,7 +542,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "afL" = ( /obj/structure/reagent_dispensers/wall/peppertank/directional/west, /obj/machinery/light/directional/west, @@ -677,7 +677,7 @@ /obj/effect/turf_decal/bot, /obj/machinery/computer/order_console/bitrunning, /turf/open/floor/iron, -/area/station/security/prison/upper) +/area/station/security/prison) "ahd" = ( /obj/effect/turf_decal/delivery/blue, /obj/structure/cable, @@ -874,15 +874,23 @@ /turf/open/floor/iron, /area/station/security/checkpoint/customs/auxiliary) "aiV" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/machinery/airalarm/directional/east, +/obj/machinery/light/cold/directional/east, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/structure/bed/roller{ - dir = 1 +/obj/structure/rack, +/obj/item/storage/medkit/regular, +/obj/item/clothing/gloves/latex, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/item/reagent_containers/cup/bottle/multiver, +/obj/item/reagent_containers/syringe, +/obj/item/storage/box/bodybags, +/obj/item/storage/medkit/regular, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 8 }, -/turf/open/floor/iron/white, /area/station/security/medical) "ajc" = ( /obj/effect/decal/cleanable/dirt, @@ -1078,7 +1086,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "akw" = ( /obj/structure/chair/sofa/bench/right{ dir = 8; @@ -1470,7 +1478,7 @@ /turf/open/floor/iron/dark/side{ dir = 6 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "aoK" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -1510,7 +1518,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "apa" = ( /obj/machinery/vending/coffee, /obj/structure/cable, @@ -1604,7 +1612,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "aqb" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, @@ -2040,7 +2048,7 @@ /obj/machinery/duct, /obj/effect/turf_decal/trimline/red, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "auS" = ( /obj/structure/table, /obj/item/stack/package_wrap, @@ -2839,7 +2847,7 @@ "aCD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/smooth, -/area/station/security/prison/upper) +/area/station/security/bitden) "aCJ" = ( /obj/item/kirbyplants/random, /turf/open/floor/plating, @@ -2873,7 +2881,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "aCY" = ( /obj/structure/table/wood/fancy, /obj/item/reagent_containers/cup/bowl{ @@ -3084,7 +3092,7 @@ "aFg" = ( /obj/structure/bed/maint, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "aFk" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -3396,7 +3404,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "aIe" = ( /obj/structure/railing/wooden_fencing{ dir = 8 @@ -3434,7 +3442,7 @@ /obj/structure/table, /obj/item/wrench, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "aIH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -4342,7 +4350,7 @@ "aSL" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "aSV" = ( /obj/effect/turf_decal/bot, /obj/structure/closet/emcloset, @@ -4354,7 +4362,7 @@ "aSZ" = ( /obj/item/stack/cable_coil, /turf/open/floor/plating, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "aTe" = ( /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ dir = 8 @@ -4559,7 +4567,7 @@ /turf/open/floor/iron/kitchen{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "aVy" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -4952,7 +4960,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "aZq" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -5128,7 +5136,7 @@ "bba" = ( /obj/structure/closet/crate, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "bbi" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -5412,7 +5420,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "bdu" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, @@ -5893,7 +5901,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "biW" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -6072,7 +6080,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "bkG" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/delivery, @@ -6335,7 +6343,7 @@ name = "Shuttle Bay Blast Door" }, /turf/open/floor/plating, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "bnj" = ( /turf/open/floor/iron/dark/side{ dir = 6 @@ -6510,15 +6518,15 @@ /turf/open/floor/iron, /area/station/science/ordnance) "bop" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 - }, /obj/structure/table, /obj/item/poster/random_official{ pixel_y = 10 }, /obj/item/poster/random_official, /obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/security/mechbay) "bos" = ( @@ -6625,7 +6633,7 @@ /obj/item/radio/intercom/directional/south, /obj/structure/cable, /turf/open/floor/iron/dark/side, -/area/station/security/prison) +/area/station/security/execution/transfer) "boW" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -7085,7 +7093,7 @@ /turf/open/floor/iron/stairs/medium{ dir = 8 }, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "bsR" = ( /obj/structure/railing{ dir = 4 @@ -7291,7 +7299,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "bvs" = ( /obj/structure/table, /obj/item/stack/sheet/iron/five, @@ -7363,6 +7371,23 @@ }, /turf/open/floor/iron/dark/small, /area/station/cargo/miningdock) +"bvP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/red/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + color = "#DE3A3A"; + dir = 5 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 5 + }, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, +/area/station/security/execution/transfer) "bvS" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ @@ -7540,7 +7565,7 @@ cycle_id = "perma-transfer" }, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "bya" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -8431,7 +8456,7 @@ }, /obj/structure/railing, /turf/closed/wall/rust, -/area/station/security/prison/upper) +/area/station/security/bitden) "bHc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9348,7 +9373,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "bPG" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -9537,6 +9562,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/carpet, /area/station/maintenance/rus_gambling) +"bRo" = ( +/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/security/prison/upper) "bRp" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, @@ -9605,6 +9636,7 @@ dir = 4 }, /obj/structure/cable, +/obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/cytology) "bSa" = ( @@ -9648,6 +9680,11 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/service/power_station) +"bSH" = ( +/obj/machinery/vending/wallmed/directional/north, +/obj/structure/table/optable, +/turf/open/floor/iron/dark, +/area/station/security/medical) "bSN" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/wood/parquet, @@ -9887,7 +9924,7 @@ pixel_x = 9 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "bUu" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/curtain/bounty, @@ -9967,11 +10004,12 @@ /turf/open/floor/wood, /area/station/command/meeting_room/council) "bVB" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/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/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/table/reinforced/rglass, +/obj/machinery/computer/records/medical/laptop{ + dir = 1 }, /turf/open/floor/iron/white, /area/station/security/medical) @@ -10262,7 +10300,7 @@ /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/security/execution/transfer) +/area/station/security/prison/upper) "bYx" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -10770,7 +10808,7 @@ /turf/open/floor/iron/dark/side{ dir = 9 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "cdY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -11009,7 +11047,7 @@ "cgu" = ( /obj/effect/turf_decal/box/white/corners, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "cgB" = ( /obj/structure/showcase/cyborg/old{ pixel_y = 20 @@ -11157,7 +11195,7 @@ }, /obj/structure/cable, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "chF" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -11304,7 +11342,7 @@ pixel_y = 3 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "ciT" = ( /obj/structure/cable, /turf/open/floor/iron/dark, @@ -11489,7 +11527,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/structure/sign/departments/medbay/alt/directional/west, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, @@ -11983,7 +12020,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "cpE" = ( /obj/structure/marker_beacon/burgundy, /turf/open/floor/iron/shuttle/evac/airless, @@ -12502,12 +12539,13 @@ /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) "cue" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Security Maintenance" +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron, -/area/station/maintenance/port/fore) +/obj/machinery/duct, +/turf/open/floor/iron/white/corner, +/area/station/security/medical) "cuf" = ( /turf/closed/wall, /area/station/engineering/atmos/office) @@ -12529,7 +12567,7 @@ /turf/open/floor/iron/dark/side{ dir = 9 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "cuk" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/effect/turf_decal/bot, @@ -12978,7 +13016,7 @@ /turf/open/floor/iron/stairs/right{ dir = 8 }, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "cyg" = ( /obj/machinery/door/airlock/external{ space_dir = 4 @@ -13251,10 +13289,13 @@ /turf/open/floor/carpet/royalblack, /area/station/commons/dorms/room8) "cAi" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/white, +/obj/structure/chair/office, +/obj/effect/landmark/start/brig_physician, +/turf/open/floor/iron/white/side, /area/station/security/medical) "cAj" = ( /obj/effect/turf_decal/stripes{ @@ -13881,7 +13922,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "cFK" = ( /obj/effect/turf_decal/stripes{ dir = 1 @@ -14139,7 +14180,7 @@ name = "Shuttle Bay Blast Door" }, /turf/open/floor/plating, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "cHF" = ( /obj/structure/flora/grass/jungle, /obj/structure/flora/bush/grassy, @@ -14601,7 +14642,7 @@ /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) +/area/station/security/execution/transfer) "cLR" = ( /obj/structure/girder, /turf/open/floor/plating, @@ -15011,7 +15052,7 @@ }, /obj/item/crowbar, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "cQg" = ( /obj/effect/turf_decal/stripes{ dir = 6 @@ -16187,7 +16228,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "ddd" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -17279,7 +17320,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "dnF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17323,7 +17364,7 @@ dir = 10 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "dnV" = ( /obj/structure/table/wood, /obj/structure/closet/mini_fridge{ @@ -17391,7 +17432,7 @@ dir = 8 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "doH" = ( /obj/machinery/light/small/broken/directional/east, /obj/structure/cable, @@ -17657,7 +17698,7 @@ /obj/effect/turf_decal/bot, /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "dsm" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/computer/atmos_alert{ @@ -17816,7 +17857,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, -/area/station/security/prison/upper) +/area/station/security/prison) "dtx" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -18014,6 +18055,9 @@ /obj/machinery/light/directional/east, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) +"dwh" = ( +/turf/open/floor/iron, +/area/station/security/prison/upper) "dwi" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -18081,7 +18125,7 @@ /obj/structure/chair/sofa/bench/right, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "dwM" = ( /obj/machinery/power/port_gen/pacman/pre_loaded, /obj/structure/railing{ @@ -18110,7 +18154,7 @@ /turf/open/floor/iron/dark/side{ dir = 9 }, -/area/station/security/prison/upper) +/area/station/security/prison) "dwR" = ( /obj/structure/rack/gunrack, /turf/open/floor/plating, @@ -18323,7 +18367,7 @@ "dzS" = ( /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "dzT" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 @@ -18353,6 +18397,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, /obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/fore) "dAm" = ( @@ -18449,7 +18494,7 @@ name = "Assistant's note" }, /turf/open/floor/wood, -/area/station/security/prison/upper) +/area/station/security/prison) "dBj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18473,7 +18518,7 @@ name = "Lockdown" }, /turf/open/floor/iron/dark, -/area/station/security/prison/upper) +/area/station/security/prison) "dBr" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Cargo Maintenance" @@ -19084,7 +19129,7 @@ "dHq" = ( /obj/structure/cable, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "dHx" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -19931,7 +19976,7 @@ dir = 9 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "dQD" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/door/airlock/captain{ @@ -20276,8 +20321,13 @@ /turf/open/floor/plating, /area/station/maintenance/fore/upper) "dTy" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/dark_blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/security/mechbay) "dTz" = ( @@ -20436,11 +20486,6 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/disposal) -"dUF" = ( -/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) "dUP" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20514,7 +20559,7 @@ /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/stairs/old, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "dVD" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; @@ -21640,11 +21685,6 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"eir" = ( -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/prison/upper) "eit" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -21718,7 +21758,7 @@ "ejd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "eje" = ( /obj/structure/cable, /turf/open/floor/iron/cafeteria, @@ -22182,7 +22222,7 @@ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/security/prison/upper) +/area/station/security/prison) "eoV" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -22624,8 +22664,9 @@ /area/station/command/heads_quarters/blueshield) "etj" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/six, +/obj/structure/reagent_dispensers/plumbed{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/port/fore) "etk" = ( @@ -22714,7 +22755,7 @@ /obj/machinery/newscaster/directional/west, /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "etW" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -23023,12 +23064,21 @@ /obj/structure/decorative/shelf/crates, /obj/machinery/light/directional/south, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "ewr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 +/obj/machinery/light_switch/directional/east, +/obj/machinery/firealarm/directional/east{ + pixel_x = 38 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/structure/closet/secure_closet/brig_physician, +/obj/item/clothing/suit/jacket/straight_jacket, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 8 }, -/turf/open/floor/iron/white, /area/station/security/medical) "ews" = ( /obj/effect/turf_decal/box, @@ -23095,7 +23145,7 @@ id = "crematoriumSec" }, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "ewI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -23409,7 +23459,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/iron, -/area/station/security/prison/upper) +/area/station/security/prison) "ezW" = ( /obj/structure/transit_tube/diagonal{ dir = 4 @@ -23881,7 +23931,7 @@ "eDx" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "eDF" = ( /turf/closed/wall, /area/station/maintenance/abandon_psych) @@ -24067,7 +24117,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /turf/open/floor/wood, -/area/station/security/prison/upper) +/area/station/security/prison) "eFs" = ( /obj/structure/window/spawner/directional/south, /obj/effect/turf_decal/siding/wood/corner, @@ -24425,9 +24475,6 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/fore/upper) -"eIU" = ( -/turf/open/floor/glass/reinforced, -/area/station/security/prison/upper) "eIV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -24619,7 +24666,7 @@ /obj/structure/cable, /obj/machinery/duct, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "eKx" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -24637,7 +24684,7 @@ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "eKU" = ( /turf/closed/wall/r_wall, /area/station/security/prison/visit) @@ -24737,12 +24784,12 @@ pixel_y = 5 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "eLK" = ( /turf/open/floor/iron/stairs/right{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "eLU" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/science/research) @@ -24863,7 +24910,7 @@ /turf/open/floor/iron/dark/side{ dir = 5 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "eMM" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -25210,7 +25257,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, -/area/station/security/prison) +/area/station/security/execution/transfer) "ePO" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -25587,7 +25634,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "eTI" = ( /obj/structure/table, /obj/item/flashlight/lamp, @@ -25602,7 +25649,7 @@ /obj/effect/turf_decal/vg_decals/numbers/two, /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "eTS" = ( /obj/effect/turf_decal/bot_white, /obj/machinery/door/poddoor/shutters/window/preopen{ @@ -25871,7 +25918,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/security/prison) +/area/station/security/execution/transfer) "eWz" = ( /obj/structure/railing{ dir = 8 @@ -25997,7 +26044,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "eXv" = ( /obj/structure/railing{ dir = 8 @@ -26074,6 +26121,7 @@ dir = 8 }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/iron/freezer, /area/station/science/xenobiology) "eYC" = ( @@ -26329,7 +26377,7 @@ "faw" = ( /obj/effect/decal/cleanable/oil/slippery, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "faz" = ( /obj/effect/spawner/random/trash/cigbutt, /obj/effect/decal/cleanable/dirt, @@ -26413,6 +26461,22 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"fbj" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 8 + }, +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/siding/dark_red, +/obj/machinery/duct, +/obj/structure/cable, +/obj/machinery/light/cold/directional/west, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/security/medical) "fbk" = ( /obj/machinery/door/airlock/external{ name = "Arrivals Dock" @@ -26490,7 +26554,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "fbV" = ( /obj/machinery/computer/crew, /turf/open/floor/iron, @@ -26651,12 +26715,12 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "fdu" = ( /turf/open/floor/iron/dark/side{ dir = 6 }, -/area/station/security/prison/upper) +/area/station/security/prison) "fdz" = ( /obj/machinery/door/airlock/freezer{ name = "Medical Freezer" @@ -26806,7 +26870,7 @@ dir = 8 }, /turf/open/floor/iron/stairs, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "feL" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, @@ -26885,7 +26949,7 @@ /turf/open/floor/iron/kitchen{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "ffH" = ( /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/west, @@ -26907,7 +26971,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "fgj" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/bar/opposingcorners{ @@ -27617,7 +27681,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "fnH" = ( /obj/effect/turf_decal/stripes, /obj/structure/cable, @@ -27987,7 +28051,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "fqP" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -28055,7 +28119,7 @@ "fri" = ( /obj/machinery/power/shuttle_engine/heater, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "fro" = ( /obj/effect/turf_decal/delivery, /obj/structure/closet, @@ -28189,7 +28253,7 @@ "ftI" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "ftJ" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -28391,7 +28455,7 @@ /area/station/service/bar/atrium) "fvF" = ( /turf/open/floor/plating, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "fvZ" = ( /obj/structure/chair/sofa/bench/right{ dir = 4; @@ -29386,7 +29450,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "fHR" = ( /obj/item/kirbyplants/random, /obj/structure/cable, @@ -29602,7 +29666,7 @@ }, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "fJT" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29653,7 +29717,7 @@ /turf/open/floor/iron/kitchen{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "fKz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -30050,7 +30114,7 @@ /turf/open/floor/iron/dark/side{ dir = 5 }, -/area/station/security/prison/upper) +/area/station/security/prison) "fOk" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -30225,7 +30289,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "fPo" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -30407,7 +30471,7 @@ /obj/structure/mirror/directional/north, /obj/machinery/light/small/directional/north, /turf/open/floor/carpet/black, -/area/station/security/prison) +/area/station/security/execution/transfer) "fRw" = ( /obj/structure/table, /obj/item/stock_parts/subspace/filter, @@ -31117,7 +31181,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/white, -/area/station/security/prison/upper) +/area/station/security/prison) "fYW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, @@ -31482,6 +31546,11 @@ /obj/structure/lattice/catwalk, /turf/open/space/openspace, /area/space/nearstation) +"gci" = ( +/obj/effect/spawner/random/trash/mess, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "gcn" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 8 @@ -31534,7 +31603,7 @@ /obj/effect/spawner/random/trash/mess, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "gcU" = ( /obj/effect/turf_decal/siding/thinplating_new{ dir = 1 @@ -31720,7 +31789,7 @@ dir = 1 }, /turf/open/floor/iron/dark/side, -/area/station/security/prison/upper) +/area/station/security/prison) "geF" = ( /obj/machinery/door/airlock/research/glass{ name = "Robotics Workshop" @@ -31864,7 +31933,7 @@ /obj/effect/turf_decal/delivery, /obj/machinery/space_heater, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "ggC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -31980,7 +32049,7 @@ dir = 5 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "gib" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32000,7 +32069,7 @@ /obj/effect/turf_decal/bot, /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "gir" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/turf_decal/stripes/red/corner, @@ -32175,7 +32244,7 @@ dir = 1 }, /turf/open/floor/iron/dark/side, -/area/station/security/prison/upper) +/area/station/security/prison) "gkl" = ( /obj/structure/grille, /obj/structure/window/spawner/directional/south, @@ -32310,7 +32379,7 @@ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "glz" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -32346,7 +32415,7 @@ name = "waste bucket" }, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "glK" = ( /turf/open/floor/carpet/black, /area/station/service/barber) @@ -32371,7 +32440,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "glW" = ( /obj/structure/chair{ dir = 4 @@ -32762,9 +32831,6 @@ pixel_x = 6; pixel_y = 16 }, -/obj/item/reagent_containers/cup/beaker/vial, -/obj/item/reagent_containers/cup/beaker/vial, -/obj/item/reagent_containers/cup/beaker/vial, /turf/open/floor/iron/white, /area/station/medical/virology) "gpr" = ( @@ -32995,7 +33061,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "grJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33021,7 +33087,7 @@ "grX" = ( /obj/structure/closet/crate/wooden, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "gsd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -33744,7 +33810,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/white, -/area/station/security/prison/upper) +/area/station/security/prison) "gzF" = ( /obj/structure/railing, /obj/structure/chair/plastic{ @@ -33878,7 +33944,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "gAW" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering/glass{ @@ -33915,7 +33981,7 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "gBd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -34735,11 +34801,11 @@ }, /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "gKk" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "gKn" = ( /turf/open/floor/iron/stairs/right, /area/station/hallway/primary/central/aft) @@ -35218,7 +35284,7 @@ dir = 6 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "gPq" = ( /obj/machinery/light/directional/east, /obj/machinery/camera/directional/east{ @@ -35919,7 +35985,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "gWh" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, @@ -35998,20 +36064,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/hallway/secondary/construction) -"gXf" = ( -/obj/effect/turf_decal/trimline/red/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 6 - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/security/prison/upper) "gXl" = ( /obj/structure/closet/crate/bin, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -36031,7 +36083,7 @@ dir = 1 }, /turf/open/floor/iron/dark/side, -/area/station/security/prison/upper) +/area/station/security/prison) "gXw" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -36165,7 +36217,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "gZk" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -36352,7 +36404,7 @@ /obj/structure/window/reinforced/spawner/directional/south, /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "hbG" = ( /obj/effect/turf_decal/bot, /obj/structure/bed{ @@ -36404,7 +36456,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "hcf" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green{ @@ -36556,7 +36608,7 @@ /turf/open/floor/iron/dark/corner{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "hds" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -36627,7 +36679,7 @@ /obj/item/paper_bin, /obj/item/pen, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "heh" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 @@ -37473,7 +37525,7 @@ "hmu" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "hmx" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/structure/cable, @@ -38448,7 +38500,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "hxV" = ( /obj/structure/railing{ dir = 4 @@ -38533,8 +38585,10 @@ /obj/structure/trash_pile, /obj/effect/spawner/random/trash/garbage, /obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/apc/cell_10k, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "hyY" = ( /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, @@ -39172,7 +39226,7 @@ /obj/effect/turf_decal/stripes/white/line, /obj/structure/railing, /turf/closed/wall, -/area/station/security/prison/upper) +/area/station/security/bitden) "hFf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39432,7 +39486,7 @@ icon_state = "crateopen" }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "hHN" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -39646,7 +39700,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/structure/curtain/bounty/start_closed, /turf/open/floor/iron/dark/herringbone, -/area/station/security/prison/upper) +/area/station/security/bitden) "hJL" = ( /obj/structure/table, /obj/structure/cable, @@ -39802,7 +39856,7 @@ "hLH" = ( /obj/structure/ore_box, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "hLJ" = ( /obj/structure/frame/machine, /turf/open/floor/plating, @@ -40771,7 +40825,7 @@ /turf/open/floor/iron/kitchen{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "hVo" = ( /obj/machinery/door/airlock/security/glass{ name = "Security Office" @@ -41085,7 +41139,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "hYs" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/west, @@ -41207,7 +41261,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "hZB" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron, @@ -41232,7 +41286,7 @@ /area/station/science/ordnance) "hZI" = ( /turf/closed/wall, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "hZO" = ( /obj/structure/closet/secure_closet/hydroponics, /obj/structure/disposalpipe/segment{ @@ -41538,7 +41592,7 @@ /turf/open/floor/iron/dark/side{ dir = 9 }, -/area/station/security/prison/upper) +/area/station/security/prison) "icO" = ( /obj/machinery/power/shieldwallgen/xenobiologyaccess, /obj/effect/turf_decal/stripes{ @@ -42422,7 +42476,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "ima" = ( /obj/effect/spawner/random/structure/crate_loot, /turf/open/floor/plating, @@ -42537,7 +42591,7 @@ "inc" = ( /obj/effect/decal/cleanable/oil/streak, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "ine" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/chair/sofa/bench/right{ @@ -42562,7 +42616,7 @@ /turf/open/floor/iron/stairs/left{ dir = 8 }, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "inm" = ( /obj/structure/grille, /obj/structure/window/spawner/directional/west, @@ -43104,7 +43158,7 @@ /obj/structure/cable, /obj/effect/turf_decal/trimline/red, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "itv" = ( /turf/open/floor/iron/dark, /area/station/maintenance/aux_eva) @@ -43217,7 +43271,7 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "iuU" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -43587,7 +43641,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "ixQ" = ( /obj/machinery/shower/directional/east, /obj/structure/drain, @@ -43995,7 +44049,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "iCD" = ( /obj/structure/railing, /obj/structure/rack, @@ -44091,7 +44145,7 @@ /turf/open/floor/iron/kitchen{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "iDM" = ( /obj/structure/disposalpipe/junction/flip{ dir = 4 @@ -44124,7 +44178,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, /turf/open/floor/iron/dark/side, -/area/station/security/prison/upper) +/area/station/security/prison) "iEr" = ( /obj/effect/spawner/random/trash/mess, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -44358,7 +44412,7 @@ dir = 8 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "iGa" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44504,7 +44558,7 @@ "iHC" = ( /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "iHD" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -44551,7 +44605,7 @@ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "iIf" = ( /obj/effect/turf_decal/bot, /obj/machinery/vending/cigarette, @@ -45014,7 +45068,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "iNE" = ( /obj/effect/spawner/random/trash/food_packaging, /turf/open/floor/plating, @@ -45198,7 +45252,7 @@ name = "Flight Control" }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "iQi" = ( /obj/effect/turf_decal/trimline/red/line{ dir = 8 @@ -45209,14 +45263,14 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "iQl" = ( /turf/open/floor/iron, /area/station/science/ordnance/testlab) "iQv" = ( /obj/machinery/byteforge, /turf/open/floor/circuit/green, -/area/station/security/prison/upper) +/area/station/security/bitden) "iQx" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 8 @@ -45287,7 +45341,7 @@ /obj/machinery/airalarm/directional/west, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "iRe" = ( /obj/structure/chair{ dir = 8 @@ -45329,7 +45383,7 @@ dir = 10 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "iRO" = ( /obj/structure/railing{ dir = 4 @@ -46291,7 +46345,7 @@ "jaK" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "jaM" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46442,9 +46496,6 @@ /obj/structure/railing, /turf/open/floor/iron/dark, /area/station/common/wrestling/arena) -"jcg" = ( -/turf/open/floor/iron/dark, -/area/station/security/prison/upper) "jcj" = ( /obj/effect/turf_decal/bot, /obj/structure/table, @@ -46544,7 +46595,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "jda" = ( /obj/structure/grille, /obj/structure/window/spawner/directional/north, @@ -46768,7 +46819,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "jgd" = ( /turf/open/floor/circuit/green, /area/station/engineering/gravity_generator) @@ -47495,7 +47546,7 @@ /obj/machinery/atmospherics/components/tank/air, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible/layer4, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "jnt" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -47650,7 +47701,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "joF" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -47668,7 +47719,7 @@ /obj/machinery/light/directional/south, /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/white, -/area/station/security/prison) +/area/station/security/execution/transfer) "joN" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -47736,7 +47787,7 @@ /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/security/execution/transfer) +/area/station/security/prison/upper) "jpC" = ( /obj/effect/turf_decal/trimline/blue/line{ dir = 9 @@ -48186,7 +48237,7 @@ /obj/item/clothing/suit/armor/vest/old, /obj/effect/spawner/random/contraband/plus, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "jtP" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/delivery, @@ -48228,12 +48279,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/medical) -"juD" = ( -/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) "juE" = ( /obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/layer_manifold/visible{ @@ -48377,7 +48422,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "jvV" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/west, @@ -48416,6 +48461,11 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/port/upper) +"jwD" = ( +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/security/execution/transfer) "jwF" = ( /obj/structure/filingcabinet/chestdrawer, /obj/item/storage/box/syringes{ @@ -48520,11 +48570,6 @@ }, /turf/open/floor/carpet, /area/station/service/library) -"jxr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison) "jxs" = ( /obj/structure/trash_pile, /turf/open/floor/plating, @@ -48946,7 +48991,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/security/prison/upper) +/area/station/security/prison) "jBI" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -49418,7 +49463,7 @@ /obj/structure/cable, /obj/effect/turf_decal/trimline/red, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "jGk" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -49756,7 +49801,7 @@ req_access = list("security") }, /turf/open/floor/iron/dark, -/area/station/security/prison/upper) +/area/station/security/prison) "jJF" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -49900,7 +49945,7 @@ "jLj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "jLo" = ( /obj/effect/decal/cleanable/dirt, /obj/item/seeds/liberty, @@ -50044,7 +50089,7 @@ /obj/machinery/newscaster/directional/west, /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "jME" = ( /obj/machinery/door/airlock/external, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -50127,7 +50172,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, -/area/station/security/prison/upper) +/area/station/security/prison) "jNs" = ( /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/shutters/preopen{ @@ -50346,6 +50391,11 @@ }, /turf/open/floor/iron/white, /area/station/medical/surgery) +"jPf" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/prison/upper) "jPh" = ( /obj/item/wrench, /turf/open/floor/plating, @@ -50771,7 +50821,7 @@ /obj/structure/closet/secure_closet/brig/genpop, /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "jSY" = ( /obj/structure/grille, /obj/structure/window/spawner/directional/west, @@ -50886,7 +50936,7 @@ /turf/open/floor/iron/dark/side{ dir = 5 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "jUh" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -50963,7 +51013,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "jUO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -51019,6 +51069,7 @@ /area/station/maintenance/fore/upper) "jUX" = ( /obj/machinery/door/window/left/directional/north, +/obj/structure/liquid_barrier, /turf/open/floor/iron/dark, /area/station/science/xenobiology) "jVd" = ( @@ -51333,12 +51384,12 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "jYd" = ( /obj/structure/closet/crate/large, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "jYj" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -51371,7 +51422,7 @@ /obj/item/radio/intercom/directional/west, /obj/item/pushbroom, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "jYp" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -51549,7 +51600,7 @@ /obj/effect/mapping_helpers/broken_floor, /obj/item/storage/toolbox/mechanical/old, /turf/open/floor/wood, -/area/station/security/prison/upper) +/area/station/security/prison) "jZA" = ( /obj/item/kirbyplants/random, /obj/machinery/light/directional/south, @@ -51637,7 +51688,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, -/area/station/security/prison) +/area/station/security/execution/transfer) "kau" = ( /obj/effect/turf_decal/tile/neutral, /obj/structure/cable, @@ -51793,13 +51844,16 @@ /turf/open/floor/wood, /area/station/common/pool/sauna) "kcW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 }, -/obj/machinery/airalarm/directional/north, -/obj/structure/closet, -/obj/effect/spawner/random/medical/medkit, -/turf/open/floor/iron/white, /area/station/security/medical) "kcZ" = ( /obj/effect/turf_decal/bot, @@ -51869,6 +51923,7 @@ /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 }, +/obj/structure/sign/departments/medbay/alt/directional/west, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -52496,7 +52551,7 @@ /area/station/engineering/supermatter/room) "kif" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/fore) "kih" = ( @@ -52692,6 +52747,9 @@ /obj/effect/mapping_helpers/airlock/access/all/command/general, /turf/open/floor/plating, /area/station/maintenance/department/medical/morgue) +"kkF" = ( +/turf/open/floor/glass/reinforced, +/area/station/security/execution/transfer) "kkI" = ( /obj/structure/grille, /obj/structure/window/reinforced/spawner/directional/south, @@ -52789,7 +52847,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "klX" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate{ @@ -52919,7 +52977,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "kmI" = ( /obj/structure/chair/comfy/brown{ color = "#A46106"; @@ -52995,7 +53053,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible/layer4, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "kno" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53113,7 +53171,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "kox" = ( /obj/structure/bookcase/manuals/research_and_development, /obj/machinery/digital_clock/directional/north, @@ -53158,7 +53216,7 @@ /obj/effect/spawner/random/trash/garbage, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "kpo" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/west, @@ -54046,7 +54104,7 @@ "kxy" = ( /obj/structure/railing, /turf/closed/wall, -/area/station/security/prison/upper) +/area/station/security/bitden) "kxz" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/iron/smooth_large, @@ -54071,6 +54129,12 @@ dir = 10 }, /area/station/service/hydroponics) +"kxG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "kxH" = ( /obj/item/cigbutt, /obj/structure/cable, @@ -54298,7 +54362,7 @@ /obj/machinery/light/directional/north, /obj/machinery/airalarm/directional/north, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "kzy" = ( /obj/machinery/light/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -55251,7 +55315,7 @@ /obj/structure/door_assembly/door_assembly_sec, /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "kKm" = ( /obj/machinery/door/airlock/external{ name = "Arrivals Dock"; @@ -56123,7 +56187,7 @@ /obj/structure/cable, /obj/effect/turf_decal/trimline/red, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "kUD" = ( /obj/structure/railing{ dir = 8 @@ -56214,7 +56278,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "kWb" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/hallway) @@ -56234,7 +56298,7 @@ width = 9 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "kWu" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -56434,7 +56498,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "kYw" = ( /obj/machinery/light_switch/directional/south, /obj/machinery/duct, @@ -56992,7 +57056,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "lcS" = ( /obj/structure/grille, /obj/structure/window/reinforced/spawner/directional/north, @@ -57263,7 +57327,7 @@ dir = 6 }, /turf/open/floor/iron/white, -/area/station/security/prison) +/area/station/security/execution/transfer) "lfK" = ( /obj/structure/railing, /obj/structure/railing{ @@ -57373,7 +57437,7 @@ "lgZ" = ( /obj/structure/ore_box, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "lhd" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -58068,6 +58132,11 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/plating, /area/station/cargo/storage) +"low" = ( +/obj/item/stack/sheet/cardboard, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "lox" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -58619,7 +58688,7 @@ /obj/structure/closet, /obj/effect/spawner/random/medical/medkit, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "ltN" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -59244,7 +59313,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "lBn" = ( /obj/structure/chair{ dir = 1 @@ -59696,7 +59765,7 @@ /obj/machinery/netpod, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "lFZ" = ( /obj/structure/closet, /obj/item/stack/sheet/iron{ @@ -59725,7 +59794,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/iron/smooth, -/area/station/security/prison/upper) +/area/station/security/bitden) "lGl" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -59878,6 +59947,11 @@ /obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted, /obj/machinery/recharge_station, /obj/machinery/light_switch/directional/south, +/obj/machinery/button/door/directional/east{ + name = "Security Mech Garage Door Controls"; + id = "SecMech"; + req_access = list("security") + }, /turf/open/floor/iron/dark, /area/station/security/mechbay) "lHW" = ( @@ -60357,7 +60431,7 @@ /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/execution/transfer) +/area/station/security/prison/upper) "lME" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/loading_area{ @@ -60403,7 +60477,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "lMX" = ( /obj/effect/turf_decal/trimline/purple/line{ dir = 4 @@ -60422,7 +60496,7 @@ }, /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark, -/area/station/security/prison/upper) +/area/station/security/prison) "lNc" = ( /obj/structure/rack, /obj/item/coffee_cartridge, @@ -60903,7 +60977,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /turf/open/floor/wood, -/area/station/security/prison/upper) +/area/station/security/prison) "lRL" = ( /obj/structure/closet/crate/bin, /obj/effect/decal/cleanable/dirt, @@ -60964,7 +61038,7 @@ /area/station/security/interrogation) "lSv" = ( /turf/closed/wall/r_wall, -/area/station/security/prison/upper) +/area/station/security/bitden) "lSx" = ( /obj/machinery/vending/games, /turf/open/floor/wood, @@ -60985,6 +61059,11 @@ /obj/structure/chair/stool/directional/north, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"lSN" = ( +/obj/machinery/status_display/ai/directional/north, +/obj/machinery/computer/operating, +/turf/open/floor/iron/dark, +/area/station/security/medical) "lSP" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -61342,7 +61421,7 @@ /area/station/maintenance/port/fore) "lWC" = ( /turf/closed/wall, -/area/station/security/prison/upper) +/area/station/security/bitden) "lWD" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -61376,7 +61455,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "lWO" = ( /obj/machinery/shower/directional/west, /obj/structure/drain, @@ -61437,7 +61516,7 @@ dir = 4 }, /turf/open/floor/iron/white, -/area/station/security/prison/upper) +/area/station/security/prison) "lXs" = ( /obj/structure/trash_pile, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -61460,7 +61539,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "lXy" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -62272,7 +62351,7 @@ "mfh" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "mfi" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/cup/glass/coffee/no_lid{ @@ -62307,7 +62386,7 @@ /obj/machinery/light_switch/directional/north, /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "mfI" = ( /obj/structure/closet/secure_closet/detective, /turf/open/floor/wood/parquet, @@ -62322,9 +62401,6 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/iron, /area/station/security/courtroom) -"mfN" = ( -/turf/open/floor/iron, -/area/station/security/prison/upper) "mfP" = ( /obj/structure/window/reinforced/fulltile, /obj/structure/flora/bush/grassy, @@ -62385,14 +62461,14 @@ }, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "mgu" = ( /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/security/prison) +/area/station/security/execution/transfer) "mgz" = ( /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, @@ -62577,7 +62653,7 @@ }, /obj/item/clothing/head/utility/welding, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "miB" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 9 @@ -62741,6 +62817,12 @@ /obj/structure/chair/stool/bar/directional/west, /turf/open/floor/iron, /area/station/command/captain_dining) +"mkp" = ( +/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/upper) "mky" = ( /obj/structure/chair, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -62763,6 +62845,11 @@ /obj/effect/landmark/start/hangover, /turf/open/openspace, /area/station/hallway/primary/upper) +"mkH" = ( +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/security/execution/transfer) "mkM" = ( /obj/structure/window/spawner/directional/south, /obj/structure/flora/bush/jungle/a/style_3, @@ -63071,7 +63158,7 @@ /turf/open/floor/iron/stairs{ dir = 4 }, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "moI" = ( /obj/effect/turf_decal/stripes{ dir = 9 @@ -63482,7 +63569,7 @@ dir = 4 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "msV" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -64144,7 +64231,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "mAe" = ( /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, @@ -64403,6 +64490,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/liquid_barrier, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "mDi" = ( @@ -64528,7 +64616,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "mEs" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, @@ -64847,7 +64935,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "mHg" = ( /obj/structure/chair/stool{ pixel_y = 3 @@ -64883,12 +64971,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/upper) -"mHx" = ( -/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/security/prison) "mHA" = ( /obj/structure/table/reinforced, /obj/item/pipe_dispenser, @@ -65044,14 +65126,14 @@ /obj/structure/table, /obj/item/fuel_pellet, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "mJa" = ( /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/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "mJc" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -65069,7 +65151,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /turf/closed/wall, -/area/station/security/prison/upper) +/area/station/security/prison) "mJi" = ( /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, @@ -65242,7 +65324,7 @@ name = "Security Dock 1" }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "mKN" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -65800,7 +65882,7 @@ }, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "mQG" = ( /obj/machinery/door/airlock/research{ name = "Robotics Surgery" @@ -66543,7 +66625,7 @@ dir = 4 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "mYc" = ( /obj/effect/decal/cleanable/glass, /obj/item/shard, @@ -66575,7 +66657,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/security/prison) +/area/station/security/execution/transfer) "mYo" = ( /obj/machinery/door/airlock/external{ space_dir = 8 @@ -66713,7 +66795,7 @@ /obj/item/analyzer, /obj/machinery/atmospherics/pipe/layer_manifold, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "nah" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 @@ -67433,7 +67515,7 @@ dir = 8 }, /turf/open/floor/iron/white, -/area/station/security/prison) +/area/station/security/execution/transfer) "nhj" = ( /obj/structure/guncase, /obj/effect/turf_decal/delivery, @@ -67691,7 +67773,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/structure/curtain/bounty/start_closed, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/bitden) "nko" = ( /turf/closed/wall/r_wall, /area/station/maintenance/abandon_arcade) @@ -67905,7 +67987,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "nng" = ( /obj/structure/sign/directions/security{ dir = 8; @@ -69180,7 +69262,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "nBi" = ( /obj/structure/rack/shelf, /obj/effect/turf_decal/bot, @@ -69362,13 +69444,13 @@ /obj/effect/turf_decal/bot, /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "nCO" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/iron/white, -/area/station/security/prison) +/area/station/security/execution/transfer) "nCP" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ dir = 9 @@ -69993,7 +70075,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "nJh" = ( /obj/structure/chair/sofa/corp{ dir = 1 @@ -70077,7 +70159,7 @@ /turf/open/floor/iron/dark/side{ dir = 9 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "nKc" = ( /obj/effect/turf_decal/bot, /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ @@ -70317,7 +70399,7 @@ /obj/structure/closet, /obj/effect/spawner/random/medical/medkit, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "nMW" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -70428,7 +70510,7 @@ /turf/open/floor/iron/kitchen{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "nOi" = ( /turf/closed/wall/r_wall, /area/station/security/office) @@ -70487,7 +70569,7 @@ "nOQ" = ( /obj/item/stack/cable_coil, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "nPa" = ( /obj/structure/table, /obj/machinery/chem_dispenser/drinks{ @@ -70595,7 +70677,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "nQf" = ( /obj/machinery/airalarm/directional/west, /obj/item/radio/intercom/directional/south, @@ -70964,7 +71046,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, -/area/station/security/prison/upper) +/area/station/security/prison) "nTw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71000,7 +71082,7 @@ /turf/open/floor/iron/kitchen{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "nTM" = ( /obj/effect/turf_decal/bot, /obj/structure/reagent_dispensers/fueltank, @@ -71131,7 +71213,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/security/prison/upper) +/area/station/security/prison) "nUJ" = ( /obj/effect/turf_decal/stripes, /obj/structure/cable, @@ -71255,7 +71337,7 @@ /turf/open/floor/iron/stairs/medium{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "nVD" = ( /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) @@ -71706,7 +71788,7 @@ /obj/item/reagent_containers/cup/bucket, /obj/item/storage/bag/trash, /turf/open/floor/iron, -/area/station/security/prison/upper) +/area/station/security/prison) "oax" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, @@ -71802,7 +71884,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "obM" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -71834,7 +71916,7 @@ }, /obj/machinery/light/directional/north, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "oci" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ color = "#DE3A3A"; @@ -71926,7 +72008,7 @@ /obj/machinery/newscaster/directional/west, /obj/structure/cable, /turf/open/floor/iron/stairs/old, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "odj" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -72582,7 +72664,7 @@ "oih" = ( /obj/machinery/light/directional/north, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "oil" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72670,7 +72752,7 @@ /turf/open/floor/iron/dark/side{ dir = 10 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "oiX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72757,7 +72839,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron/white/side, -/area/station/security/prison) +/area/station/security/execution/transfer) "oke" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -73245,7 +73327,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/item/trash/can, /turf/open/floor/iron/smooth, -/area/station/security/prison/upper) +/area/station/security/bitden) "ooi" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 8 @@ -73449,7 +73531,7 @@ "oql" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "oqn" = ( /obj/machinery/door/poddoor/shutters{ id = "aux_base_shutters"; @@ -73552,7 +73634,7 @@ /obj/item/storage/bag/trash, /obj/effect/spawner/random/contraband/prison, /turf/open/floor/iron, -/area/station/security/prison/upper) +/area/station/security/prison) "orn" = ( /obj/effect/turf_decal/vg_decals/numbers/three, /turf/open/floor/iron/shuttle/arrivals/airless, @@ -73650,7 +73732,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "osc" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/south, @@ -73872,7 +73954,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "ouM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -74253,7 +74335,7 @@ /obj/structure/cable, /obj/effect/turf_decal/trimline/red, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "oyz" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -74286,7 +74368,7 @@ /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/security/execution/transfer) +/area/station/security/prison/upper) "oyK" = ( /obj/machinery/photocopier, /obj/effect/turf_decal/siding/wood{ @@ -74599,7 +74681,7 @@ "oBL" = ( /obj/machinery/door/window/right/directional/north, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "oBO" = ( /obj/machinery/conveyor{ dir = 8; @@ -74733,7 +74815,7 @@ /obj/structure/closet/crate/bin, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "oDl" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -76467,7 +76549,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "oUJ" = ( /obj/effect/landmark/start/ai/secondary, /obj/item/radio/intercom/directional/north{ @@ -76643,7 +76725,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "oWE" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -76971,7 +77053,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "paj" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 10 @@ -77364,7 +77446,7 @@ "peU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "peV" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -77573,7 +77655,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "phG" = ( /obj/machinery/light/directional/north, /obj/machinery/newscaster/directional/north, @@ -77703,7 +77785,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron, -/area/station/security/prison) +/area/station/security/execution/transfer) "pit" = ( /obj/structure/flora/bush/jungle/c, /obj/structure/flora/bush/flowers_pp/style_2, @@ -77738,27 +77820,21 @@ /turf/open/floor/plating, /area/station/maintenance/port/upper) "piE" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/directional/north{ - c_tag = "Security - Medbay Waiting Room" - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/siding/dark_red, +/turf/open/floor/iron/dark, /area/station/security/medical) "piH" = ( /obj/machinery/light/directional/east, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "piL" = ( /turf/closed/wall, /area/station/hallway/secondary/exit) "piO" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron/dark/herringbone, -/area/station/security/brig) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "piQ" = ( /obj/structure/chair/office, /turf/open/floor/iron/dark, @@ -78044,7 +78120,7 @@ /turf/open/floor/iron/dark/side{ dir = 9 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "plR" = ( /obj/structure/railing{ dir = 4 @@ -78355,7 +78431,7 @@ "poM" = ( /obj/effect/decal/cleanable/dirt, /turf/closed/wall, -/area/station/security/prison/upper) +/area/station/security/prison) "poY" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -78391,7 +78467,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "ppC" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -78627,6 +78703,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/openspace, /area/station/maintenance/aft/upper) +"psC" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 10 + }, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/security/execution/transfer) "psD" = ( /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, @@ -78770,6 +78860,11 @@ /obj/effect/turf_decal/tile/brown, /turf/open/floor/iron/dark, /area/station/command/bridge) +"pub" = ( +/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/upper) "puc" = ( /obj/structure/window/spawner/directional/west, /obj/structure/flora/bush/fullgrass, @@ -79296,6 +79391,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"pyk" = ( +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "pyp" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -79567,7 +79667,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "pBo" = ( /turf/closed/wall, /area/station/commons/fitness) @@ -79766,7 +79866,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/structure/curtain/bounty/start_closed, /turf/open/floor/iron/dark/herringbone, -/area/station/security/prison/upper) +/area/station/security/bitden) "pEc" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -80480,7 +80580,7 @@ dir = 1 }, /turf/open/floor/iron/dark/side, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "pKZ" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -80949,7 +81049,7 @@ }, /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "pPJ" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/blood/innards, @@ -80980,7 +81080,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "pQs" = ( /obj/structure/table/wood, /obj/item/storage/briefcase/secure{ @@ -81098,6 +81198,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/effect/spawner/random/structure/steam_vent, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/fore) "pRI" = ( @@ -81111,7 +81212,7 @@ /turf/open/floor/iron/dark/side{ dir = 10 }, -/area/station/security/prison/upper) +/area/station/security/prison) "pRM" = ( /obj/effect/turf_decal/stripes, /obj/structure/disposalpipe/segment, @@ -81160,7 +81261,7 @@ "pSi" = ( /obj/structure/table/reinforced, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "pSk" = ( /obj/effect/turf_decal/bot, /obj/item/beacon, @@ -81218,7 +81319,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "pSH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/port_gen/pacman/pre_loaded, @@ -81348,7 +81449,7 @@ /area/station/command/secure_bunker) "pUq" = ( /turf/open/floor/iron/dark/side, -/area/station/security/prison) +/area/station/security/execution/transfer) "pUr" = ( /obj/effect/turf_decal/siding/thinplating/dark, /obj/effect/decal/cleanable/dirt, @@ -81475,7 +81576,7 @@ /turf/open/floor/iron/dark/side{ dir = 10 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "pVL" = ( /obj/machinery/modular_computer/preset/id{ dir = 1 @@ -81568,7 +81669,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/security/prison/upper) +/area/station/security/prison) "pWl" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -81622,7 +81723,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "pWv" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ @@ -81670,7 +81771,7 @@ /turf/open/floor/iron/stairs{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "pWK" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -81694,7 +81795,7 @@ /turf/open/floor/iron/stairs/left{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "pWU" = ( /obj/machinery/status_display/supply, /turf/closed/wall, @@ -81706,7 +81807,7 @@ /turf/open/floor/iron/stairs/medium{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "pWY" = ( /obj/machinery/door/firedoor, /obj/structure/cable, @@ -81754,7 +81855,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, -/area/station/security/prison/upper) +/area/station/security/prison) "pXu" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 4 @@ -81913,7 +82014,7 @@ /obj/machinery/light/directional/south, /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "pYF" = ( /obj/effect/turf_decal/delivery, /obj/machinery/power/port_gen/pacman/pre_loaded, @@ -82144,7 +82245,7 @@ /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/execution/transfer) +/area/station/security/prison/upper) "qbD" = ( /obj/structure/cable, /obj/machinery/airalarm/directional/east, @@ -82346,7 +82447,7 @@ /turf/open/floor/iron/dark/side{ dir = 6 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "qdq" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/structure/disposalpipe/segment{ @@ -82396,7 +82497,7 @@ /obj/machinery/light/floor/has_bulb, /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "qdV" = ( /obj/machinery/atmospherics/pipe/smart/simple/general/visible{ dir = 6 @@ -82572,23 +82673,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"qgb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - color = "#DE3A3A"; - dir = 5 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 5 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/security/prison/upper) "qgf" = ( /obj/item/stack/sheet/cardboard, /turf/open/floor/plating, @@ -82700,7 +82784,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "qhe" = ( /obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, /turf/closed/wall/r_wall, @@ -82868,6 +82952,12 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/science/research) +"qiF" = ( +/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/mechbay) "qiR" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 4 @@ -83049,7 +83139,7 @@ "qkw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, -/area/station/security/prison/upper) +/area/station/security/prison) "qkx" = ( /obj/machinery/power/shuttle_engine/heater{ dir = 8 @@ -83098,6 +83188,7 @@ }, /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/xenobiology) "qkR" = ( @@ -83146,7 +83237,7 @@ dir = 4 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "qlH" = ( /obj/effect/turf_decal/stripes{ dir = 4 @@ -83446,7 +83537,7 @@ /obj/item/clothing/shoes/sneakers/black, /obj/item/clothing/mask/gas, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "qoL" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -83604,7 +83695,7 @@ /obj/machinery/light/directional/north, /obj/machinery/camera/directional/north, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "qpZ" = ( /obj/machinery/door/airlock/security{ name = "Armory" @@ -83729,7 +83820,7 @@ name = "Labor Camp Shuttle Airlock" }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "qrm" = ( /obj/structure/grille, /turf/open/floor/plating, @@ -84015,6 +84106,7 @@ name = "Xenobiology Controll Room Shutters" }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/xenobiology/control) "qtm" = ( @@ -84340,7 +84432,7 @@ dir = 10 }, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "qwf" = ( /turf/open/floor/iron/stairs/medium{ dir = 4 @@ -84473,7 +84565,7 @@ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "qxV" = ( /obj/structure/grille, /obj/structure/window/spawner/directional/south, @@ -84846,7 +84938,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "qBm" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/wood/parquet, @@ -84931,6 +85023,7 @@ /obj/machinery/door/firedoor, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/iron, /area/station/science/xenobiology/hallway) "qCg" = ( @@ -85001,7 +85094,7 @@ dir = 1 }, /turf/open/floor/iron/dark/side, -/area/station/security/prison/upper) +/area/station/security/prison) "qCJ" = ( /obj/structure/chair/sofa/bench/right{ dir = 8; @@ -85455,6 +85548,7 @@ /area/station/science) "qGA" = ( /obj/structure/sign/departments/xenobio/directional/north, +/obj/structure/liquid_barrier, /turf/open/floor/plating, /area/station/maintenance/aft/upper) "qGC" = ( @@ -85517,7 +85611,7 @@ }, /obj/item/book/bible, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "qHg" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -85594,7 +85688,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "qHM" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/corner{ @@ -85751,7 +85845,7 @@ /obj/effect/turf_decal/bot, /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "qJb" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes{ @@ -85920,7 +86014,7 @@ /turf/open/floor/iron/smooth_edge{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/bitden) "qKN" = ( /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, @@ -86016,7 +86110,7 @@ /turf/open/floor/iron/kitchen{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "qMs" = ( /obj/effect/turf_decal/weather/sand{ dir = 1 @@ -86143,7 +86237,7 @@ "qNF" = ( /obj/machinery/light/directional/south, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "qNG" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -86255,11 +86349,6 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/service/hydroponics) -"qPi" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/upper) "qPn" = ( /obj/item/book/codex_gigas, /obj/effect/turf_decal/tile/neutral{ @@ -86510,7 +86599,7 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "qSc" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -86756,7 +86845,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "qUm" = ( /obj/structure/table/reinforced, /obj/machinery/computer/security/telescreen/interrogation{ @@ -87457,14 +87546,14 @@ /turf/open/floor/iron/kitchen{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "raI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/airlock/maintenance_hatch, /obj/structure/cable, /turf/open/floor/iron/smooth, -/area/station/security/prison/upper) +/area/station/security/bitden) "raJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -87577,7 +87666,7 @@ pixel_y = 8 }, /turf/open/floor/iron/white, -/area/station/security/prison) +/area/station/security/execution/transfer) "rbL" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -87634,11 +87723,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/cargo/miningoffice) -"rcw" = ( -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/security/prison/upper) "rcB" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Engineering Maintenance" @@ -87723,7 +87807,7 @@ /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/security/execution/transfer) +/area/station/security/prison/upper) "rdo" = ( /obj/machinery/firealarm/directional/east, /obj/machinery/light/directional/east, @@ -87760,7 +87844,7 @@ /obj/item/folder/red, /obj/item/pen, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "rdB" = ( /obj/structure/closet/secure_closet/personal, /obj/effect/turf_decal/siding/wood{ @@ -87932,7 +88016,7 @@ "reQ" = ( /obj/item/clothing/head/utility/hardhat, /turf/open/floor/plating, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "reW" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, @@ -87972,7 +88056,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "rfv" = ( /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/tile/neutral{ @@ -88023,7 +88107,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "rfX" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/bed{ @@ -88160,7 +88244,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "rhs" = ( /obj/structure/chair/office/light, /obj/effect/turf_decal/stripes/white/corner{ @@ -88416,6 +88500,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/duct, +/obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/cytology) "rjO" = ( @@ -88476,6 +88561,9 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"rkk" = ( +/turf/closed/wall/r_wall, +/area/station/security/prison/upper) "rko" = ( /obj/effect/spawner/liquids_spawner{ reagent_list = list(/datum/reagent/water=600) @@ -88639,7 +88727,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "rlI" = ( /mob/living/basic/chicken/brown{ forced_gender = "female" @@ -88690,7 +88778,7 @@ name = "Flight Control" }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "rmf" = ( /obj/structure/curtain/cloth, /turf/open/floor/iron/freezer, @@ -88735,7 +88823,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "rmz" = ( /obj/machinery/camera/directional/east{ c_tag = "Leisure Area - Lasertag Red Fore"; @@ -88782,7 +88870,7 @@ "rnl" = ( /obj/machinery/gulag_teleporter, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "rno" = ( /turf/closed/wall, /area/station/science/ordnance/testlab) @@ -89081,7 +89169,7 @@ "rqq" = ( /obj/structure/trash_pile, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "rqt" = ( /obj/structure/chair{ dir = 8 @@ -89294,6 +89382,7 @@ name = "Toxins Maintenance" }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "rsO" = ( @@ -89414,7 +89503,7 @@ dir = 1 }, /turf/open/floor/iron/dark/side, -/area/station/security/prison/upper) +/area/station/security/prison) "rtK" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/corner{ @@ -89779,7 +89868,21 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) +"rwY" = ( +/obj/effect/turf_decal/trimline/red/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 6 + }, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/station/security/execution/transfer) "rwZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -90108,7 +90211,7 @@ pixel_y = 14 }, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "rAY" = ( /obj/machinery/modular_computer/preset/cargochat/medical, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -90628,7 +90731,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "rFk" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "Plasma to Pure" @@ -90644,7 +90747,7 @@ }, /obj/effect/turf_decal/trimline/red/filled/corner, /turf/open/floor/iron/dark/corner, -/area/station/security/prison/upper) +/area/station/security/prison) "rFv" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -90776,7 +90879,7 @@ /obj/effect/turf_decal/bot, /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "rGl" = ( /obj/machinery/door/airlock/research{ name = "Ordnance Launch Site" @@ -91009,6 +91112,9 @@ name = "Padded tile" }, /area/station/medical/aslyum) +"rIe" = ( +/turf/closed/wall/rust, +/area/station/security/bitden) "rIh" = ( /obj/structure/railing{ dir = 1 @@ -91073,7 +91179,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "rJf" = ( /obj/structure/window/reinforced/tinted/spawner/directional/east, /obj/item/toy/plush/slimeplushie{ @@ -91224,7 +91330,7 @@ "rKP" = ( /obj/structure/sign/departments/cargo, /turf/closed/wall, -/area/station/security/prison/upper) +/area/station/security/bitden) "rKQ" = ( /obj/machinery/photocopier, /turf/open/floor/carpet, @@ -91982,7 +92088,7 @@ "rUv" = ( /obj/machinery/light/floor/has_bulb, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "rUA" = ( /obj/machinery/door/airlock/external{ space_dir = 8 @@ -92057,7 +92163,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/prison/upper) +/area/station/security/prison) "rVD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -92453,7 +92559,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/side, -/area/station/security/prison) +/area/station/security/execution/transfer) "rZC" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -92465,7 +92571,7 @@ /obj/structure/window/reinforced/spawner/directional/east, /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "rZG" = ( /obj/structure/table/wood, /obj/item/paper_bin{ @@ -93437,7 +93543,7 @@ "sjE" = ( /obj/effect/spawner/random/trash/graffiti, /turf/closed/wall, -/area/station/security/prison/upper) +/area/station/security/bitden) "sjF" = ( /obj/machinery/door/airlock/bathroom{ name = "Restroom" @@ -93507,7 +93613,7 @@ /obj/effect/decal/cleanable/oil/slippery, /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "skq" = ( /obj/machinery/door/poddoor/preopen{ id = "xenosecure"; @@ -93519,6 +93625,7 @@ name = "Creature Pen"; req_access = list("research") }, +/obj/structure/liquid_barrier, /turf/open/floor/engine, /area/station/science/xenobiology) "skx" = ( @@ -93764,7 +93871,7 @@ }, /obj/item/wirecutters, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "sna" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -93887,7 +93994,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "soi" = ( /obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -94034,7 +94141,7 @@ req_access = list("security") }, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "spS" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -94197,7 +94304,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "srJ" = ( /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/dark/side{ @@ -94277,7 +94384,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "ssv" = ( /obj/machinery/growing/soil, /turf/open/floor/grass, @@ -94892,7 +94999,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "sxJ" = ( /obj/structure/table, /obj/item/storage/photo_album, @@ -95081,10 +95188,10 @@ /turf/open/floor/iron/dark/small, /area/station/cargo/storage) "sAv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad/secure, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/white/side, /area/station/security/medical) "sAy" = ( /obj/structure/flora/grass/jungle, @@ -95124,7 +95231,7 @@ "sAH" = ( /obj/effect/spawner/random/trash/graffiti, /turf/closed/wall/rust, -/area/station/security/prison/upper) +/area/station/security/bitden) "sAN" = ( /obj/effect/turf_decal/stripes/full, /obj/effect/turf_decal/stripes/white/full, @@ -95133,7 +95240,7 @@ name = "Security Dock 2" }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "sAW" = ( /obj/structure/railing{ dir = 8 @@ -95165,7 +95272,7 @@ /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/security/execution/transfer) +/area/station/security/prison/upper) "sBj" = ( /obj/structure/window/spawner/directional/east, /obj/structure/flora/bush/jungle/a/style_3, @@ -95278,7 +95385,7 @@ "sCh" = ( /obj/machinery/door/airlock/maintenance, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "sCm" = ( /turf/closed/wall, /area/station/science/ordnance/office) @@ -95710,7 +95817,7 @@ "sGa" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "sGk" = ( /obj/structure/reagent_dispensers/fueltank{ pixel_y = 1 @@ -95829,7 +95936,7 @@ /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/security/execution/transfer) +/area/station/security/prison/upper) "sHt" = ( /turf/open/floor/iron/white, /area/station/medical/treatment_center) @@ -95916,14 +96023,14 @@ }, /obj/structure/cable, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "sIh" = ( /obj/machinery/computer/records/security{ dir = 4 }, /obj/structure/window/spawner/directional/south, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "sIk" = ( /obj/structure/closet/cardboard, /obj/effect/spawner/random/maintenance, @@ -96373,7 +96480,7 @@ dir = 4 }, /turf/open/floor/carpet/black, -/area/station/security/prison) +/area/station/security/execution/transfer) "sMd" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, @@ -96515,7 +96622,7 @@ /obj/machinery/light/small/blacklight/directional/east, /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "sNn" = ( /obj/structure/trash_pile, /turf/open/floor/plating, @@ -96929,7 +97036,7 @@ dir = 8 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "sRD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -97103,10 +97210,8 @@ }, /area/station/science/xenobiology) "sTA" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning, -/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, /area/station/security/medical) "sTB" = ( @@ -97155,7 +97260,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "sUg" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ color = "#DE3A3A"; @@ -97429,7 +97534,7 @@ /obj/effect/turf_decal/bot, /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "sWk" = ( /obj/structure/closet, /obj/effect/decal/cleanable/dirt, @@ -97652,7 +97757,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "sYd" = ( /obj/structure/sign/poster/contraband/have_a_puff/directional/south, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -97689,20 +97794,6 @@ /obj/structure/flora/bush/flowers_pp, /turf/open/floor/grass, /area/station/hallway/primary/central) -"sYB" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 10 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/security/prison/upper) "sYE" = ( /mob/living/basic/chicken/brown{ forced_gender = "female" @@ -97882,7 +97973,7 @@ /obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6/directional/north, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "sZV" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /turf/open/floor/iron/dark, @@ -97907,7 +97998,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "tan" = ( /obj/machinery/door/airlock/security{ name = "Courtroom Tunnel" @@ -97929,7 +98020,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "tay" = ( /obj/machinery/camera/autoname/directional/west, /turf/open/floor/wood, @@ -98262,7 +98353,7 @@ /turf/open/floor/iron/stairs/right{ dir = 4 }, -/area/station/security/prison/upper) +/area/station/security/prison) "tcS" = ( /obj/structure/girder, /obj/structure/grille/broken, @@ -98345,7 +98436,7 @@ /obj/effect/decal/cleanable/dirt, /obj/item/trash/can, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "tdK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -98589,7 +98680,7 @@ /area/station/command/bridge) "tfE" = ( /turf/closed/wall/rust, -/area/station/security/prison/upper) +/area/station/security/prison) "tfG" = ( /obj/structure/chair/plastic{ dir = 8 @@ -98659,7 +98750,7 @@ /turf/open/floor/iron/dark/side{ dir = 5 }, -/area/station/security/prison/upper) +/area/station/security/prison) "tgl" = ( /obj/item/kirbyplants/organic/plant22, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -98724,8 +98815,9 @@ /turf/open/floor/iron, /area/station/engineering/transit_tube) "thg" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance, +/obj/structure/reagent_dispensers/plumbed{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/port/fore) "thj" = ( @@ -99130,7 +99222,7 @@ /turf/open/floor/iron/dark/side{ dir = 6 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "tme" = ( /obj/effect/decal/cleanable/glass, /obj/effect/mapping_helpers/broken_floor, @@ -101123,7 +101215,7 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/prison) +/area/station/security/execution/transfer) "tGh" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -101661,7 +101753,7 @@ /turf/open/floor/iron/dark/side{ dir = 5 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "tMh" = ( /obj/structure/bed{ dir = 1 @@ -101719,7 +101811,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "tMA" = ( /obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/smart/simple/general/visible, @@ -101796,7 +101888,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/security/prison) +/area/station/security/execution/transfer) "tNg" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -102454,7 +102546,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/item/radio/intercom/directional/south, /turf/open/floor/iron, -/area/station/security/prison) +/area/station/security/execution/transfer) "tSU" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/dark/side{ @@ -102769,7 +102861,7 @@ }, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "tWi" = ( /obj/machinery/light/directional/north, /turf/open/floor/iron, @@ -102905,7 +102997,7 @@ /obj/structure/cable, /obj/structure/falsewall, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "tXX" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 1 @@ -103188,7 +103280,7 @@ pixel_y = 12 }, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "ubp" = ( /obj/structure/reagent_dispensers/beerkeg, /turf/open/floor/plating, @@ -103268,7 +103360,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "ucs" = ( /obj/effect/spawner/random/trash/box, /turf/open/floor/plating, @@ -103323,7 +103415,7 @@ pixel_x = -5 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "udb" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -103439,7 +103531,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, -/area/station/security/prison) +/area/station/security/execution/transfer) "udT" = ( /obj/effect/turf_decal/bot, /obj/machinery/conveyor_switch/oneway{ @@ -104184,7 +104276,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "ukD" = ( /obj/effect/turf_decal/stripes, /obj/structure/cable, @@ -104420,7 +104512,7 @@ dir = 6 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "ulM" = ( /obj/structure/closet/crate/bin, /obj/effect/spawner/random/trash/garbage, @@ -104876,6 +104968,7 @@ dir = 4 }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/xenobiology/control) "uqt" = ( @@ -104953,7 +105046,7 @@ req_access = list("security") }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "uqL" = ( /obj/structure/closet/crate/bin, /obj/machinery/light_switch/directional/west, @@ -105217,7 +105310,7 @@ pixel_y = 1 }, /turf/open/floor/iron/white, -/area/station/security/prison) +/area/station/security/execution/transfer) "utD" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 10 @@ -105326,7 +105419,7 @@ /obj/structure/closet/mini_fridge, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "uut" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -105385,7 +105478,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "uve" = ( /obj/effect/turf_decal/stripes{ dir = 10 @@ -105537,7 +105630,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "uwH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -105553,7 +105646,7 @@ /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/security/execution/transfer) +/area/station/security/prison/upper) "uwO" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -105817,7 +105910,7 @@ dir = 10 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "uzi" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -105851,6 +105944,7 @@ name = "Secure Pen" }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/engine, /area/station/science/xenobiology) "uzz" = ( @@ -105872,6 +105966,11 @@ "uzK" = ( /turf/closed/wall, /area/station/medical/medbay/central) +"uzN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/security/prison/upper) "uzV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -106220,7 +106319,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "uDb" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, @@ -106389,7 +106488,7 @@ }, /obj/structure/railing, /turf/closed/wall, -/area/station/security/prison/upper) +/area/station/security/bitden) "uEV" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -107353,6 +107452,22 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/iron/dark, /area/station/maintenance/thruster_room/central) +"uPT" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/structure/table/reinforced/rglass, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/roller, +/obj/item/clothing/neck/stethoscope, +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/security/medical) "uPU" = ( /obj/effect/turf_decal/stripes/end{ dir = 8 @@ -107948,7 +108063,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "uVm" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -108301,6 +108416,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/science/auxlab/firing_range) +"uYO" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Security Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/security/medical) "uYQ" = ( /obj/structure/closet/athletic_mixed, /obj/effect/turf_decal/bot, @@ -108450,7 +108574,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "vaK" = ( /obj/structure/closet/secure_closet/security, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -108515,7 +108639,7 @@ /obj/structure/cable, /obj/machinery/duct, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "vbj" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 8 @@ -108682,7 +108806,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "vdT" = ( /obj/structure/reflector/box, /turf/open/floor/plating, @@ -109069,7 +109193,7 @@ "vhs" = ( /obj/effect/spawner/random/trash/moisture_trap, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "vhv" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 @@ -110769,7 +110893,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "vxk" = ( /obj/structure/rack/shelf, /obj/item/radio/intercom/directional/north, @@ -111258,7 +111382,7 @@ /turf/open/floor/iron/dark/side{ dir = 6 }, -/area/station/security/prison/upper) +/area/station/security/prison) "vAT" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -111303,7 +111427,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "vBs" = ( /obj/effect/turf_decal/tile/red, /obj/structure/cable, @@ -111372,7 +111496,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, -/area/station/security/prison) +/area/station/security/execution/transfer) "vCp" = ( /obj/item/kirbyplants/random, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -111399,7 +111523,7 @@ }, /obj/structure/cable, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "vCM" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4; @@ -111486,7 +111610,7 @@ "vDP" = ( /obj/structure/chair/sofa/bench/left, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "vDR" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -111659,7 +111783,7 @@ /obj/structure/decorative/shelf/crates1, /obj/machinery/light/directional/south, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "vFr" = ( /obj/machinery/light/floor/has_bulb, /turf/open/floor/iron, @@ -111735,7 +111859,7 @@ "vGh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible/layer4, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "vGm" = ( /obj/structure/toilet{ pixel_y = 10 @@ -111980,7 +112104,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "vIm" = ( /obj/structure/chair{ dir = 4 @@ -112106,7 +112230,7 @@ "vJe" = ( /obj/structure/curtain/bounty, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "vJi" = ( /obj/effect/decal/cleanable/blood/old, /obj/effect/mapping_helpers/burnt_floor, @@ -112526,7 +112650,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "vNd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -112559,7 +112683,7 @@ /obj/machinery/prisongate, /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "vNm" = ( /obj/machinery/door/airlock/maintenance, /obj/structure/cable, @@ -112980,6 +113104,23 @@ }, /turf/open/floor/iron, /area/station/science/ordnance) +"vSg" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 4 + }, +/obj/machinery/camera/directional/north{ + c_tag = "Security - Medbay" + }, +/obj/structure/bodycontainer/morgue{ + dir = 2 + }, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/security/medical) "vSn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -113406,7 +113547,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, /turf/open/floor/iron, -/area/station/security/prison/upper) +/area/station/security/prison) "vWp" = ( /obj/item/trash/syndi_cakes, /obj/structure/cable, @@ -113537,7 +113678,7 @@ /obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/security/prison/upper) +/area/station/security/prison) "vYi" = ( /obj/structure/cable, /obj/machinery/power/emitter{ @@ -113624,7 +113765,7 @@ /obj/effect/spawner/random/trash/mess, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "vZv" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -113720,10 +113861,6 @@ /obj/effect/turf_decal/bot, /obj/structure/cable, /obj/machinery/disease2/centrifuge, -/obj/item/reagent_containers/cup/beaker/vial, -/obj/item/reagent_containers/cup/beaker/vial, -/obj/item/reagent_containers/cup/beaker/vial, -/obj/item/reagent_containers/cup/beaker/vial, /turf/open/floor/iron, /area/station/medical/virology) "wax" = ( @@ -114092,7 +114229,7 @@ req_access = list("security") }, /turf/open/floor/iron/dark, -/area/station/security/prison/upper) +/area/station/security/prison) "wdE" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -114758,7 +114895,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "wjj" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/carpet, @@ -114770,7 +114907,7 @@ /obj/structure/cable, /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark/side, -/area/station/security/prison) +/area/station/security/execution/transfer) "wjw" = ( /obj/structure/cable, /obj/structure/sign/warning/vacuum/directional/west, @@ -115150,6 +115287,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) "wmV" = ( @@ -115662,7 +115800,7 @@ }, /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, -/area/station/security/prison/upper) +/area/station/security/prison) "wsh" = ( /obj/item/kirbyplants/random, /obj/effect/mapping_helpers/broken_floor, @@ -115729,7 +115867,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "wsF" = ( /obj/structure/grille/broken, /turf/open/floor/plating, @@ -115975,7 +116113,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "wuF" = ( /obj/effect/decal/cleanable/dirt, /obj/item/clothing/under/rank/cargo/miner, @@ -116200,7 +116338,7 @@ /obj/structure/railing, /obj/effect/spawner/random/trash/graffiti, /turf/closed/wall/rust, -/area/station/security/prison/upper) +/area/station/security/bitden) "wxI" = ( /obj/structure/chair/office{ dir = 1 @@ -116868,7 +117006,7 @@ /turf/open/floor/iron/dark/side{ dir = 4 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "wDj" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 5 @@ -117041,7 +117179,7 @@ /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/execution/transfer) "wEM" = ( /obj/machinery/power/shuttle_engine/heater{ dir = 8 @@ -117303,6 +117441,9 @@ "wHI" = ( /turf/closed/wall, /area/station/maintenance/central) +"wHR" = ( +/turf/open/floor/iron/dark, +/area/station/security/prison/upper) "wHW" = ( /obj/machinery/status_display/ai/directional/north, /obj/structure/cable, @@ -117441,7 +117582,7 @@ }, /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "wJj" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -117482,22 +117623,10 @@ /turf/open/floor/carpet, /area/station/science/ordnance/office) "wJB" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/machinery/firealarm/directional/east, -/obj/machinery/light_switch/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/table/glass, -/obj/item/stack/medical/mesh{ - pixel_x = -6 - }, -/obj/item/healthanalyzer/simple{ - pixel_y = 8 - }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/siding/dark_red, +/obj/machinery/defibrillator_mount/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, /area/station/security/medical) "wJQ" = ( /obj/structure/chair/office{ @@ -117938,7 +118067,7 @@ /obj/effect/turf_decal/stripes, /obj/structure/cable, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "wOR" = ( /obj/structure/cable, /obj/machinery/door/airlock/maintenance_hatch{ @@ -118341,7 +118470,7 @@ pixel_y = 30 }, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "wSn" = ( /obj/structure/closet{ name = "security locker" @@ -118671,7 +118800,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "wWk" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/machinery/airalarm/directional/south, @@ -118970,7 +119099,7 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "wZt" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -119028,17 +119157,14 @@ /turf/open/floor/iron/white/telecomms, /area/station/tcommsat/server) "wZT" = ( -/obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ - dir = 4 - }, -/obj/machinery/button/door/directional/east{ - name = "Security Mech Garage Door Controls"; - id = "SecMech"; - req_access = list("security") - }, -/obj/machinery/recharge_station, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) +/obj/effect/turf_decal/stripes/end, +/obj/machinery/shower/directional/south, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/item/reagent_containers/blood, +/obj/machinery/iv_drip, +/turf/open/floor/iron/white/textured, +/area/station/security/medical) "wZW" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue/half/contrasted{ @@ -119943,7 +120069,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "xko" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -120613,7 +120739,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/station/security/prison/upper) +/area/station/security/prison) "xrI" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 @@ -120856,7 +120982,7 @@ /obj/structure/table/reinforced/rglass, /obj/structure/cable, /turf/open/floor/iron/white, -/area/station/security/prison/upper) +/area/station/security/prison) "xtI" = ( /obj/structure/flora/tree/jungle/small, /turf/open/floor/grass, @@ -121053,7 +121179,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "xuX" = ( /obj/machinery/computer/shuttle/mining, /obj/effect/turf_decal/tile/brown, @@ -121113,7 +121239,7 @@ /turf/open/floor/iron/dark/side{ dir = 9 }, -/area/station/security/prison/upper) +/area/station/security/prison) "xvy" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -121280,7 +121406,7 @@ dir = 1 }, /turf/open/floor/iron/white, -/area/station/security/prison/upper) +/area/station/security/prison) "xxH" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -121443,7 +121569,7 @@ /turf/open/floor/iron/stairs/left{ dir = 8 }, -/area/station/security/prison/upper) +/area/station/security/prison) "xzG" = ( /obj/effect/landmark/start/medical_doctor, /obj/effect/turf_decal/trimline/blue/filled/warning{ @@ -121552,7 +121678,7 @@ /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/security/prison) +/area/station/security/execution/transfer) "xAU" = ( /obj/effect/turf_decal/stripes, /obj/machinery/light/directional/south, @@ -122302,7 +122428,7 @@ "xIb" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/bitden) "xIf" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/computer/shuttle/mining/common{ @@ -122802,7 +122928,7 @@ /obj/effect/turf_decal/bot_white, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "xNy" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/liquids_spawner, @@ -123260,6 +123386,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/maintenance/abandon_office) +"xTd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/r_wall, +/area/station/security/medical) "xTh" = ( /obj/effect/spawner/random/trash/mess, /obj/structure/cable, @@ -123771,7 +123901,7 @@ }, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/security/prison/upper) "xYm" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -124518,7 +124648,7 @@ dir = 8 }, /turf/open/floor/iron/white, -/area/station/security/prison) +/area/station/security/execution/transfer) "yeC" = ( /obj/structure/table, /obj/effect/turf_decal/stripes/line{ @@ -124986,7 +125116,7 @@ /obj/structure/cable, /obj/machinery/duct, /turf/open/floor/iron/dark/small, -/area/station/security/prison/upper) +/area/station/security/prison) "yiA" = ( /obj/machinery/computer/slot_machine, /turf/open/floor/plating, @@ -125197,6 +125327,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"ykO" = ( +/obj/item/stack/sheet/cardboard, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "ykR" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, @@ -125304,7 +125441,7 @@ /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/security/prison/upper) +/area/station/security/prison) "ymf" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -146185,14 +146322,14 @@ egv iKs iKs iKs -mjE -mjE -mjE -mjE -mjE -mjE +rkk +rkk +rkk +rkk +rkk +rkk gLI -mjE +rkk ltN cDn cDn @@ -146442,14 +146579,14 @@ iKs iKs fZI exN -mjE +rkk bba hLH -euE +wHR bba hHM chC -mjE +rkk ltN ltN fNe @@ -146699,14 +146836,14 @@ bsG bsG fZI sJq -mjE -euE +rkk +wHR inc rUv -euE +wHR hLH chC -mjE +rkk ylg frJ uWm @@ -146955,21 +147092,21 @@ fZI fZI bsG bsG -mjE -mjE +rkk +rkk iIe iIe iIe iIe iIe moF -mjE -mjE -mjE -mjE -mjE -mjE -mjE +rkk +rkk +rkk +rkk +rkk +rkk +rkk bbm aXM ltX @@ -147214,18 +147351,18 @@ fZI fZI bng rfs -euE -euE -euE -euE -euE +wHR +wHR +wHR +wHR +wHR iHC iRJ skk -euE +wHR hce sAN -euE +wHR gKk bbm dfX @@ -147470,20 +147607,20 @@ fZI fZI fZI bng -euE +wHR faw -euE -euE +wHR +wHR cQf -euE +wHR iHC -euE -euE -euE -euE +wHR +wHR +wHR +wHR sAN -euE -euE +wHR +wHR bbm jVT cBY @@ -147727,11 +147864,11 @@ fZI fZI fZI bng -euE -euE -euE +wHR +wHR +wHR qdQ -euE +wHR eTL iHC xNm @@ -147984,19 +148121,19 @@ fZI fZI fZI bng -euE -euE +wHR +wHR inc -euE -euE -euE -euE -euE +wHR +wHR +wHR +wHR +wHR fri wSj -euE +wHR sAN -euE +wHR iHC bbm oRy @@ -148242,18 +148379,18 @@ fZI fZI bng qxT -euE -euE -euE +wHR +wHR +wHR faw -euE -euE +wHR +wHR nOQ -euE -euE +wHR +wHR cgu sAN -euE +wHR iHC bbm bbm @@ -148496,8 +148633,8 @@ fZI fZI fZI fZI -mjE -mjE +rkk +rkk kzx doG doG @@ -148505,9 +148642,9 @@ eTH iNB feJ faw -mhN +jPf bdt -mhN +jPf hZI hZI jLj @@ -148517,7 +148654,7 @@ grX vFo hZI mfh -mjE +rkk cXk rYT mWp @@ -148755,25 +148892,25 @@ fZI fZI oql rGh -jHK +dwh aIF iFX smY ejd doG doG -mhN +jPf ciS wOH odg dVC iHC glU -euE -euE -euE +wHR +wHR +wHR rme -euE +wHR iQb tcI mzK @@ -149012,25 +149149,25 @@ fZI fZI oql qIZ -jHK +dwh miw sRx mIY ejd msT msT -mhN +jPf rdz ixK uqK hZI mfE glU -euE -euE -euE +wHR +wHR +wHR rme -euE +wHR iQb tcI ctM @@ -149267,18 +149404,18 @@ fZI fZI fZI fZI -mjE -mjE +rkk +rkk occ msT msT wWj lMz jpA -euE -mhN +wHR +jPf mHe -mhN +jPf hZI hZI aSL @@ -149288,7 +149425,7 @@ lgZ ewk hZI sGa -mjE +rkk wMc rYT xyx @@ -149527,25 +149664,25 @@ fZI fZI cHs rfs -euE -euE -euE -euE +wHR +wHR +wHR +wHR oyI -euE -euE -euE -euE +wHR +wHR +wHR +wHR hce mKJ -euE +wHR sBh -mhN -mhN -mhN +jPf +jPf +jPf hZI hZI -mjE +rkk rKn pEk mWp @@ -149783,26 +149920,26 @@ fZI fZI fZI cHs -euE +wHR faw -euE -euE -euE +wHR +wHR +wHR oyI inc -euE -euE -euE -euE +wHR +wHR +wHR +wHR mKJ -euE +wHR sBh -mhN +jPf jYd dQz lWM uzh -mjE +rkk iNU rYT rtp @@ -150040,26 +150177,26 @@ fZI fZI fZI cHs -euE -euE -euE +wHR +wHR +wHR qdQ -euE +wHR uwI -euE +wHR qdQ -euE -euE +wHR +wHR inc mKJ -euE +wHR sHr hZI oih ghV gly ulK -mjE +rkk qaa rYT eKa @@ -150297,26 +150434,26 @@ fZI fZI fZI cHs -euE -euE -euE -euE +wHR +wHR +wHR +wHR inc oyI -euE +wHR faw -euE -euE -euE +wHR +wHR +wHR mKJ -euE +wHR bYs kKk -jHK +dwh fvF oWD dnO -mjE +rkk rYi rYT rKn @@ -150555,28 +150692,28 @@ fZI fZI cHs qxT -euE +wHR piH -euE -euE +wHR +wHR oyI -euE +wHR kWs piH -euE +wHR cgu mKJ -euE +wHR sBh hZI aSZ reQ eKF gPp -mjE +rkk ofH -laf -hXY +pyk +eBw etj rKn xrJ @@ -150810,9 +150947,9 @@ fZI fZI mcS hQc -mjE +rkk hZI -mhN +jPf hZI uuZ hZI @@ -150820,19 +150957,19 @@ bsN hZI qrh hZI -mhN +jPf hZI hZI inl cyc hZI -mjE +rkk pSi pSi pSi -mjE -wVz -rYT +rkk +low +kxG rKn rKn rKn @@ -151072,9 +151209,9 @@ ebG dwK mgt iHC -mhN -vUC -mhN +jPf +pub +jPf iHC xYh aHZ @@ -151083,18 +151220,18 @@ qBh phD aCT vMY -mjE -mhN -mhN -mhN -mjE -laf +rkk +jPf +jPf +jPf +rkk +pyk dAg -hXY -mjK -kbf -eKa -eKa +eBw +gci +kif +eBw +eBw tNz bop dTy @@ -151329,9 +151466,9 @@ ebG vDP peU iCC -mhN -yfU -mhN +jPf +bRo +jPf fJP hZI gAV @@ -151340,7 +151477,7 @@ pBb oDh kow pps -mhN +jPf xVt cFu poD @@ -151348,13 +151485,13 @@ hGf pRF fAy rKn -rKn -kif -tPT -ufv -tNz -wZT -bAo +bii +bii +bii +uYO +bii +cZT +qiF bAo bAo lHT @@ -151589,7 +151726,7 @@ hZI hZI nJe hZI -mhN +jPf hZI osb hZI @@ -151597,19 +151734,19 @@ pPF oBL hxO tMz -mjE +rkk cYq saz nnK hGf -rYT -mjK -wMc -rKn -tNz -tNz +kxG +gci +thg +bii +wZT +fbj cue -tNz +uPT cZT hAz nDO @@ -151841,29 +151978,29 @@ uLe fDq ebG iRb -xJs +uzN jMz sIh -vUC +pub hZI uda wJg cFI -mhN +jPf phD kYo lMR oUI -mjE +rkk dsA nwj pAF hGf rYT -wno -kbf -thg -tNz +ykO +piO +bii +vSg kcW cAi bVB @@ -152100,18 +152237,18 @@ lzN akv qby jvQ -qnt +mkp jvQ iuT jvQ -qnt +mkp xuV bPE aCT hef rdj srD -mhN +jPf cYq nwj nnK @@ -152119,8 +152256,8 @@ hGf rYT kbf cXk -kbf -tNz +xTd +lSN piE sAv sTA @@ -152354,8 +152491,8 @@ hjL lhI iuU mcS -mjE -mjE +rkk +rkk rIX rnl bUp @@ -152363,7 +152500,7 @@ hZI obJ eLF fgg -mhN +jPf fHM qlC qlC @@ -152375,9 +152512,9 @@ nnK hGf uTp hGf -hGf nLa -hGf +bii +bSH wJB aiV ewr @@ -152611,30 +152748,30 @@ mcS ptx bbi nZp -mjE -mjE -mjE -mjE -mjE -mjE -mjE -mjE -mjE -mjE -mjE -mjE -mjE -mjE -mjE +rkk +rkk +rkk +rkk +rkk +rkk +rkk +rkk +rkk +rkk +rkk +rkk +rkk +rkk +rkk kts lTN nnK hGf mZP hGf -piO cyK -hGf +bii +bii bii bii bii @@ -161113,11 +161250,11 @@ cLU bIr caW lWh -fBz +mjE etR ewH jYm -fBz +mjE guH koJ iLK @@ -161370,22 +161507,22 @@ cLU cLU cLU qlm -fBz +mjE qGZ -nCt +euE vdS -fBz +mjE iLK iLK iLK tGg gZf tGg -fBz +mjE rlG -fBz -fBz -fBz +mjE +mjE +mjE ltC jte jte @@ -161632,17 +161769,17 @@ rZC spR mzV vxj -ssh -dDf -chV +mkH +jwD +mhN plQ qHK pVI -chV +mhN nhb ukA nMV -fBz +mjE iwe ogh ixJ @@ -161883,23 +162020,23 @@ ciT jfR rVN lBj -mHx -mHx -mHx +yfU +yfU +yfU cLP -juD +qnt mYn eWy rZz hZz mgu -rSs +kkF pUq -chV +mhN kas bvl qNF -fBz +mjE wJa oNH oUt @@ -162148,15 +162285,15 @@ dnD ouK ilY tlT -chV +mhN tMc tax aoI -chV +mhN kas qwc ltK -fBz +mjE mne qzO qzO @@ -162401,19 +162538,19 @@ cwO eKU eKU eKU -fBz -fBz -fBz -fBz -fBz -chV +mjE +mjE +mjE +mjE +mjE +mhN pai -chV -fBz +mhN +mjE vCl yez rbJ -fBz +mjE jId erj cHP @@ -162659,18 +162796,18 @@ knV eoX eKU sMb -fBz +mjE jSV jSV hbD cuh rhp oiU -fBz +mjE ePN nCO joM -fBz +mjE jte wJl jte @@ -162918,16 +163055,16 @@ eKU fRu vJe uVj -lmI -lmI -lmI -mHx -mHx +jHK +jHK +jHK +yfU +yfU ojW udR utC lfI -fBz +mjE qjr sCM qlI @@ -163172,19 +163309,19 @@ keD sHg ojn eKU -fBz -fBz +mjE +mjE qpU sWd wEJ fPm -rSs +kkF boS -fBz -fBz -fBz -fBz -fBz +mjE +mjE +mjE +mjE +mjE gaz xgN hEu @@ -163430,18 +163567,18 @@ jTj jZN eKU sMb -fBz +mjE nCJ nCJ qRV biV -rSs +kkF wjv -fBz +mjE cpw xkm jXV -fBz +mjE pxu hEu rES @@ -163689,16 +163826,16 @@ eKU fRu vJe uVj -lmI -lmI -dUF -mHx -mHx +jHK +jHK +vUC +yfU +yfU pir -jxr +xJs tNa tSR -fBz +mjE mrV vGn dVy @@ -163943,19 +164080,19 @@ qvK wbc hCX eKU -fBz -fBz +mjE +mjE jSV jSV hbD eMK qUg qdm -fBz +mjE joC fbS uwC -fBz +mjE qgy hEu kqd @@ -164206,9 +164343,9 @@ fLW fLW fLW bxW -chV +mhN vNi -fBz +mjE cIP cIP cIP @@ -164464,8 +164601,8 @@ mVi fLW cdU xAL -rFW -fBz +psC +mjE qHR tVI jqr @@ -164719,10 +164856,10 @@ wos sCo ybd fLW -bQp +bvP pSF -gSL -fBz +rwY +mjE kXG jPh tVI @@ -164977,9 +165114,9 @@ upE lwp fLW bxW -chV +mhN vNi -fBz +mjE jxo jxo jxo @@ -165235,7 +165372,7 @@ kIH lkS icN wjd -sYB +rFW hmu aYN eEq @@ -165474,7 +165611,7 @@ hwT xUM tKm nUH -jcg +nCt hZE bpN fIr @@ -165490,9 +165627,9 @@ lIC jYJ kIH lkS -qgb +bQp sof -gXf +gSL hmu aYN qUa @@ -165731,7 +165868,7 @@ wVn hss aef nUH -jcg +nCt hZE luD dmS @@ -165750,8 +165887,8 @@ fLW tcM nVB pWT -lSv -lSv +fBz +fBz sqS fsn aor @@ -165988,13 +166125,13 @@ dJp nPa tKm xvo -eir -eir -eir -eir -eir -eir -rcw +ssh +ssh +ssh +ssh +ssh +ssh +dDf wsg aqa jUN @@ -166245,11 +166382,11 @@ tKm tKm tKm rFh -mfN -eIU -eIU -eIU -eIU +lmI +rSs +rSs +rSs +rSs vWk iEp pWk @@ -166756,8 +166893,8 @@ oAZ siV tKm jfW -lWC -lWC +cIP +cIP vYb jaK jGp @@ -166778,8 +166915,8 @@ vwF xzF pWV eLK -lSv -lSv +fBz +fBz noo dyM tex @@ -167013,7 +167150,7 @@ tKm tKm tKm mJa -lWC +cIP raG nTK aVv @@ -167268,9 +167405,9 @@ tfU jnr mZZ fnG -lWC +cIP mJa -lWC +cIP fKw nOf qMm @@ -167527,7 +167664,7 @@ vGh knn wZr eXo -lWC +cIP ffG hVk iDH @@ -167782,11 +167919,11 @@ tfU ftI rfQ fnG -lWC +cIP nBh -lWC +cIP ezQ -mfN +lmI oav jGp aWj @@ -168030,20 +168167,20 @@ tfU tfU iMF poM -lWC -lWC +cIP +cIP tfE tfE -lWC -lSv -lSv -lWC -lWC -lWC +cIP +fBz +fBz +cIP +cIP +cIP nBh -lWC +cIP agZ -mfN +lmI orl jGp gjv @@ -168289,19 +168426,19 @@ qXA poM dsi gim -lWC +cIP pXp nTp jtO -lSv +fBz glJ bkC -lWC +cIP nBh -lWC -lWC +cIP +cIP sCh -lWC +cIP jGp rBW pTR @@ -168575,7 +168712,7 @@ eoQ lXr eoQ eoQ -lSv +fBz rtc ehq eXH @@ -168800,20 +168937,20 @@ fZI fZI rKP sjE -tfE +rIe raI lWC sAH dtw dBh qoJ -lSv +fBz aFg nnc -lWC +cIP rqq dzS -lWC +cIP dzS vhs jGp @@ -168832,7 +168969,7 @@ fYU fYU qkw xxz -lSv +fBz ajA mNQ fhf @@ -169064,13 +169201,13 @@ bGT tWh jNq jZy -lSv -lSv -lSv -lSv -qPi -qPi -lSv +fBz +fBz +fBz +fBz +chV +chV +fBz gBc xrF mln @@ -169089,7 +169226,7 @@ rVz xtG rVz rVz -lSv +fBz dOm eLD lWF @@ -169321,15 +169458,15 @@ kxy hmu hmu hmu -lSv +fBz fZI fZI fZI fZI fZI -lSv -qPi -qPi +fBz +chV +chV mln soz soz @@ -169337,16 +169474,16 @@ soz soz soz mln -qPi -qPi -qPi -lSv -lSv -qPi -qPi -qPi -lSv -lSv +chV +chV +chV +fBz +fBz +chV +chV +chV +fBz +fBz wLC wLC wLC diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 8cdb0345d224..b72b0be9d248 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -4589,7 +4589,15 @@ }, /obj/machinery/camera/autoname/directional/west, /obj/machinery/light_switch/directional/west, -/obj/structure/closet/secure_closet/brig, +/obj/structure/rack, +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/item/storage/medkit/regular{ + pixel_y = 3 + }, +/obj/item/storage/box/bodybags, /turf/open/floor/iron/white, /area/station/security/medical) "bBO" = ( @@ -4616,8 +4624,6 @@ /obj/effect/turf_decal/stripes/end, /obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/shower/directional/south, -/obj/machinery/iv_drip, -/obj/item/reagent_containers/blood, /turf/open/floor/iron/white/textured, /area/station/security/medical) "bCg" = ( @@ -9113,6 +9119,7 @@ name = "Test Chamber"; req_access = list("xenobiology") }, +/obj/structure/liquid_barrier, /turf/open/floor/engine, /area/station/science/xenobiology) "cYN" = ( @@ -11205,17 +11212,16 @@ dir = 9 }, /obj/machinery/airalarm/directional/north, -/obj/structure/table/glass, /obj/structure/extinguisher_cabinet/directional/west, -/obj/item/storage/medkit/regular{ - pixel_y = 3 - }, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 7 +/obj/structure/table/reinforced/rglass, +/obj/item/reagent_containers/syringe{ + name = "steel point" }, -/obj/item/clothing/gloves/latex, /obj/item/clothing/mask/surgical, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/item/reagent_containers/cup/bottle/multiver, +/obj/item/clothing/neck/stethoscope, +/obj/item/clothing/gloves/latex, /obj/item/reagent_containers/spray/cleaner, /turf/open/floor/iron/white, /area/station/security/medical) @@ -17458,6 +17464,7 @@ /obj/structure/cable, /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "fSM" = ( @@ -24392,9 +24399,8 @@ /turf/open/floor/plating, /area/station/maintenance/department/engine) "iiQ" = ( -/obj/structure/chair{ - dir = 1 - }, +/obj/structure/chair/office, +/obj/effect/landmark/start/brig_physician, /turf/open/floor/iron/white, /area/station/security/medical) "ija" = ( @@ -27576,6 +27582,7 @@ /obj/structure/cable, /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "jhq" = ( @@ -30875,6 +30882,7 @@ /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/science/xenobio, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/liquid_barrier, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "knX" = ( @@ -32337,6 +32345,7 @@ /obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/liquid_barrier, /turf/open/floor/iron/white/textured, /area/station/science/xenobiology/hallway) "kNJ" = ( @@ -33437,7 +33446,7 @@ dir = 1 }, /obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/table/glass, +/obj/structure/table/reinforced/rglass, /obj/item/paper_bin{ pixel_y = 6 }, @@ -33449,6 +33458,7 @@ pixel_y = 2 }, /obj/item/pen, +/obj/item/roller, /turf/open/floor/iron/white, /area/station/security/medical) "lfg" = ( @@ -37883,6 +37893,9 @@ /area/station/hallway/primary/aft) "mFi" = ( /obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/defibrillator_mount/directional/south, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/blood, /turf/open/floor/iron/white, /area/station/security/medical) "mFK" = ( @@ -45929,6 +45942,7 @@ name = "Cytology Pen" }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/engine, /area/station/science/xenobiology) "poG" = ( @@ -47108,6 +47122,7 @@ normalspeed = 0 }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/iron/freezer, /area/station/science/xenobiology) "pHr" = ( @@ -48863,16 +48878,8 @@ dir = 8 }, /obj/machinery/light/directional/west, -/obj/structure/table/glass, -/obj/item/storage/box/bodybags, -/obj/item/reagent_containers/syringe{ - name = "steel point" - }, -/obj/item/reagent_containers/cup/bottle/epinephrine, -/obj/item/reagent_containers/cup/bottle/multiver, -/obj/item/storage/backpack/duffelbag/sec/surgery, -/obj/item/clothing/neck/stethoscope, -/obj/machinery/defibrillator_mount/directional/west, +/obj/structure/closet/secure_closet/brig_physician, +/obj/item/clothing/suit/jacket/straight_jacket, /turf/open/floor/iron/white, /area/station/security/medical) "qpi" = ( @@ -61798,6 +61805,7 @@ /obj/effect/mapping_helpers/airlock/access/any/science/xenobio, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/liquid_barrier, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "uJk" = ( @@ -63387,6 +63395,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/liquid_barrier, /turf/open/floor/iron/white/textured, /area/station/science/xenobiology/hallway) "vho" = ( @@ -69752,7 +69761,7 @@ dir = 1 }, /obj/item/radio/intercom/directional/north, -/obj/structure/table/glass, +/obj/structure/table/reinforced/rglass, /obj/machinery/computer/records/medical/laptop, /turf/open/floor/iron/white, /area/station/security/medical) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 34e143d7eab3..3d7fbcb2dd1c 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -417,20 +417,6 @@ }, /turf/open/floor/circuit, /area/station/science/research/abandoned) -"aeY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Security Maintenance" - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron, -/area/station/security/brig) "aff" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/reinforced, @@ -1492,15 +1478,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) -"aqC" = ( -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/hot_pink/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/herringbone, -/area/station/security/prison) "aqD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1802,16 +1779,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"atb" = ( -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/hot_pink/filled/line{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark/herringbone, -/area/station/security/prison) "ath" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/cable, @@ -1927,16 +1894,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/atmos/hfr_room) -"auu" = ( -/obj/structure/table/glass, -/obj/machinery/camera/directional/north{ - c_tag = "Security - Medbay" - }, -/obj/machinery/computer/records/medical/laptop, -/obj/machinery/status_display/ai/directional/north, -/obj/effect/turf_decal/siding/dark_red, -/turf/open/floor/iron/dark, -/area/station/security/medical) "aux" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/cyborg, @@ -2352,6 +2309,13 @@ /obj/effect/turf_decal/trimline/blue/filled/line, /turf/open/floor/iron/white, /area/station/medical/medbay) +"azu" = ( +/obj/effect/turf_decal/tile/hot_pink/anticorner/contrasted{ + dir = 1 + }, +/obj/item/training_toolbox, +/turf/open/floor/iron/dark/textured, +/area/station/security/prison/workout) "azy" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -2397,6 +2361,20 @@ }, /turf/open/floor/iron, /area/station/security/processing) +"aAg" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 8 + }, +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/siding/dark_red, +/obj/machinery/duct, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/security/medical) "aAh" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4042,6 +4020,15 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/science/research) +"aUM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/office) "aUN" = ( /obj/structure/lattice/catwalk, /obj/item/toy/plush/space_lizard_plushie{ @@ -4728,6 +4715,13 @@ }, /turf/open/floor/iron, /area/station/cargo/quartermaster) +"bdH" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "bdI" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 @@ -5492,33 +5486,6 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/space, /area/space/nearstation) -"bmR" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/structure/rack, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -6 - }, -/obj/item/book/manual/wiki/infections, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/syringe/antiviral, -/obj/item/reagent_containers/syringe/antiviral, -/obj/item/reagent_containers/cup/tube, -/obj/item/reagent_containers/cup/tube, -/obj/item/reagent_containers/cup/tube, -/obj/item/reagent_containers/cup/tube, -/obj/item/reagent_containers/cup/tube, -/obj/item/reagent_containers/cup/tube, -/obj/item/reagent_containers/cup/tube, -/obj/item/reagent_containers/cup/tube, -/obj/item/reagent_containers/cup/tube, -/obj/item/reagent_containers/cup/tube, -/obj/item/storage/box/monkeycubes/mousecubes, -/obj/item/storage/box/monkeycubes/mousecubes, -/obj/item/storage/box/monkeycubes/mousecubes, -/turf/open/floor/iron/white, -/area/station/medical/pathology) "bmU" = ( /obj/machinery/door/airlock/external{ name = "External Docking Port" @@ -5794,17 +5761,6 @@ }, /turf/open/floor/iron/dark, /area/station/service/hydroponics) -"bqE" = ( -/obj/structure/rack, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/item/assembly/flash/handheld, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/reagent_dispensers/wall/peppertank/directional/south, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) "bqF" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -5871,6 +5827,17 @@ "brb" = ( /turf/closed/wall, /area/station/service/chapel/funeral) +"brc" = ( +/obj/effect/turf_decal/trimline/hot_pink/filled/line{ + dir = 4 + }, +/obj/structure/chair/sofa/bench{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 4 + }, +/area/station/security/prison/workout) "brl" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -6366,6 +6333,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/science/xenobio, /obj/structure/cable, +/obj/structure/liquid_barrier, /turf/open/floor/iron, /area/station/science/xenobiology) "bxp" = ( @@ -7503,16 +7471,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"bJC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/security) "bJE" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/effect/spawner/random/structure/steam_vent, @@ -9219,6 +9177,14 @@ "cdt" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/ai_upload) +"cdv" = ( +/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, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "cdB" = ( /obj/structure/chair/sofa/bench/right{ dir = 1 @@ -9410,6 +9376,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"cgA" = ( +/obj/effect/turf_decal/trimline/hot_pink/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/station/security/prison/workout) "cgH" = ( /obj/structure/table/wood/fancy, /obj/item/reagent_containers/cup/glass/bottle/holywater, @@ -9851,24 +9823,6 @@ }, /turf/open/floor/iron/dark/corner, /area/station/maintenance/disposal/incinerator) -"clE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/department/security) "clG" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/effect/decal/cleanable/dirt, @@ -12158,25 +12112,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) -"cOE" = ( -/obj/machinery/door/airlock/security{ - name = "Brig" - }, -/obj/structure/disposalpipe/segment, -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_x = -32 - }, -/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/security/general, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/security/brig) "cOJ" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12422,13 +12357,6 @@ }, /turf/open/floor/iron, /area/station/engineering/main) -"cSb" = ( -/obj/effect/turf_decal/tile/hot_pink/anticorner/contrasted{ - dir = 1 - }, -/obj/item/training_toolbox, -/turf/open/floor/iron/dark/textured, -/area/station/security/prison/workout) "cSm" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -13118,13 +13046,6 @@ dir = 4 }, /area/station/security/prison/workout) -"dbw" = ( -/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/security/brig) "dbx" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -13261,26 +13182,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plating, /area/station/service/library/abandoned) -"ddp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/button/door/directional/north{ - id = "brigprison"; - name = "Prison Lockdown"; - req_access = list("brig_entrance") - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "dds" = ( /obj/machinery/camera/directional/east{ c_tag = "Virology - Break Room"; @@ -14105,6 +14006,25 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/atmos/project) +"dpB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch" + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/department/security) "dpI" = ( /obj/structure/table, /obj/item/clothing/gloves/latex, @@ -14125,6 +14045,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, +/obj/structure/liquid_barrier, /turf/open/floor/iron, /area/station/science/xenobiology) "dpQ" = ( @@ -14172,6 +14093,16 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"dqr" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/radio/intercom/directional/north, +/obj/machinery/light/small/red/directional/north, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "dqs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -14585,24 +14516,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port) -"dvh" = ( -/obj/structure/rack, -/obj/structure/cable, -/obj/item/storage/box/bodybags, -/obj/item/clothing/under/rank/medical/scrubs/purple, -/obj/item/clothing/under/rank/medical/scrubs/purple{ - pixel_x = 2; - pixel_y = 4 - }, -/obj/item/clothing/gloves/latex, -/obj/item/healthanalyzer, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/security/medical) "dvu" = ( /obj/machinery/door/airlock/engineering{ name = "Starboard Quarter Solar Access" @@ -14950,6 +14863,23 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/iron/dark/side, /area/station/security/prison/workout) +"dAU" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Security Office" + }, +/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/security/general, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/office) "dAX" = ( /obj/machinery/light/small/directional/west, /obj/structure/sign/poster/official/work_for_a_future{ @@ -15063,6 +14993,14 @@ /obj/structure/cable, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai_upload) +"dBU" = ( +/obj/structure/table/wood, +/obj/item/radio/intercom/prison, +/obj/item/storage/box/lights/mixed{ + pixel_x = 7 + }, +/turf/open/floor/carpet/black, +/area/station/security/prison/mess) "dCd" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -17559,6 +17497,20 @@ /obj/item/toy/figure/curator, /turf/open/floor/iron/dark, /area/station/service/library/printer) +"ehh" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/blood, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/security/medical) "ehj" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -19123,6 +19075,17 @@ }, /turf/open/floor/iron/white, /area/station/science/research) +"eAT" = ( +/obj/structure/cable, +/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, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "eAV" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -21063,6 +21026,19 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) +"eYB" = ( +/obj/item/kirbyplants/random, +/obj/structure/sign/warning/pods/directional/south{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "eYG" = ( /obj/machinery/shower/directional/west{ name = "emergency shower" @@ -22686,6 +22662,17 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/security/prison) +"fsb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/department/security) "fse" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -24571,6 +24558,15 @@ }, /turf/open/floor/carpet/green, /area/station/service/library) +"fPB" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/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, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "fPJ" = ( /obj/machinery/status_display/ai/directional/north, /obj/machinery/firealarm/directional/east, @@ -25685,6 +25681,25 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay) +"gdU" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/pen{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/storage/dice{ + pixel_y = 1; + pixel_x = -2 + }, +/obj/item/toy/plush/lizard_plushie{ + pixel_x = 7 + }, +/turf/open/floor/carpet/black, +/area/station/security/prison/mess) "gee" = ( /obj/structure/sign/painting/library{ pixel_y = -32 @@ -25937,6 +25952,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"ggk" = ( +/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/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "ggu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26091,18 +26114,6 @@ /obj/item/taperecorder, /turf/open/floor/iron/grimy, /area/station/command/bridge) -"giN" = ( -/obj/effect/turf_decal/trimline/hot_pink/filled/line{ - dir = 4 - }, -/obj/structure/sign/poster/random/directional/east, -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, -/area/station/security/prison/workout) "giP" = ( /obj/item/radio/intercom/prison/directional/east, /turf/open/floor/iron/showroomfloor, @@ -26316,17 +26327,6 @@ }, /turf/open/floor/iron, /area/station/cargo/quartermaster) -"gmr" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/structure/bed/roller, -/obj/machinery/iv_drip, -/obj/machinery/light/cold/directional/west, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white/corner, -/area/station/security/medical) "gms" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -26807,6 +26807,18 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"grh" = ( +/obj/structure/sink/directional/south{ + dir = 8; + pixel_x = 14; + pixel_y = 0 + }, +/obj/structure/mirror/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/ghost_critter_spawn, +/turf/open/floor/wood/parquet, +/area/station/security/prison/safe) "gri" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27695,6 +27707,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/side, /area/station/science/research) +"gBw" = ( +/obj/structure/cable, +/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, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "gBx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -27888,14 +27909,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"gDP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/turf/open/floor/iron, -/area/station/security/office) "gDS" = ( /obj/structure/sign/directions/supply{ dir = 4; @@ -28477,6 +28490,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) +"gKU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "gKW" = ( /obj/machinery/portable_atmospherics/canister, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -29072,14 +29092,6 @@ /obj/structure/flora/bush/grassy/style_random, /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) -"gTb" = ( -/obj/structure/cable, -/obj/machinery/holopad/secure, -/obj/effect/turf_decal/tile/neutral/full, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/large, -/area/station/security/brig) "gTc" = ( /obj/machinery/air_sensor/ordnance_burn_chamber, /turf/open/floor/engine/vacuum, @@ -29330,9 +29342,12 @@ }, /turf/open/floor/iron, /area/station/service/kitchen/abandoned) -"gWj" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +"gWc" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags, +/obj/item/pen, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 8 }, /turf/open/floor/iron, /area/station/security/execution/transfer) @@ -30040,6 +30055,17 @@ /obj/effect/turf_decal/trimline/neutral, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) +"hfi" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/directions/engineering{ + desc = "A sign that shows there are doors here. There are doors everywhere!"; + icon_state = "doors"; + name = "WARNING: BLAST DOORS"; + pixel_y = 32 + }, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "hfk" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 @@ -30215,6 +30241,15 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"hhq" = ( +/obj/structure/chair/sofa/bench{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/hot_pink/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/herringbone, +/area/station/security/prison) "hhB" = ( /obj/structure/table/reinforced, /obj/machinery/light/directional/east, @@ -30289,6 +30324,15 @@ }, /turf/open/floor/iron/white, /area/station/science/research) +"hit" = ( +/obj/structure/cable, +/obj/machinery/holopad/secure, +/obj/effect/turf_decal/tile/neutral/full, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/iron/large, +/area/station/security/brig) "hiy" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/newscaster/directional/east, @@ -30529,6 +30573,15 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/dark/smooth_large, /area/station/security/checkpoint/customs/aft) +"hlk" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/department/security) "hlv" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 @@ -30845,20 +30898,6 @@ }, /turf/open/floor/plating, /area/station/science/research/abandoned) -"hpe" = ( -/obj/structure/bodycontainer/morgue{ - dir = 2 - }, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/mid_joiner{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/security/medical) "hps" = ( /obj/structure/table/reinforced, /obj/item/clothing/shoes/magboots{ @@ -32508,6 +32547,17 @@ /obj/effect/turf_decal/bot_red, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) +"hMm" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/poddoor/preopen{ + id = "brigprison"; + name = "Prison Blast Door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "hMn" = ( /obj/machinery/mineral/stacking_unit_console{ pixel_x = 32 @@ -32777,18 +32827,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/cargo/office) -"hPx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/department/security) "hPJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ dir = 8 @@ -32819,14 +32857,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"hQn" = ( -/obj/structure/table, -/obj/item/restraints/handcuffs, -/obj/item/clothing/suit/armor/vest, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "hQq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -33343,6 +33373,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/aft) +"hWN" = ( +/obj/structure/table, +/obj/item/restraints/handcuffs, +/obj/item/clothing/suit/armor/vest, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "hWP" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -33667,6 +33705,12 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) +"iam" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "iao" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 @@ -35085,6 +35129,21 @@ "ipQ" = ( /turf/closed/wall, /area/station/command/bridge) +"ipW" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Infirmary" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/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, +/area/station/security/medical) "iqa" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /obj/machinery/airalarm/directional/east, @@ -36776,6 +36835,16 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron/dark, /area/station/command/bridge) +"iMh" = ( +/obj/effect/mapping_helpers/airalarm/engine_access, +/obj/machinery/incident_display/delam/directional/west, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Gas to Chamber" + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "iMp" = ( /obj/structure/cable, /obj/machinery/airalarm/directional/east, @@ -37699,15 +37768,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/storage/tech) -"iZc" = ( -/obj/structure/table, -/obj/item/storage/box/bodybags, -/obj/item/pen, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "iZf" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -38164,14 +38224,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/checkpoint/escape) -"jdx" = ( -/obj/machinery/door/poddoor/preopen{ - id = "brigprison"; - name = "Prison Blast Door" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plating, -/area/station/security/execution/transfer) "jdB" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/siding/yellow/corner{ @@ -38279,11 +38331,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/command/bridge) -"jeG" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/sign/warning/secure_area/directional/south, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "jeI" = ( /obj/structure/sign/nanotrasen{ pixel_x = -32; @@ -38811,11 +38858,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"jkw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/office) "jky" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/landmark/navigate_destination/research, @@ -38883,16 +38925,6 @@ /obj/structure/chair/stool/bar/directional/west, /turf/open/floor/iron/cafeteria, /area/station/service/cafeteria) -"jlb" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/landmark/start/prisoner, -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/floor/carpet/donk, -/area/station/security/prison/safe) "jll" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/bot, @@ -39994,25 +40026,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"jzs" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/pen{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/storage/dice{ - pixel_y = 1; - pixel_x = -2 - }, -/obj/item/toy/plush/lizard_plushie{ - pixel_x = 7 - }, -/turf/open/floor/carpet/black, -/area/station/security/prison/mess) "jzt" = ( /obj/structure/table/wood, /obj/item/paper_bin/construction, @@ -40456,12 +40469,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) -"jDB" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) "jDU" = ( /obj/effect/decal/cleanable/blood/old, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -41231,6 +41238,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"jNH" = ( +/obj/effect/turf_decal/siding/dark_red, +/turf/open/floor/iron/dark, +/area/station/security/medical) "jNM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -41385,15 +41396,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/main) -"jPR" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/full, -/turf/open/floor/iron/large, -/area/station/security/brig) "jPS" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced/tinted, @@ -41699,15 +41701,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) -"jSG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/start/hangover, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/incident_display/delam/directional/north, -/turf/open/floor/iron, -/area/station/engineering/break_room) "jSH" = ( /obj/structure/disposalpipe/junction{ dir = 1 @@ -42757,20 +42750,6 @@ /obj/item/ai_module/core/full/crewsimov, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"keC" = ( -/obj/structure/bodycontainer/morgue{ - dir = 2 - }, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/mid_joiner{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/security/medical) "keE" = ( /obj/structure/table/reinforced, /obj/item/plant_analyzer, @@ -43473,17 +43452,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"klV" = ( -/obj/effect/turf_decal/trimline/hot_pink/filled/line{ - dir = 4 - }, -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, -/area/station/security/prison/workout) "kmb" = ( /obj/structure/cable, /obj/machinery/computer/security{ @@ -43584,6 +43552,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"knL" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "knP" = ( /obj/structure/chair{ dir = 8 @@ -43615,6 +43590,12 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/department/science) +"koe" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "kol" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -43824,18 +43805,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/execution/transfer) -"krP" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/neutral/mid_joiner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark_red, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/security/medical) "krT" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -44325,17 +44294,6 @@ }, /turf/open/floor/iron, /area/station/commons/lounge) -"kyu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/directions/engineering{ - desc = "A sign that shows there are doors here. There are doors everywhere!"; - icon_state = "doors"; - name = "WARNING: BLAST DOORS"; - pixel_y = 32 - }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "kyx" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ @@ -44375,6 +44333,15 @@ /obj/structure/sign/warning/fire/directional/east, /turf/open/floor/iron, /area/station/engineering/main) +"kyK" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/full, +/obj/machinery/duct, +/turf/open/floor/iron/large, +/area/station/security/brig) "kyR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/blue, @@ -45239,12 +45206,6 @@ }, /turf/open/floor/carpet/blue, /area/station/service/library/lounge) -"kKa" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/brig) "kKf" = ( /obj/effect/turf_decal/bot, /obj/structure/closet/radiation, @@ -45438,6 +45399,15 @@ }, /turf/open/floor/iron, /area/station/security/processing) +"kMz" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "kMI" = ( /obj/structure/table/reinforced, /obj/effect/decal/cleanable/dirt, @@ -45715,17 +45685,6 @@ }, /turf/open/floor/carpet/black, /area/station/security/prison/mess) -"kPY" = ( -/obj/effect/turf_decal/trimline/hot_pink/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/hot_pink/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/textured, -/area/station/security/prison/workout) "kQr" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /obj/effect/turf_decal/bot, @@ -45864,16 +45823,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/medical/abandoned) -"kSg" = ( -/obj/structure/closet/secure_closet/brig{ - name = "Prisoner Locker" - }, -/obj/machinery/status_display/ai/directional/south, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) "kSi" = ( /obj/structure/nestbox, /obj/machinery/light/directional/west, @@ -47153,16 +47102,6 @@ }, /turf/open/floor/wood, /area/station/service/lawoffice) -"lhq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/north, -/obj/machinery/light/small/red/directional/north, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "lhC" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -47533,13 +47472,6 @@ /obj/effect/turf_decal/trimline/purple/filled/line, /turf/open/floor/iron/white, /area/station/science/lobby) -"lmG" = ( -/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, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/brig) "lmI" = ( /obj/structure/table/glass, /obj/machinery/computer/records/medical/laptop, @@ -47603,6 +47535,11 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"lnf" = ( +/obj/machinery/vending/wallmed/directional/north, +/obj/structure/table/optable, +/turf/open/floor/iron/dark, +/area/station/security/medical) "lnm" = ( /obj/structure/closet/secure_closet/captains, /obj/effect/turf_decal/stripes/line{ @@ -47798,12 +47735,6 @@ /obj/item/clothing/mask/gas/sechailer, /turf/open/floor/iron/dark, /area/station/security/office) -"lpW" = ( -/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/execution/transfer) "lpY" = ( /obj/structure/table/reinforced, /obj/machinery/light_switch/directional/east, @@ -47888,6 +47819,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/chapel) +"lrs" = ( +/obj/machinery/door/poddoor/preopen{ + id = "brigprison"; + name = "Prison Blast Door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating, +/area/station/security/execution/transfer) "lrA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -47937,6 +47876,13 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/station/service/library) +"lsd" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "lsf" = ( /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, @@ -48594,15 +48540,6 @@ }, /turf/open/floor/iron, /area/station/science/research) -"lzJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral/full, -/turf/open/floor/iron/large, -/area/station/security/brig) "lzM" = ( /obj/item/paper/pamphlet/violent_video_games, /obj/effect/spawner/random/entertainment/money_small, @@ -49103,18 +49040,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/port) -"lFp" = ( -/obj/effect/turf_decal/trimline/hot_pink/filled/line{ - dir = 4 - }, -/obj/item/radio/intercom/prison/directional/east, -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, -/area/station/security/prison/workout) "lFs" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -49524,13 +49449,6 @@ /obj/structure/tank_holder/extinguisher, /turf/open/floor/iron, /area/station/medical/pharmacy) -"lKa" = ( -/obj/effect/turf_decal/trimline/hot_pink/filled, -/obj/structure/weightmachine/weightlifter, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/security/prison/workout) "lKd" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/condiment/saltshaker{ @@ -49909,6 +49827,16 @@ /obj/structure/sign/warning/no_smoking/directional/east, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"lOD" = ( +/obj/structure/closet/secure_closet/brig{ + name = "Prisoner Locker" + }, +/obj/machinery/status_display/ai/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) "lOG" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -50341,6 +50269,14 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/iron/freezer, /area/station/security/prison/safe) +"lSP" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "lTg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red{ @@ -50405,16 +50341,6 @@ dir = 1 }, /area/station/engineering/atmos/pumproom) -"lTJ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "lTT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -51494,13 +51420,6 @@ /obj/effect/turf_decal/bot_red, /turf/open/floor/iron, /area/station/command/gateway) -"mjr" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white/side, -/area/station/security/medical) "mjz" = ( /turf/closed/wall, /area/station/maintenance/starboard/lesser) @@ -51991,6 +51910,15 @@ }, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) +"mpX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/office) "mqb" = ( /obj/machinery/door/morgue{ name = "Confession Booth"; @@ -52747,6 +52675,33 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/station/science/breakroom) +"mzp" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 9 + }, +/obj/structure/rack, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -6 + }, +/obj/item/book/manual/wiki/infections, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/storage/box/monkeycubes/mousecubes, +/obj/item/storage/box/monkeycubes/mousecubes, +/obj/item/storage/box/monkeycubes/mousecubes, +/turf/open/floor/iron/white, +/area/station/medical/pathology) "mzu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53151,6 +53106,15 @@ /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/iron, /area/station/service/kitchen/abandoned) +"mDJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/incident_display/delam/directional/north, +/turf/open/floor/iron, +/area/station/engineering/break_room) "mDO" = ( /obj/machinery/door/airlock/glass_large{ name = "Laundromat" @@ -53540,14 +53504,6 @@ /obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/white, /area/station/medical/paramedic) -"mIb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/office) "mIc" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/broken_floor, @@ -55872,16 +55828,6 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) -"nlM" = ( -/obj/effect/mapping_helpers/airalarm/engine_access, -/obj/machinery/incident_display/delam/directional/west, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Gas to Chamber" - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/engine, -/area/station/engineering/supermatter) "nlS" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -56194,6 +56140,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) +"npR" = ( +/obj/machinery/status_display/ai/directional/north, +/obj/machinery/computer/operating, +/turf/open/floor/iron/dark, +/area/station/security/medical) "npZ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/brown/half/contrasted{ @@ -56209,6 +56160,13 @@ }, /turf/open/floor/iron/dark, /area/station/command/corporate_showroom) +"nqi" = ( +/obj/effect/turf_decal/trimline/hot_pink/filled, +/obj/structure/weightmachine/weightlifter, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/station/security/prison/workout) "nqk" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -56290,6 +56248,21 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"nrN" = ( +/obj/machinery/light_switch/directional/east, +/obj/machinery/firealarm/directional/east{ + pixel_x = 38 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/structure/closet/secure_closet/brig_physician, +/obj/item/clothing/suit/jacket/straight_jacket, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/security/medical) "nsd" = ( /obj/structure/table, /obj/item/rcl/pre_loaded, @@ -56427,12 +56400,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/prison/workout) -"nuc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/turf/open/floor/iron, -/area/station/security/brig) "nuj" = ( /obj/item/kirbyplants/random, /obj/machinery/airalarm/directional/south, @@ -58576,14 +58543,6 @@ "nUp" = ( /turf/closed/wall/r_wall, /area/station/engineering/gravity_generator) -"nUr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/full, -/turf/open/floor/iron/large, -/area/station/security/brig) "nUu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59171,12 +59130,6 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) -"ocs" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "ocx" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Teleporter Maintenance" @@ -59299,6 +59252,16 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) +"oeq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/landmark/start/prisoner, +/obj/structure/chair/sofa/bench{ + dir = 8 + }, +/turf/open/floor/carpet/donk, +/area/station/security/prison/safe) "oez" = ( /obj/machinery/recharge_station, /obj/effect/landmark/start/hangover, @@ -60088,19 +60051,6 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"onu" = ( -/obj/item/kirbyplants/random, -/obj/structure/sign/warning/pods/directional/south{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "onK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -60976,14 +60926,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) -"oAV" = ( -/obj/structure/table/wood, -/obj/item/radio/intercom/prison, -/obj/item/storage/box/lights/mixed{ - pixel_x = 7 - }, -/turf/open/floor/carpet/black, -/area/station/security/prison/mess) "oAW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -61459,6 +61401,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"oHf" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/disposalpipe/segment, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) +"oHk" = ( +/obj/effect/turf_decal/stripes/end, +/obj/machinery/shower/directional/south, +/turf/open/floor/iron/white/textured, +/area/station/security/medical) "oHo" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/brown/half/contrasted, @@ -62100,6 +62054,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/space/basic, /area/space/nearstation) +"oPs" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/structure/table/reinforced/rglass, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/roller, +/obj/item/clothing/neck/stethoscope, +/obj/machinery/duct, +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/security/medical) "oPz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, @@ -62374,19 +62345,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/department/chapel) -"oTg" = ( -/obj/structure/sink/directional/west, -/obj/machinery/light_switch/directional/east, -/obj/machinery/firealarm/directional/east{ - pixel_x = 38 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/security/medical) "oTs" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -62588,6 +62546,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/command/gateway) +"oVU" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/reagent_dispensers/wall/peppertank/directional/south, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "oVW" = ( /obj/machinery/door/poddoor/preopen{ id = "xenobio_maint_aft"; @@ -63366,6 +63333,12 @@ /obj/machinery/light/small/broken/directional/south, /turf/open/floor/plating, /area/station/service/chapel/storage) +"pgi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/office) "pgr" = ( /obj/machinery/duct, /obj/effect/turf_decal/stripes/line{ @@ -63692,11 +63665,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/port) -"pjq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "pjN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63724,6 +63692,26 @@ }, /turf/open/floor/catwalk_floor/iron_dark, /area/station/security/bitden) +"pjY" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/button/door/directional/north{ + id = "brigprison"; + name = "Prison Lockdown"; + req_access = list("brig_entrance") + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "pjZ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, @@ -63875,15 +63863,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/main) -"plh" = ( -/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 = 1 - }, -/turf/open/floor/iron, -/area/station/security/brig) "pln" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/portable_atmospherics/canister/water_vapor, @@ -63971,6 +63950,18 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"pmn" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/machinery/light/cold/directional/west, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/computer/records/medical/laptop, +/obj/structure/table/reinforced/rglass, +/obj/machinery/duct, +/turf/open/floor/iron/white/corner, +/area/station/security/medical) "pmz" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -64458,6 +64449,16 @@ /obj/structure/cable, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai_upload) +"ptt" = ( +/obj/structure/cable, +/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/duct, +/turf/open/floor/iron, +/area/station/security/office) "ptA" = ( /obj/structure/cable, /obj/structure/table/reinforced, @@ -64957,12 +64958,6 @@ }, /turf/open/floor/iron/grimy, /area/station/service/chapel) -"pzJ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/brig) "pzN" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 @@ -64972,14 +64967,6 @@ /obj/structure/sign/poster/random/directional/north, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"pzP" = ( -/obj/structure/cable, -/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, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/brig) "pzS" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -65016,16 +65003,6 @@ /obj/machinery/light/floor/has_bulb, /turf/open/floor/stone, /area/station/science/xenobiology) -"pAs" = ( -/obj/structure/cable, -/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, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/security/brig) "pAu" = ( /obj/effect/landmark/start/hangover, /obj/effect/turf_decal/siding/white{ @@ -65974,11 +65951,6 @@ }, /turf/open/floor/iron, /area/station/command/gateway) -"pLj" = ( -/obj/machinery/status_display/evac/directional/south, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "pLm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ @@ -66210,12 +66182,6 @@ }, /turf/open/floor/iron/large, /area/station/science/research) -"pNI" = ( -/obj/effect/turf_decal/trimline/hot_pink/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/security/prison/workout) "pNJ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/north, @@ -67000,6 +66966,7 @@ /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/structure/liquid_barrier, /turf/open/floor/iron, /area/station/science/xenobiology) "pWd" = ( @@ -68403,14 +68370,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) -"qnU" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) "qnY" = ( /turf/closed/wall, /area/station/science/lobby) @@ -68813,6 +68772,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) +"qtT" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/white/side, +/area/station/security/medical) "qua" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -68867,22 +68832,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"quH" = ( -/obj/structure/table/glass, -/obj/item/storage/medkit/regular, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -15; - pixel_y = 2 - }, -/obj/item/reagent_containers/cup/bottle/multiver, -/obj/item/reagent_containers/syringe, -/obj/structure/sign/poster/official/cleanliness{ - pixel_x = 32 - }, -/obj/machinery/vending/wallmed/directional/north, -/obj/effect/turf_decal/siding/dark_red, -/turf/open/floor/iron/dark, -/area/station/security/medical) "quQ" = ( /obj/item/kirbyplants{ icon_state = "plant-21" @@ -69166,32 +69115,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/station/service/theater/abandoned) -"qyB" = ( -/obj/effect/turf_decal/trimline/hot_pink/filled/line{ - dir = 10 - }, -/obj/machinery/airalarm/directional/west, -/obj/structure/closet{ - name = "Prisoner O2 Storage" - }, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/station/security/prison/workout) -"qyK" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) "qyX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69208,6 +69131,25 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/mining, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) +"qzb" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/machinery/requests_console/directional/west{ + anon_tips_receiver = 1; + assistance_requestable = 1; + department = "Research Director's Desk"; + name = "Research Director's Requests Console"; + receive_ore_updates = 1; + can_send_announcements = 1 + }, +/obj/item/kirbyplants/random/dead, +/obj/machinery/light/directional/west, +/turf/open/floor/iron, +/area/station/command/heads_quarters/rd) "qzc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -70582,6 +70524,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/science) +"qOv" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "qOB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -70715,6 +70664,20 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, /turf/open/floor/iron, /area/station/medical/chemistry) +"qPB" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/bodybags{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/prisoner, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) "qPE" = ( /obj/effect/spawner/random/trash/box, /obj/effect/spawner/random/food_or_drink/snack, @@ -71510,6 +71473,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"rcH" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "rcI" = ( /turf/open/floor/iron, /area/station/cargo/sorting) @@ -71634,6 +71604,18 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/medical/storage) +"rdY" = ( +/obj/effect/turf_decal/trimline/hot_pink/filled/line{ + dir = 4 + }, +/obj/item/radio/intercom/prison/directional/east, +/obj/structure/chair/sofa/bench{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 4 + }, +/area/station/security/prison/workout) "rem" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/sign/poster/random/directional/west, @@ -71730,20 +71712,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"rfG" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Infirmary" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/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/security/medical) "rfH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ @@ -71757,6 +71725,14 @@ /obj/effect/landmark/navigate_destination/dockescpod1, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"rfW" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/rack, +/obj/item/restraints/handcuffs, +/obj/item/assembly/flash/handheld, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) "rgf" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -71950,6 +71926,16 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron/dark, /area/station/service/abandoned_gambling_den) +"rhY" = ( +/obj/structure/chair/sofa/bench{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/hot_pink/filled/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/dark/herringbone, +/area/station/security/prison) "riq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/grille/broken, @@ -73907,23 +73893,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/atmos/storage) -"rFX" = ( -/obj/effect/turf_decal/trimline/hot_pink/filled/line{ - dir = 6 - }, -/obj/structure/closet{ - name = "Prisoner O2 Storage" - }, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, -/area/station/security/prison/workout) "rFZ" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -73967,6 +73936,18 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/maintenance/disposal) +"rGz" = ( +/obj/effect/turf_decal/trimline/hot_pink/filled/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/structure/chair/sofa/bench{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 4 + }, +/area/station/security/prison/workout) "rGO" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -74039,14 +74020,6 @@ }, /turf/open/floor/iron, /area/station/security/warden) -"rIh" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/department/security) "rIk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -75026,11 +74999,6 @@ }, /turf/open/floor/iron, /area/station/security/warden) -"rSg" = ( -/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/security/medical) "rSi" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/right/directional/west{ @@ -76027,12 +75995,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/cargo/quartermaster) -"sgh" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "sgj" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/binary/valve, @@ -77445,25 +77407,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"syT" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/machinery/requests_console/directional/west{ - anon_tips_receiver = 1; - assistance_requestable = 1; - department = "Research Director's Desk"; - name = "Research Director's Requests Console"; - receive_ore_updates = 1; - can_send_announcements = 1 - }, -/obj/item/kirbyplants/random/dead, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/command/heads_quarters/rd) "szg" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -78169,13 +78112,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/port) -"sIi" = ( -/obj/structure/cable, -/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, -/area/station/security/brig) "sIk" = ( /obj/structure/chair/sofa/bench/left{ dir = 1 @@ -79085,11 +79021,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/service/theater) -"sRQ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) "sRT" = ( /obj/structure/bookcase/random/adult, /obj/effect/turf_decal/siding/wood{ @@ -79809,6 +79740,12 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/service/chapel) +"taY" = ( +/obj/effect/turf_decal/siding/dark_red, +/obj/machinery/defibrillator_mount/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/security/medical) "tbd" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -81115,12 +81052,6 @@ /obj/item/reagent_containers/cup/watering_can, /turf/open/floor/iron/dark, /area/station/security/prison/garden) -"tsU" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/brig) "tsZ" = ( /obj/machinery/door/firedoor/heavy, /obj/effect/turf_decal/stripes/corner{ @@ -81869,6 +81800,16 @@ }, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) +"tCP" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/full, +/obj/machinery/duct, +/turf/open/floor/iron/large, +/area/station/security/brig) "tCQ" = ( /obj/effect/turf_decal/loading_area{ dir = 4 @@ -82922,14 +82863,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/port/aft) -"tOP" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/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, -/area/station/security/brig) "tOS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -83211,14 +83144,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"tSk" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "tSo" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -83866,6 +83791,23 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"uaq" = ( +/obj/effect/turf_decal/trimline/hot_pink/filled/line{ + dir = 6 + }, +/obj/structure/closet{ + name = "Prisoner O2 Storage" + }, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/open/floor/iron/dark/textured_corner{ + dir = 1 + }, +/area/station/security/prison/workout) "uaz" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -84777,6 +84719,18 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"ulR" = ( +/obj/effect/turf_decal/trimline/hot_pink/filled/line{ + dir = 4 + }, +/obj/structure/sign/poster/random/directional/east, +/obj/structure/chair/sofa/bench{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 4 + }, +/area/station/security/prison/workout) "umb" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -85382,13 +85336,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/prison/workout) -"uui" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white/side, -/area/station/security/medical) "uuj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, @@ -86253,18 +86200,24 @@ /obj/effect/spawner/random/engineering/toolbox, /turf/open/floor/plating, /area/station/maintenance/department/electrical) -"uEy" = ( -/obj/structure/sink/directional/south{ - dir = 8; - pixel_x = 14; - pixel_y = 0 +"uEz" = ( +/obj/effect/turf_decal/trimline/hot_pink/filled/line{ + dir = 10 }, -/obj/structure/mirror/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/ghost_critter_spawn, -/turf/open/floor/wood/parquet, -/area/station/security/prison/safe) +/obj/machinery/airalarm/directional/west, +/obj/structure/closet{ + name = "Prisoner O2 Storage" + }, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/open/floor/iron/dark/textured_corner{ + dir = 4 + }, +/area/station/security/prison/workout) "uED" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, @@ -86407,6 +86360,19 @@ /obj/structure/chair/stool/directional/south, /turf/open/floor/plating, /area/station/maintenance/fore) +"uGy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/maintenance/department/security) "uGB" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -86614,6 +86580,16 @@ }, /turf/open/floor/iron/white, /area/station/medical/pathology) +"uJe" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Security - Escape Pod" + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/status_display/ai/directional/north, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "uJk" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/landmark/start/hangover, @@ -86784,22 +86760,6 @@ /obj/structure/sign/poster/contraband/random/directional/south, /turf/open/floor/iron/dark/herringbone, /area/station/security/prison) -"uLG" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Security Office" - }, -/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/security/general, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/office) "uLZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -86872,6 +86832,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"uMN" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/closed/wall/r_wall, +/area/station/security/medical) "uMV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -87271,19 +87235,6 @@ }, /turf/open/floor/iron/white, /area/station/service/kitchen/abandoned) -"uQO" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/neutral/mid_joiner{ - dir = 8 - }, -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/siding/dark_red, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/security/medical) "uQY" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -87441,6 +87392,23 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/dark/smooth_large, /area/station/security/checkpoint/customs/aft) +"uTa" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 4 + }, +/obj/machinery/camera/directional/north{ + c_tag = "Security - Medbay" + }, +/obj/structure/bodycontainer/morgue{ + dir = 2 + }, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/security/medical) "uTb" = ( /obj/machinery/door/airlock/highsecurity{ name = "Emergency Access" @@ -87510,6 +87478,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/abandoned_gambling_den/gaming) +"uTC" = ( +/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 = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "uTG" = ( /obj/structure/showcase/cyborg/old{ dir = 4; @@ -87723,6 +87701,17 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"uWC" = ( +/obj/effect/turf_decal/trimline/hot_pink/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/hot_pink/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/textured, +/area/station/security/prison/workout) "uWI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -88247,16 +88236,6 @@ /obj/effect/turf_decal/tile/purple/full, /turf/open/floor/iron/large, /area/station/science/research) -"vcP" = ( -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/hot_pink/filled/line{ - dir = 4 - }, -/obj/item/radio/intercom/prison/directional/east, -/turf/open/floor/iron/dark/herringbone, -/area/station/security/prison) "vcU" = ( /obj/machinery/computer/security/mining{ dir = 4 @@ -88934,6 +88913,15 @@ /obj/structure/sign/clock/directional/east, /turf/open/floor/wood, /area/station/commons/dorms) +"vnd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/structure/chair/office, +/obj/effect/landmark/start/brig_physician, +/turf/open/floor/iron/white/side, +/area/station/security/medical) "vnn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -88962,6 +88950,12 @@ /obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) +"vnr" = ( +/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/white, +/area/station/security/medical) "vnu" = ( /obj/machinery/airalarm/directional/north, /obj/structure/rack, @@ -89174,6 +89168,15 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/hos) +"vpt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/office) "vpC" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 @@ -90838,17 +90841,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/science/research) -"vIM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/poddoor/preopen{ - id = "brigprison"; - name = "Prison Blast Door" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "vIQ" = ( /turf/closed/wall/r_wall, /area/station/command/teleporter) @@ -91414,6 +91406,31 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/range) +"vSB" = ( +/obj/structure/chair/sofa/bench{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/hot_pink/filled/line{ + dir = 4 + }, +/obj/item/radio/intercom/prison/directional/east, +/turf/open/floor/iron/dark/herringbone, +/area/station/security/prison) +"vSC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Security Maintenance" + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "vSE" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -92127,6 +92144,11 @@ /obj/effect/turf_decal/trimline/hot_pink/corner, /turf/open/floor/iron/dark/textured, /area/station/security/prison/workout) +"waA" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/sign/warning/secure_area/directional/south, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "waG" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, @@ -92205,10 +92227,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"wbw" = ( -/obj/item/training_toolbox, -/turf/open/floor/iron/dark/textured, -/area/station/security/prison/workout) "wbA" = ( /obj/machinery/light/directional/south, /obj/machinery/camera/directional/south{ @@ -93281,12 +93299,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/pathology) -"wnF" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) "wnI" = ( /obj/item/sign, /obj/effect/spawner/random/structure/crate_empty, @@ -93892,18 +93904,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"wtv" = ( -/obj/structure/bed, -/obj/item/bedsheet/medical, -/obj/machinery/airalarm/directional/east, -/obj/machinery/light/cold/directional/east, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white/corner{ - dir = 8 - }, -/area/station/security/medical) "wtz" = ( /obj/structure/table, /obj/effect/turf_decal/trimline/blue/filled/corner{ @@ -94531,6 +94531,12 @@ }, /turf/open/floor/iron, /area/station/cargo/warehouse) +"wAg" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "wAk" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -96061,18 +96067,6 @@ /obj/effect/landmark/carpspawn, /turf/open/space/basic, /area/space) -"wVo" = ( -/obj/effect/turf_decal/trimline/hot_pink/filled/line{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, -/area/station/security/prison/workout) "wVy" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -96110,6 +96104,16 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/storage/tech) +"wWh" = ( +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron, +/area/station/security/execution/transfer) +"wWk" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "wWn" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/glass, @@ -96726,6 +96730,16 @@ /obj/machinery/duct, /turf/open/floor/stone, /area/station/science/xenobiology) +"xdl" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/full, +/obj/machinery/duct, +/turf/open/floor/iron/large, +/area/station/security/brig) "xdn" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/box/red, @@ -97321,19 +97335,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/security/prison) -"xlF" = ( -/obj/effect/turf_decal/trimline/green/end, -/obj/machinery/growing/tray, -/obj/effect/turf_decal/trimline/green/mid_joiner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/mid_joiner{ - dir = 4 - }, -/turf/open/floor/iron/half{ - dir = 8 - }, -/area/station/service/hydroponics/garden) "xlG" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, @@ -97362,6 +97363,10 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/science/genetics) +"xmb" = ( +/obj/item/training_toolbox, +/turf/open/floor/iron/dark/textured, +/area/station/security/prison/workout) "xmg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/blue{ @@ -97417,6 +97422,25 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark/textured_large, /area/station/science/xenobiology) +"xmQ" = ( +/obj/machinery/airalarm/directional/east, +/obj/machinery/light/cold/directional/east, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/storage/medkit/regular, +/obj/item/clothing/gloves/latex, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/item/reagent_containers/cup/bottle/multiver, +/obj/item/reagent_containers/syringe, +/obj/item/storage/box/bodybags, +/obj/item/storage/medkit/regular, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 8 + }, +/area/station/security/medical) "xmR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ @@ -97573,6 +97597,12 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) +"xoW" = ( +/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/execution/transfer) "xpr" = ( /obj/effect/spawner/random/decoration/carpet, /obj/effect/spawner/random/structure/furniture_parts, @@ -97846,6 +97876,7 @@ }, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/delivery, +/obj/structure/liquid_barrier, /turf/open/floor/iron/dark, /area/station/science/xenobiology) "xsP" = ( @@ -99715,6 +99746,14 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/fore) +"xOS" = ( +/obj/structure/cable, +/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, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "xPc" = ( /turf/closed/wall, /area/station/medical/pathology) @@ -99876,16 +99915,6 @@ /obj/item/clothing/under/dress/redeveninggown, /turf/open/floor/wood, /area/station/commons/dorms) -"xRe" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Security - Escape Pod" - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "xRo" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -99928,14 +99957,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) -"xRF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/office) "xRO" = ( /obj/structure/fireplace, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -100098,6 +100119,26 @@ /obj/structure/sign/warning/secure_area/directional/north, /turf/open/floor/plating, /area/station/maintenance/department/science) +"xUk" = ( +/obj/machinery/door/airlock/security{ + name = "Brig" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_x = -32 + }, +/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/security/general, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "xUl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -100390,17 +100431,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/maintenance/port) -"xXI" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/bodybags{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/prisoner, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) "xXK" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, @@ -123506,7 +123536,7 @@ eHy qJs cxp sHT -nlM +iMh aEF oXm sHT @@ -124768,7 +124798,7 @@ vQj uCa uCa leE -jSG +mDJ kyW jzU bAR @@ -131499,7 +131529,7 @@ hkZ voZ iao nLM -syT +qzb hnM urt awA @@ -135654,7 +135684,7 @@ aaa aaa gqm gqm -bmR +mzp grE uxI gqm @@ -140667,7 +140697,7 @@ gvq wkP wZo dGr -xlF +ayQ qAV daR dla @@ -151475,7 +151505,7 @@ oWP vmo lQj xBD -qyB +uEz ydH qfM xzJ @@ -151989,7 +152019,7 @@ sxn cpE xqc eEi -rFX +uaq ydH xPo krO @@ -152286,7 +152316,7 @@ pJq tNZ dth avF -clE +dpB avF rYA qkC @@ -152480,9 +152510,9 @@ cBq brG rRL usE -vcP -atb -aqC +vSB +rhY +hhq uXg vwy aQs @@ -152543,7 +152573,7 @@ nht oXV fIj hie -rIh +hlk ewb avF mEb @@ -152773,34 +152803,34 @@ sFW meT fOH fOH -lmG -qnU -wnF -sRQ -nUr -sIi -pAs -dbw -cOE -plh -tOP +cdv +kMz +rcH +wAg +kyK +xOS +eAT +ggk +xUk +uTC +fPB wUY -jPR +xdl wUY -gTb +hit wUY -jDB +knL wUY -kKa +oHf qFA -kKa -lzJ -pzP -pzJ -tsU -aeY -hPx -bJC +oHf +tCP +gBw +lsd +bdH +vSC +uGy +fsb ieh tuv vHY @@ -153030,7 +153060,7 @@ vCk owO owO dxT -nuc +gKU flD cDm owO @@ -153253,7 +153283,7 @@ giW hLY rnU jmZ -jlb +oeq hBX lTv cBq @@ -153287,7 +153317,7 @@ lET hQq cjN hQq -uLG +dAU jXt hQq cjN @@ -153509,7 +153539,7 @@ brG lXj lTv vmm -uEy +grh lGm lGm aHz @@ -153536,15 +153566,15 @@ hLz iCo nYt lET -hpe -uQO -gmr -dvh +oHk +aAg +pmn +oPs pWT eVE nzR gKp -gDP +vpt rTG nsG ozu @@ -153793,15 +153823,15 @@ hLz iuk puN lET -keC -krP -mjr -rSg -rfG -ymb -mIb -jkw -xRF +uTa +ehh +vnd +vnr +ipW +ptt +aUM +pgi +mpX wdM cbX one @@ -154050,9 +154080,9 @@ mcb iCo spB lET -lET -auu -uui +npR +jNH +qtT rJR fcE ymb @@ -154306,11 +154336,11 @@ ouc mcb iCo krO -qyK -lET -quH -wtv -oTg +uMN +lnf +taY +xmQ +nrN pWT mif qlN @@ -154562,8 +154592,8 @@ tAn lMN mcb iCo -krO -bqE +oVU +lET lET lET lET @@ -154814,13 +154844,13 @@ rnA rnA rnA rnA -pNI -lKa +cgA +nqi hPN hLz iCo krO -xXI +qPB qIH aaa aaa @@ -155072,12 +155102,12 @@ iDC ylB pqk uuf -kPY +uWC xPz hLz -sgh -lTJ -gJk +qOv +yiA +rfW qIH etw qYo @@ -155334,7 +155364,7 @@ lAj vxs kiB krO -kSg +lOD qIH aaa aaa @@ -155576,7 +155606,7 @@ fiO pAx sxn vTP -cSb +azu pMG pMG pMG @@ -155810,8 +155840,8 @@ fRi srJ vNi lqh -oAV -jzs +dBU +gdU nDp fRi vOH @@ -156350,7 +156380,7 @@ vTP pMG sxn rwn -wbw +xmb wIS foR sxn @@ -157131,8 +157161,8 @@ eHO eHO eHO eHO -ddp -onu +pjY +eYB qIH aad aad @@ -157375,11 +157405,11 @@ fiO ivM rzk dbg -klV -lFp -wVo -giN -klV +brc +rdY +rGz +ulR +brc mAA xqc dwC @@ -157388,8 +157418,8 @@ bJx mor dXF eHO -vIM -jdx +hMm +lrs qIH aad aaa @@ -157645,8 +157675,8 @@ gRU xAc mKL sXd -lpW -jeG +xoW +waA qIH qIH qIH @@ -157902,7 +157932,7 @@ swn aAA qbp eHO -kyu +hfi xzJ aMi ojW @@ -158159,7 +158189,7 @@ uuj fRe eho eHO -pjq +wWk xzJ qIH gJk @@ -158417,8 +158447,8 @@ iGx nkn eHO cXC -ocs -iZc +iam +gWc gJk aaa aad @@ -158673,9 +158703,9 @@ omd gku mZA eHO -lhq -tSk -hQn +dqr +lSP +hWN jrA aaa aad @@ -158930,9 +158960,9 @@ skQ pdF rQv eHO -xRe -gWj -pLj +uJe +koe +wWh gJk aaa efQ diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 7fd5cb2cc1bc..5e681e64154b 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -2117,13 +2117,9 @@ /turf/open/floor/iron/large, /area/station/commons/storage/tools) "aKt" = ( -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Security Medpost" - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/white/textured, /area/station/security/medical) "aKG" = ( @@ -5566,6 +5562,7 @@ dir = 4 }, /obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/security/processing) "bLL" = ( @@ -6371,6 +6368,7 @@ dir = 4 }, /obj/machinery/firealarm/directional/south, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/security/processing) "bYK" = ( @@ -11423,6 +11421,12 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"dyr" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/station/security/medical) "dyE" = ( /obj/structure/chair/pew/right{ dir = 1 @@ -12121,6 +12125,7 @@ }, /obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/duct, /turf/open/floor/iron/dark/side{ dir = 1 }, @@ -14881,6 +14886,7 @@ /area/station/commons/dorms) "eGj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, /turf/open/floor/iron/white/textured, /area/station/security/medical) "eGl" = ( @@ -17273,7 +17279,7 @@ dir = 4 }, /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, /turf/open/floor/iron, @@ -17722,6 +17728,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/security/processing) "fEC" = ( @@ -18192,9 +18199,8 @@ /turf/open/floor/plating, /area/station/science/research) "fLX" = ( -/obj/structure/bodycontainer/morgue{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/end, +/obj/machinery/shower/directional/south, /turf/open/floor/iron/white/textured, /area/station/security/medical) "fLY" = ( @@ -21672,6 +21678,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/red/anticorner/contrasted, +/obj/machinery/duct, /turf/open/floor/iron/dark/corner{ dir = 1 }, @@ -23207,6 +23214,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/drone_bay) +"hwh" = ( +/obj/structure/reagent_dispensers/watertank{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/fore) "hwn" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24229,6 +24242,8 @@ "hQd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/reagent_containers/blood, +/obj/machinery/iv_drip, /turf/open/floor/iron/white/textured, /area/station/security/medical) "hQi" = ( @@ -25425,6 +25440,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, /turf/open/floor/iron, /area/station/security/brig/upper) "ijY" = ( @@ -25818,10 +25836,10 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "ipP" = ( -/obj/structure/bed, -/obj/item/clothing/suit/jacket/straight_jacket, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/table/reinforced/rglass, +/obj/machinery/computer/records/medical/laptop, /turf/open/floor/iron/white/textured, /area/station/security/medical) "ipZ" = ( @@ -26171,6 +26189,7 @@ /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/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) "iwz" = ( @@ -26389,6 +26408,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"iAo" = ( +/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, +/turf/open/floor/iron, +/area/station/security/brig/upper) "iAt" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -27015,9 +27044,8 @@ /area/station/maintenance/fore) "iLe" = ( /obj/item/radio/intercom/directional/north, -/obj/structure/table/glass, -/obj/machinery/computer/records/medical/laptop, /obj/machinery/light/directional/north, +/obj/structure/table/optable, /turf/open/floor/iron/white/textured, /area/station/security/medical) "iLf" = ( @@ -28032,6 +28060,12 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, +/obj/machinery/camera/directional/north{ + c_tag = "Security - Upper Brig South" + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, /turf/open/floor/iron, /area/station/security/brig/upper) "jaN" = ( @@ -28436,6 +28470,13 @@ /obj/structure/table, /turf/open/floor/iron/grimy, /area/station/security/prison/work) +"jhL" = ( +/obj/structure/reagent_dispensers/plumbed{ + name = "dormitory water reservoir"; + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/fore) "jhQ" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -28525,6 +28566,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, /turf/open/floor/iron, /area/station/security/brig/upper) "jjx" = ( @@ -28553,6 +28597,14 @@ /obj/structure/mirror/directional/east, /turf/open/floor/iron/freezer, /area/station/commons/toilet/locker) +"jkf" = ( +/obj/item/clothing/gloves/latex, +/obj/item/clothing/mask/surgical, +/obj/item/reagent_containers/spray/cleaner, +/obj/structure/table/reinforced/rglass, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/white/textured, +/area/station/security/medical) "jkn" = ( /obj/effect/turf_decal/tile/dark/fourcorners, /turf/open/floor/iron, @@ -31161,6 +31213,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron/white/textured, /area/station/security/medical) "kce" = ( @@ -31271,10 +31324,7 @@ /turf/open/misc/asteroid/snow/standard_air, /area/station/science/research) "kdT" = ( -/obj/machinery/iv_drip, -/obj/item/reagent_containers/blood, -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/computer/operating, /turf/open/floor/iron/white/textured, /area/station/security/medical) "kdW" = ( @@ -32091,9 +32141,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/carpet, /area/station/service/library) -"kqc" = ( -/turf/closed/wall, -/area/station/security/medical) "kqh" = ( /obj/structure/chair/wood{ dir = 8 @@ -33735,10 +33782,6 @@ /obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) -"kQE" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, -/area/station/maintenance/fore) "kQM" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 @@ -34363,6 +34406,7 @@ /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, /turf/open/floor/iron/smooth, /area/station/security/processing) "laD" = ( @@ -37292,6 +37336,14 @@ }, /turf/open/floor/grass, /area/station/medical/pathology) +"lYS" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/fore) "lYY" = ( /obj/item/clothing/suit/hooded/wintercoat, /obj/item/clothing/suit/hooded/wintercoat, @@ -38853,10 +38905,10 @@ /turf/open/floor/plating, /area/station/maintenance/department/chapel) "mBK" = ( +/obj/machinery/light/directional/north, /obj/structure/bodycontainer/morgue{ dir = 2 }, -/obj/machinery/light/directional/north, /turf/open/floor/iron/white/textured, /area/station/security/medical) "mBQ" = ( @@ -40030,6 +40082,10 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/security/brig/upper) "mWU" = ( @@ -41607,6 +41663,7 @@ }, /obj/structure/cable, /obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/duct, /turf/open/floor/iron/dark/side{ dir = 1 }, @@ -43104,6 +43161,13 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/grimy, /area/station/service/bar/atrium) +"nNQ" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/brig/upper) "nNY" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -43158,16 +43222,6 @@ /obj/item/pillow/random, /turf/open/floor/carpet, /area/station/commons/dorms) -"nOv" = ( -/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/landmark/start/security_assistant, -/turf/open/floor/iron, -/area/station/security/brig/upper) "nOw" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -43465,6 +43519,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/security/processing) "nSK" = ( @@ -44008,6 +44063,10 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"ocl" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/white/textured, +/area/station/security/medical) "ocu" = ( /obj/effect/turf_decal/bot_white, /obj/structure/cable, @@ -46046,12 +46105,19 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "oIC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/item/storage/box/bodybags, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/item/reagent_containers/syringe{ + name = "steel point" }, -/turf/open/floor/iron, -/area/station/security/brig/upper) +/obj/item/reagent_containers/cup/bottle/multiver, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/structure/table/reinforced/rglass, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/item/roller, +/obj/item/clothing/neck/stethoscope, +/turf/open/floor/iron/white/textured, +/area/station/security/medical) "oIJ" = ( /obj/effect/landmark/start/medical_doctor, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -52331,6 +52397,7 @@ req_access = list("xenobiology") }, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/structure/liquid_barrier, /turf/open/floor/engine, /area/station/science/xenobiology) "qLX" = ( @@ -52563,6 +52630,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/duct, /turf/open/floor/iron/dark/side{ dir = 1 }, @@ -54356,11 +54424,6 @@ /turf/open/floor/iron/textured, /area/mine/mechbay) "rud" = ( -/obj/item/clothing/gloves/latex, -/obj/item/clothing/mask/surgical, -/obj/item/reagent_containers/spray/cleaner, -/obj/structure/table/glass, -/obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/white/textured, /area/station/security/medical) "ruo" = ( @@ -54767,6 +54830,16 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"rAN" = ( +/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/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig/upper) "rAO" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -55844,6 +55917,7 @@ dir = 4 }, /obj/machinery/door/firedoor, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/security/processing) "rUb" = ( @@ -56349,13 +56423,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"scu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron, -/area/station/security/brig/upper) "scw" = ( /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/underground/explored) @@ -60109,6 +60176,9 @@ /obj/machinery/firealarm/directional/south, /obj/machinery/light/directional/south, /obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, /turf/open/floor/iron, /area/station/security/brig/upper) "tpx" = ( @@ -60138,15 +60208,8 @@ /turf/open/floor/iron, /area/mine/laborcamp) "tpX" = ( -/obj/item/storage/box/bodybags, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/item/reagent_containers/syringe{ - name = "steel point" - }, -/obj/item/reagent_containers/cup/bottle/multiver, -/obj/item/reagent_containers/cup/bottle/epinephrine, -/obj/structure/table/glass, -/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/closet/secure_closet/brig_physician, +/obj/item/clothing/suit/jacket/straight_jacket, /turf/open/floor/iron/white/textured, /area/station/security/medical) "tqb" = ( @@ -60965,11 +61028,17 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/underground/explored) "tDk" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/window/brigdoor/left/directional/south{ + name = "Security Medpost"; + req_access = list("security") + }, /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/security/brig/upper) +/obj/machinery/duct, +/turf/open/floor/iron/white/textured, +/area/station/security/medical) "tDv" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -64254,6 +64323,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/fore) "uHS" = ( @@ -65747,6 +65817,7 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 8 }, +/obj/machinery/duct, /turf/open/floor/iron/dark/corner{ dir = 4 }, @@ -66653,6 +66724,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/landmark/event_spawn, +/obj/structure/chair/office, +/obj/effect/landmark/start/brig_physician, +/obj/machinery/duct, /turf/open/floor/iron/white/textured, /area/station/security/medical) "vxd" = ( @@ -67842,6 +67916,7 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/security/processing) "vRO" = ( @@ -68757,14 +68832,10 @@ }, /area/station/science/xenobiology) "whd" = ( -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 3 +/obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/item/storage/medkit/regular, -/obj/structure/table/glass, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/firealarm/directional/east, /turf/open/floor/iron/white/textured, /area/station/security/medical) "whf" = ( @@ -69929,14 +70000,8 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/machinery/camera/directional/north{ - c_tag = "Security - Upper Brig South" - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/brig/upper) +/turf/closed/wall/r_wall, +/area/station/security/medical) "wAv" = ( /obj/structure/chair/comfy/brown{ dir = 1 @@ -70079,6 +70144,17 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal) +"wCf" = ( +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/regular, +/obj/structure/table/reinforced/rglass, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/white/textured, +/area/station/security/medical) "wCg" = ( /obj/machinery/light/small/directional/east, /obj/machinery/light_switch/directional/east, @@ -73165,6 +73241,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, /obj/machinery/duct, +/obj/structure/liquid_barrier, /turf/open/floor/iron, /area/station/science/xenobiology) "xyx" = ( @@ -73312,6 +73389,10 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/security/brig/upper) "xAS" = ( @@ -74069,7 +74150,6 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "xMn" = ( -/obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/holopad, /turf/open/floor/iron/white/textured, /area/station/security/medical) @@ -74309,6 +74389,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/duct, /turf/open/floor/iron/dark/side{ dir = 1 }, @@ -235742,9 +235823,9 @@ kGc kWh qVJ mgU -kqc -kqc -kqc +kzw +kzw +kzw wAq jaw xwf @@ -236259,7 +236340,7 @@ bUx mBK eGj xMn -cAC +ocl jjt bRG hfA @@ -236517,7 +236598,7 @@ ipP vxc aKt tDk -jjt +iAo lUw iWS vwt @@ -236773,9 +236854,9 @@ bUx iLe aOS rud -cAC +jkf mWM -scu +bRG pmr qPp ryG @@ -237030,9 +237111,9 @@ bUx kdT hQd whd -cAC +wCf mWM -bRG +nNQ kpj fGq eig @@ -237287,7 +237368,7 @@ bUx kzw kzw kzw -cAC +dyr xAQ mEI jNp @@ -237545,7 +237626,7 @@ fXi vhL law eqI -nOv +rAN wAT lbk bln @@ -240886,7 +240967,7 @@ ekW vRN fEA uHF -eqq +lYS eqq qdK eqq @@ -241142,12 +241223,12 @@ aML hPq hSJ ykw +jhL +hwh deY deY deY deY -kQE -deY fhz deY fhz diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index aba32bd4f1ab..2efd4297657a 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -1501,6 +1501,16 @@ /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) +"aup" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/structure/cable, +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/security/medical) "auN" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/airalarm/directional/west, @@ -5521,6 +5531,11 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/station/maintenance/port/lesser) "bRv" = ( @@ -6039,6 +6054,20 @@ }, /turf/open/floor/iron/dark, /area/station/service/kitchen) +"bZe" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "brig-maint-passthrough" + }, +/obj/effect/mapping_helpers/airlock/unres, +/obj/effect/mapping_helpers/airlock/access/any/security/maintenance, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) "bZg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7086,6 +7115,13 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/science/ordnance) +"clH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "clL" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line, @@ -9402,10 +9438,11 @@ /obj/effect/turf_decal/stripes/line, /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, /obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/lesser) "dbW" = ( @@ -16441,6 +16478,7 @@ }, /obj/effect/turf_decal/tile/purple/full, /obj/effect/mapping_helpers/airlock/access/any/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) "fnu" = ( @@ -16606,6 +16644,14 @@ }, /turf/open/floor/iron/dark/corner, /area/station/hallway/primary/starboard) +"fqx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/reagent_dispensers/plumbed{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) "fqG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17647,18 +17693,12 @@ /area/station/maintenance/disposal/incinerator) "fEr" = ( /obj/machinery/firealarm/directional/east, -/obj/structure/table/glass, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 5; - pixel_y = -1 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -3; - pixel_y = 2 +/obj/machinery/iv_drip, +/obj/item/reagent_containers/blood, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 }, -/obj/item/healthanalyzer, -/obj/item/clothing/gloves/latex, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/showroomfloor, /area/station/security/medical) "fEu" = ( /obj/effect/turf_decal/siding/yellow{ @@ -17697,6 +17737,7 @@ /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/neutral, /obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/security/brig) "fEP" = ( @@ -20527,13 +20568,14 @@ /area/station/maintenance/starboard) "gzh" = ( /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, /obj/structure/disposalpipe/segment{ dir = 6 }, /obj/effect/mapping_helpers/burnt_floor, +/obj/structure/reagent_dispensers/plumbed{ + dir = 4 + }, +/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/lesser) "gzm" = ( @@ -22076,6 +22118,7 @@ name = "Xenobiology Lab" }, /obj/effect/mapping_helpers/airlock/access/any/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/iron/dark, /area/station/science/xenobiology) "hbf" = ( @@ -22367,6 +22410,7 @@ cycle_id = "brig-maint-passthrough" }, /obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "hfR" = ( @@ -26364,9 +26408,6 @@ /turf/open/floor/iron, /area/station/hallway/primary/central) "inI" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/showroomfloor, /area/station/security/medical) @@ -29442,6 +29483,7 @@ }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/medical) "jgz" = ( @@ -29624,6 +29666,9 @@ dir = 1 }, /obj/effect/turf_decal/box, +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 + }, /turf/open/floor/iron/showroomfloor, /area/station/security/medical) "jjf" = ( @@ -30852,14 +30897,10 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 1 }, -/obj/structure/bed{ - dir = 1 - }, -/obj/item/bedsheet/medical{ - dir = 1 - }, -/obj/machinery/iv_drip, /obj/effect/turf_decal/box, +/obj/structure/table/glass, +/obj/machinery/computer/records/medical/laptop, +/obj/effect/turf_decal/siding/dark_red, /turf/open/floor/iron/showroomfloor, /area/station/security/medical) "jHR" = ( @@ -31247,11 +31288,14 @@ /turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/aft) "jMh" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/open/floor/iron/showroomfloor, +/obj/machinery/shower/directional/north, +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/turf/open/floor/iron/white/textured, /area/station/security/medical) "jMo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33852,6 +33896,15 @@ /obj/effect/turf_decal/box, /turf/open/floor/iron, /area/station/security/brig) +"kKM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/security/brig) "kKP" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -33993,6 +34046,7 @@ /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/security/execution/transfer) "kNf" = ( @@ -40297,9 +40351,13 @@ /area/station/ai_monitored/command/storage/satellite) "mPG" = ( /obj/machinery/vending/wallmed/directional/east, -/obj/structure/table/glass, -/obj/machinery/computer/records/medical/laptop, -/turf/open/floor/iron/dark, +/obj/machinery/computer/operating{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, /area/station/security/medical) "mPP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41623,6 +41681,7 @@ /obj/effect/mapping_helpers/airlock/access/any/science/xenobio, /obj/effect/mapping_helpers/airlock/access/any/science/genetics, /obj/effect/decal/cleanable/dirt, +/obj/structure/liquid_barrier, /turf/open/floor/iron/dark, /area/station/science/xenobiology) "nml" = ( @@ -42594,6 +42653,7 @@ /obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/security/brig) "nCI" = ( @@ -44020,7 +44080,10 @@ pixel_x = 22 }, /obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, /area/station/security/medical) "oeF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44808,9 +44871,6 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "oux" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, /obj/effect/decal/cleanable/blood/old, /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/showroomfloor, @@ -47634,6 +47694,7 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/security/brig) "pop" = ( @@ -49514,6 +49575,8 @@ /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, +/obj/structure/closet/secure_closet/brig_physician, +/obj/item/clothing/suit/jacket/straight_jacket, /turf/open/floor/iron/showroomfloor, /area/station/security/medical) "pUA" = ( @@ -53462,6 +53525,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/liquid_barrier, /turf/open/floor/iron/dark, /area/station/science/xenobiology) "reT" = ( @@ -53937,6 +54001,7 @@ dir = 9 }, /obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/lesser) "ron" = ( @@ -55324,6 +55389,7 @@ /turf/open/floor/plating, /area/station/hallway/primary/central/fore) "rJs" = ( +/obj/machinery/duct, /turf/open/floor/iron/showroomfloor, /area/station/security/medical) "rJJ" = ( @@ -56349,7 +56415,8 @@ /obj/item/storage/medkit/regular, /obj/item/reagent_containers/cup/bottle/epinephrine, /obj/item/reagent_containers/syringe, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/showroomfloor, /area/station/security/medical) "sby" = ( /obj/effect/turf_decal/tile/blue, @@ -57304,8 +57371,8 @@ /turf/open/floor/plating, /area/station/maintenance/department/security/upper) "soW" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, /obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron/showroomfloor, /area/station/security/medical) "spd" = ( @@ -58165,10 +58232,22 @@ /obj/item/pen, /obj/structure/table, /obj/item/radio/intercom/directional/west, +/obj/item/clothing/gloves/latex, +/obj/item/healthanalyzer, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = 5; + pixel_y = -1 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -3; + pixel_y = 2 + }, /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, /area/station/security/medical) "sEx" = ( /obj/effect/turf_decal/tile/neutral{ @@ -62201,7 +62280,9 @@ /obj/structure/bodycontainer/crematorium{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, /area/station/security/medical) "tRL" = ( /obj/effect/decal/cleanable/dirt, @@ -64289,6 +64370,9 @@ "uCd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 + }, /turf/open/floor/iron/showroomfloor, /area/station/security/medical) "uCf" = ( @@ -65490,13 +65574,13 @@ /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden) "uZr" = ( -/obj/structure/grille/broken, /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/disposalpipe/segment, /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/lesser) "uZN" = ( @@ -65828,6 +65912,9 @@ name = "Infirmary" }, /obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/security/medical) "veP" = ( @@ -67854,6 +67941,7 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/brig) "vGs" = ( @@ -71544,13 +71632,17 @@ /turf/open/floor/iron/showroomfloor, /area/station/security/brig) "wKw" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/landmark/start/brig_physician, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, /turf/open/floor/iron/showroomfloor, /area/station/security/medical) "wKG" = ( @@ -72751,6 +72843,10 @@ /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, +/obj/machinery/duct, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 8 + }, /turf/open/floor/iron/showroomfloor, /area/station/security/medical) "xeP" = ( @@ -74762,7 +74858,9 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, /area/station/security/medical) "xNc" = ( /turf/closed/wall/r_wall/rust, @@ -93478,10 +93576,10 @@ kho shZ xNq mlB -vWU +fqx gzh dbR -kgc +bZe kNe qSB gPA @@ -95281,7 +95379,7 @@ pEa phs iMK gyA -enU +kKM gRd jHN sEs @@ -95538,10 +95636,10 @@ cXh rnc rnc vVt -vtf +clH jgv xeL -uCd +aup uCd jiZ veN @@ -95801,7 +95899,7 @@ pUm rJs rJs jMh -ijl +uax lmA rCF eqA diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 3c0e1b7eac14..406cb9344313 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -1925,6 +1925,22 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/hallway/secondary/service) +"aJK" = ( +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"aJN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "aJO" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=14.8-Dorms-Lockers"; @@ -3395,7 +3411,6 @@ /turf/open/floor/iron, /area/station/security/brig) "bhI" = ( -/obj/structure/window/spawner/directional/north, /obj/structure/bodycontainer/morgue, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -12674,6 +12689,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"eMS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "eMU" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 8 @@ -15654,16 +15678,10 @@ /turf/open/floor/carpet, /area/station/service/theater) "fVz" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/rack, +/obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/camera/directional/south{ c_tag = "Brig - Infirmary" }, -/obj/item/clothing/under/rank/medical/scrubs/purple, -/obj/item/storage/medkit/regular, -/obj/item/healthanalyzer{ - pixel_y = -2 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -15671,8 +15689,9 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/computer/operating{ + dir = 1 }, /turf/open/floor/iron/white, /area/station/security/medical) @@ -16289,6 +16308,7 @@ name = "Xenobiology Maintenance" }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "ggi" = ( @@ -17331,6 +17351,7 @@ name = "Xenobio Pen 8 Blast Door" }, /obj/machinery/duct, +/obj/structure/liquid_barrier, /turf/open/floor/iron, /area/station/science/xenobiology) "gyK" = ( @@ -17974,15 +17995,12 @@ /turf/open/floor/iron/dark, /area/station/medical/morgue) "gMg" = ( -/obj/structure/table, -/obj/item/storage/medkit/regular, -/obj/item/reagent_containers/cup/bottle/epinephrine, -/obj/item/reagent_containers/cup/bottle/multiver, -/obj/item/reagent_containers/syringe, /obj/structure/extinguisher_cabinet/directional/west, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, +/obj/structure/closet/secure_closet/brig_physician, +/obj/item/clothing/suit/jacket/straight_jacket, /turf/open/floor/iron/white, /area/station/security/medical) "gMi" = ( @@ -18952,15 +18970,25 @@ /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos/storage/gas) "hcb" = ( -/obj/structure/table/reinforced, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/processor{ - pixel_y = 9 +/obj/structure/table/reinforced, +/obj/item/reagent_containers/condiment/rice{ + pixel_x = -8 }, -/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/west, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/item/reagent_containers/condiment/sugar{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/reagent_containers/condiment/flour{ + pixel_x = 5 + }, +/obj/item/storage/fancy/egg_box, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/security/prison/mess) "hcv" = ( @@ -20910,6 +20938,7 @@ name = "Xenobio Pen 1 Blast Door" }, /obj/machinery/duct, +/obj/structure/liquid_barrier, /turf/open/floor/iron, /area/station/science/xenobiology) "hMy" = ( @@ -22534,7 +22563,8 @@ base_state = "right"; dir = 4; icon_state = "right"; - name = "Infirmary" + name = "Infirmary"; + req_access = list("security") }, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -23751,8 +23781,8 @@ }, /area/station/service/chapel) "iIw" = ( -/obj/structure/bed/roller, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron/white, /area/station/security/medical) "iIC" = ( @@ -29894,6 +29924,7 @@ }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) "kLF" = ( @@ -30328,20 +30359,13 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "kSs" = ( -/obj/structure/table, /obj/item/radio/intercom/directional/north, /obj/machinery/light/small/directional/north, -/obj/item/folder/red{ - pixel_x = 3 - }, -/obj/item/folder/white{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/healthanalyzer, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, +/obj/structure/table/reinforced/rglass, +/obj/machinery/computer/records/medical/laptop, /turf/open/floor/iron/white, /area/station/security/medical) "kSw" = ( @@ -31136,18 +31160,19 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/central) "lhc" = ( -/obj/structure/bed, -/obj/item/bedsheet, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/iv_drip, /obj/effect/turf_decal/tile/red{ dir = 8 }, /obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/structure/table/optable, +/obj/machinery/defibrillator_mount/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/security/medical) "lhk" = ( @@ -32061,12 +32086,14 @@ "lvu" = ( /obj/machinery/door/window/left/directional/west{ dir = 4; - name = "Infirmary" + name = "Infirmary"; + req_access = list("security") }, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron/white, /area/station/security/medical) "lvG" = ( @@ -34762,7 +34789,9 @@ /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/oven, +/obj/machinery/chem_master/condimaster{ + name = "CondiMaster Neo" + }, /obj/effect/turf_decal/bot, /turf/open/floor/iron/white, /area/station/security/prison/mess) @@ -36984,16 +37013,12 @@ /turf/open/floor/iron, /area/station/security/courtroom) "nhO" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Prison Cafeteria"; - network = list("ss13","prison") - }, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 1 }, /obj/machinery/griddle, -/obj/effect/turf_decal/bot, +/obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/white, /area/station/security/prison/mess) "nhP" = ( @@ -37859,6 +37884,17 @@ }, /turf/open/floor/iron/white, /area/station/medical/office) +"nuw" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/structure/table/reinforced, +/obj/machinery/processor{ + pixel_y = 10 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/mess) "nuI" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -39945,6 +39981,7 @@ name = "Xenobio Pen 6 Blast Door" }, /obj/machinery/duct, +/obj/structure/liquid_barrier, /turf/open/floor/iron, /area/station/science/xenobiology) "ohE" = ( @@ -41716,10 +41753,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/storage/tcomms) -"oPn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/security/medical) "oPp" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/tcomms_all, @@ -42098,12 +42131,21 @@ /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hop) "oWZ" = ( -/obj/structure/table, /obj/machinery/airalarm/directional/north, -/obj/machinery/computer/records/medical/laptop, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, +/obj/structure/rack, +/obj/item/storage/medkit/regular, +/obj/item/storage/medkit/regular, +/obj/item/clothing/gloves/latex, +/obj/item/roller, +/obj/item/clothing/mask/surgical, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/item/reagent_containers/cup/bottle/multiver, +/obj/item/reagent_containers/syringe, +/obj/item/clothing/neck/stethoscope, /turf/open/floor/iron/white, /area/station/security/medical) "oXd" = ( @@ -43033,15 +43075,11 @@ /turf/open/floor/iron/white, /area/station/command/heads_quarters/rd) "poE" = ( -/obj/effect/decal/cleanable/food/flour, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/turf_decal/bot, -/obj/machinery/chem_master/condimaster{ - name = "CondiMaster Neo" - }, +/obj/machinery/oven, /turf/open/floor/iron/white, /area/station/security/prison/mess) "poJ" = ( @@ -44630,26 +44668,21 @@ /turf/open/floor/plating, /area/station/maintenance/central) "pQV" = ( -/obj/structure/table/reinforced, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/light/directional/west, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/item/reagent_containers/condiment/flour, -/obj/item/reagent_containers/condiment/rice{ - pixel_x = -10 - }, -/obj/item/reagent_containers/condiment/sugar{ - pixel_x = 9; - pixel_y = 6 +/obj/structure/table/reinforced, +/obj/item/storage/bag/tray, +/obj/item/kitchen/rollingpin{ + pixel_x = -4; + pixel_y = -3 }, -/obj/item/reagent_containers/condiment/flour{ - pixel_x = 7 +/obj/item/kitchen/rollingpin{ + pixel_x = 5; + pixel_y = -3 }, -/obj/item/storage/fancy/egg_box, +/obj/machinery/airalarm/directional/west, /turf/open/floor/iron/white, /area/station/security/prison/mess) "pQW" = ( @@ -46562,6 +46595,7 @@ name = "Xenobiology Maintenance" }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "qAA" = ( @@ -46607,6 +46641,7 @@ /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/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) "qBq" = ( @@ -48820,6 +48855,7 @@ name = "Xenobio Pen 4 Blast Door" }, /obj/machinery/duct, +/obj/structure/liquid_barrier, /turf/open/floor/iron, /area/station/science/xenobiology) "rrT" = ( @@ -49088,6 +49124,7 @@ name = "Maximum Security Test Chamber"; req_access = list("xenobiology") }, +/obj/structure/liquid_barrier, /turf/open/floor/engine, /area/station/science/xenobiology) "rvL" = ( @@ -49148,6 +49185,7 @@ name = "Xenobio Pen 3 Blast Door" }, /obj/machinery/duct, +/obj/structure/liquid_barrier, /turf/open/floor/iron, /area/station/science/xenobiology) "rwE" = ( @@ -51137,9 +51175,6 @@ /obj/structure/table, /turf/open/floor/iron/white, /area/station/science/robotics/lab) -"sch" = ( -/turf/closed/wall, -/area/station/security/medical) "sck" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes/line{ @@ -52545,6 +52580,7 @@ name = "Xenobio Pen 5 Blast Door" }, /obj/machinery/duct, +/obj/structure/liquid_barrier, /turf/open/floor/iron, /area/station/science/xenobiology) "sCz" = ( @@ -52709,12 +52745,6 @@ /obj/structure/cable, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) -"sEH" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/item/tank/internals/oxygen, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "sEI" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 @@ -55562,6 +55592,15 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron/dark, /area/station/engineering/storage/tcomms) +"tFg" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "tFj" = ( /obj/structure/railing/corner{ dir = 4 @@ -58851,6 +58890,10 @@ /obj/effect/turf_decal/trimline/blue/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/duct, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, /turf/open/floor/iron/white, /area/station/security/medical) "uLa" = ( @@ -59607,6 +59650,7 @@ dir = 10 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron/white, /area/station/security/medical) "vbq" = ( @@ -60156,13 +60200,22 @@ /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "vkO" = ( -/obj/structure/table, -/obj/item/clothing/gloves/latex, -/obj/item/clothing/mask/surgical, -/obj/item/reagent_containers/spray/cleaner, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, +/obj/structure/table/reinforced/rglass, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/folder/white{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/pen, +/obj/item/folder/red{ + pixel_x = 3 + }, /turf/open/floor/iron/white, /area/station/security/medical) "vkP" = ( @@ -61630,24 +61683,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/break_room) -"vMW" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/airalarm/directional/west, -/obj/item/storage/bag/tray, -/obj/item/kitchen/rollingpin{ - pixel_y = -4; - pixel_x = -5 - }, -/obj/item/kitchen/rollingpin{ - pixel_y = -4; - pixel_x = 4 - }, -/turf/open/floor/iron/white, -/area/station/security/prison/mess) "vMX" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -63612,6 +63647,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/fore) "wwt" = ( @@ -64363,17 +64399,12 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) "wLH" = ( -/obj/structure/table, -/obj/structure/window/spawner/directional/east, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/stripes/end, +/obj/machinery/shower/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/blood, +/turf/open/floor/iron/white/textured, /area/station/security/medical) "wMk" = ( /obj/machinery/door/airlock/maintenance, @@ -65509,6 +65540,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/engine, /area/station/science/cytology) "xfD" = ( @@ -67738,6 +67770,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/obj/effect/landmark/start/brig_physician, +/obj/structure/chair/office, /turf/open/floor/iron/white, /area/station/security/medical) "xUK" = ( @@ -68043,7 +68077,7 @@ /turf/open/floor/wood, /area/station/maintenance/port/aft) "xZv" = ( -/obj/effect/spawner/random/loafer, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/fore) "xZx" = ( @@ -88595,12 +88629,12 @@ hfU aXa jMx umN -poE muu +poE nhO -pQV -vMW hcb +pQV +nuw aXa fbX oGr @@ -90932,8 +90966,8 @@ aaa aaa aaa jXu -sEH -knQ +aJK +xZv siY jXu jXu @@ -91189,9 +91223,9 @@ aaa aaa bxr jXu -rOz +aJK xZv -siY +tFg jXu aaa aaa @@ -91448,7 +91482,7 @@ uza hZQ jXu jXu -siY +tFg jXu aaa aaa @@ -91705,7 +91739,7 @@ vxC hZQ qmO fsQ -oyO +eMS jXu aaa aaa @@ -91962,7 +91996,7 @@ gdZ hZQ qmO dqc -wfn +aJN jXu aaa aaa @@ -92729,7 +92763,7 @@ tjh pav wsX dla -sch +nRZ kSs xUH euX @@ -92986,12 +93020,12 @@ tjh hQH eXj vSo -sch +nRZ oWZ -oPn +iIw iIw lhc -sch +nRZ bhn tjh uTF @@ -93243,12 +93277,12 @@ tjh wsX wsX fTm -sch +nRZ wLH lvu iom fVz -sch +nRZ pHb guS vVy diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index a0186f0e8889..d67925aea236 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -7212,7 +7212,8 @@ base_state = "right"; dir = 4; icon_state = "right"; - name = "Brig Infirmary" + name = "Brig Infirmary"; + req_access = list("security") }, /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 @@ -10255,6 +10256,8 @@ }, /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/blood, /turf/open/floor/iron/white, /area/station/security/medical) "ceQ" = ( @@ -11071,6 +11074,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/chapel/office) +"csW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/eva) "cta" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -11319,6 +11328,13 @@ /obj/item/storage/box/lights/tubes, /turf/open/floor/iron, /area/station/service/janitor) +"cxS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/plumbed{ + name = "dormitory water reservoir" + }, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/eva) "cxV" = ( /obj/machinery/light/directional/east, /obj/structure/chair/office{ @@ -20988,6 +21004,7 @@ id = "containdeez2"; name = "Xenobiology Containment Blast Door" }, +/obj/structure/liquid_barrier, /turf/open/floor/engine, /area/station/science/xenobiology) "fFx" = ( @@ -27082,9 +27099,9 @@ /turf/open/floor/iron/smooth, /area/station/maintenance/tram/right) "hKz" = ( -/obj/structure/bed, /obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/airalarm/directional/south, +/obj/structure/table/optable, +/obj/machinery/defibrillator_mount/directional/south, /turf/open/floor/iron/white, /area/station/security/medical) "hKH" = ( @@ -28879,6 +28896,7 @@ dir = 8 }, /obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/white, /area/station/security/medical) "inP" = ( @@ -31656,6 +31674,7 @@ name = "Secure Pen" }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/engine, /area/station/science/xenobiology) "jge" = ( @@ -37384,18 +37403,18 @@ /turf/open/floor/iron/white, /area/station/science/lab) "kUf" = ( -/obj/structure/table/glass, +/obj/structure/table/reinforced/rglass, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/obj/item/storage/box/bodybags, -/obj/item/reagent_containers/syringe, /obj/structure/extinguisher_cabinet/directional/west, /obj/machinery/camera{ c_tag = "Security - Medical Center"; dir = 10; network = list("ss13","Security") }, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/roller, /turf/open/floor/iron/white, /area/station/security/medical) "kUh" = ( @@ -39680,6 +39699,7 @@ dir = 10 }, /obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/white, /area/station/security/medical) "lGu" = ( @@ -44070,6 +44090,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/service) +"nco" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/eva) "ncE" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/cable, @@ -45571,6 +45596,7 @@ req_access = list("xenobiology") }, /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/obj/structure/liquid_barrier, /turf/open/floor/engine, /area/station/science/xenobiology) "nzh" = ( @@ -46076,6 +46102,7 @@ /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron/white, /area/station/security/medical) "nHu" = ( @@ -46756,10 +46783,20 @@ /turf/open/floor/iron/white, /area/station/science/ordnance/freezerchamber) "nSs" = ( -/obj/structure/table/glass, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, +/obj/machinery/airalarm/directional/north, +/obj/structure/rack, +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/regular, +/obj/item/storage/box/bodybags, +/obj/item/reagent_containers/syringe, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/item/reagent_containers/cup/bottle/multiver, /turf/open/floor/iron/white, /area/station/security/medical) "nSI" = ( @@ -47078,11 +47115,9 @@ /turf/open/space/basic, /area/space/nearstation) "nYY" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 5 - }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/stripes/end, +/obj/machinery/shower/directional/south, +/turf/open/floor/iron/white/textured, /area/station/security/medical) "nZJ" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -53509,6 +53544,7 @@ name = "Security Maintenance Hatch" }, /obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, /turf/open/floor/iron/smooth, /area/station/maintenance/department/eva) "qcY" = ( @@ -53554,16 +53590,13 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/central) "qdr" = ( -/obj/structure/table/glass, +/obj/structure/table/reinforced/rglass, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/regular, /obj/item/radio/intercom/directional/west, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/neck/stethoscope, /turf/open/floor/iron/white, /area/station/security/medical) "qdv" = ( @@ -54932,10 +54965,11 @@ /turf/open/floor/catwalk_floor, /area/station/maintenance/tram/mid) "qAg" = ( -/obj/structure/bodycontainer/morgue, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 }, +/obj/structure/closet/secure_closet/brig_physician, +/obj/item/clothing/suit/jacket/straight_jacket, /turf/open/floor/iron/dark, /area/station/security/medical) "qAi" = ( @@ -58474,10 +58508,12 @@ /turf/open/floor/plating/airless, /area/station/engineering) "rFF" = ( -/obj/structure/bed, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 }, +/obj/machinery/computer/operating{ + dir = 1 + }, /turf/open/floor/iron/white, /area/station/security/medical) "rFW" = ( @@ -62836,7 +62872,7 @@ /turf/open/floor/carpet, /area/station/service/chapel) "sZD" = ( -/obj/structure/table/glass, +/obj/structure/table/reinforced/rglass, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, @@ -65863,6 +65899,7 @@ id = "containdeez6"; name = "Xenobiology Containment Blast Door" }, +/obj/structure/liquid_barrier, /turf/open/floor/engine, /area/station/science/xenobiology) "tXY" = ( @@ -66414,6 +66451,7 @@ /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, /obj/structure/disposalpipe/segment, +/obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/xenobiology) "uiI" = ( @@ -70370,8 +70408,19 @@ name = "Cytology Maintenance Hatch" }, /obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/structure/liquid_barrier, /turf/open/floor/catwalk_floor, /area/station/science/xenobiology) +"vqi" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/landmark/start/brig_physician, +/obj/structure/chair/office, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/security/medical) "vqn" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -72184,6 +72233,7 @@ /area/station/command/heads_quarters/ce) "vRy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/duct, /turf/open/floor/iron/white, /area/station/security/medical) "vRA" = ( @@ -78169,6 +78219,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/duct, /turf/open/floor/catwalk_floor, /area/station/maintenance/department/eva) "xSD" = ( @@ -158511,10 +158562,10 @@ aaa aaa aaa osk -gKX -gKX +cxS +nco qcV -jta +csW ayR tVp mdV @@ -158771,7 +158822,7 @@ osk vkc gKX osk -jta +csW ayR xMg xMg @@ -159028,7 +159079,7 @@ run run run ayR -jta +csW ayR hzN hzN @@ -159285,7 +159336,7 @@ sZD kUf lqP ayR -jta +csW ayR dsF dsF @@ -159538,11 +159589,11 @@ dta mjM ceO inO -inO +vqi inO lGn xSB -jta +csW ayR eeL kHZ diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 86e484c7dcac..bac63226394a 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -154,6 +154,7 @@ GLOBAL_LIST_INIT(syndicate_employers, list( "Tiger Cooperative Fanatic", "Waffle Corporation Terrorist", "Waffle Corporation", + "The Ashen Forge Member", )) ///employers that are from nanotrasen GLOBAL_LIST_INIT(nanotrasen_employers, list( @@ -171,6 +172,7 @@ GLOBAL_LIST_INIT(hijack_employers, list( "Gone Postal", "Tiger Cooperative Fanatic", "Waffle Corporation Terrorist", + "The Ashen Forge Member", )) ///employers who hire agents to do a task and escape... or martyrdom. whatever @@ -184,6 +186,7 @@ GLOBAL_LIST_INIT(normal_employers, list( "Legal Trouble", "MI13", "Waffle Corporation", + "The Ashen Forge Member", )) ///employers for malfunctioning ais. they do not have sides, unlike traitors. diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 9d591178c574..42bca6794547 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -95,6 +95,7 @@ #define SECHUD_BARTENDER "hudbartender" #define SECHUD_BITRUNNER "hudbitrunner" #define SECHUD_BOTANIST "hudbotanist" +#define SECHUD_BRIG_PHYSICIAN "hudbrigphysician" #define SECHUD_CAPTAIN "hudcaptain" #define SECHUD_CARGO_TECHNICIAN "hudcargotechnician" #define SECHUD_CHAPLAIN "hudchaplain" diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index a4c6bdc05795..3af15188f8b8 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -190,12 +190,15 @@ GLOBAL_LIST_INIT(crafting_category, list( #define RCD_FLOODLIGHT 8 #define RCD_WALLFRAME 9 #define RCD_REFLECTOR 10 +#define RCD_GIRDER 11 #define RCD_UPGRADE_FRAMES (1<<0) #define RCD_UPGRADE_SIMPLE_CIRCUITS (1<<1) #define RCD_UPGRADE_SILO_LINK (1<<2) #define RCD_UPGRADE_FURNISHING (1<<3) +#define RCD_UPGRADE_ANTI_INTERRUPT (1<<4) +#define RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN (1<<5) #define RPD_UPGRADE_UNWRENCH (1<<0) @@ -213,6 +216,9 @@ GLOBAL_LIST_INIT(crafting_category, list( /// How much less resources the RCD uses when reconstructing #define RCD_MEMORY_COST_BUFF 8 +/// If set to TRUE in rcd_vals, will bypass the cooldown on slowing down frequent use +#define RCD_RESULT_BYPASS_FREQUENT_USE_COOLDOWN "bypass_frequent_use_cooldown" + // Defines for the construction component #define FORWARD 1 #define BACKWARD -1 diff --git a/code/__DEFINES/dcs/signals/signals_turf.dm b/code/__DEFINES/dcs/signals/signals_turf.dm index f5a91db4c93d..397345cc498d 100644 --- a/code/__DEFINES/dcs/signals/signals_turf.dm +++ b/code/__DEFINES/dcs/signals/signals_turf.dm @@ -28,6 +28,8 @@ ///called on liquid creation #define COMSIG_TURF_LIQUIDS_CREATION "turf_liquids_creation" + /// Blocks the liquid from being created. + #define BLOCK_LIQUID_CREATION (1 << 0) #define COMSIG_TURF_MOB_FALL "turf_mob_fall" diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 8ab7647d47e8..77f6a7f9823f 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -46,6 +46,7 @@ #define JOB_PERSONAL_AI "Personal AI" //Security #define JOB_WARDEN "Warden" +#define JOB_BRIG_PHYSICIAN "Brig Physician" #define JOB_DETECTIVE "Detective" #define JOB_SECURITY_OFFICER "Security Officer" #define JOB_SECURITY_OFFICER_MEDICAL "Security Officer (Medical)" @@ -150,10 +151,11 @@ #define JOB_DISPLAY_ORDER_GENETICIST 31 #define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 32 #define JOB_DISPLAY_ORDER_WARDEN 33 -#define JOB_DISPLAY_ORDER_DETECTIVE 34 -#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 35 -#define JOB_DISPLAY_ORDER_SECURITY_ASSISTANT 36 // monkestation edit: security assistants -#define JOB_DISPLAY_ORDER_PRISONER 37 +#define JOB_DISPLAY_ORDER_BRIG_PHYSICIAN 34 +#define JOB_DISPLAY_ORDER_DETECTIVE 35 +#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 36 +#define JOB_DISPLAY_ORDER_SECURITY_ASSISTANT 37 // monkestation edit: security assistants +#define JOB_DISPLAY_ORDER_PRISONER 38 #define DEPARTMENT_UNASSIGNED "No Department" diff --git a/code/__DEFINES/~monkestation/company.dm b/code/__DEFINES/~monkestation/company.dm index bc7bf4e7329f..a01765a02ba8 100644 --- a/code/__DEFINES/~monkestation/company.dm +++ b/code/__DEFINES/~monkestation/company.dm @@ -29,6 +29,7 @@ #define COMPANY_REMOVED "It has had [span_grey("all identifying marks scrubbed off")]." +#define COMPANY_ASHENFORGE "It has a [span_green("unlit forge")] engraved into it along with the words [span_grey("The Ashen Forge")] below it." #define span_emote(str) ("" + str + "") #define span_maptext(str) ("" + str + "") diff --git a/code/__DEFINES/~monkestation/holomaps.dm b/code/__DEFINES/~monkestation/holomaps.dm index a03999cea984..34d40f6a7aed 100644 --- a/code/__DEFINES/~monkestation/holomaps.dm +++ b/code/__DEFINES/~monkestation/holomaps.dm @@ -17,6 +17,9 @@ #define HOLOMAP_ROCK "#66666644" // Color of mineral walls #define HOLOMAP_HOLOFIER "#0096bb" // Whole map is multiplied by this to give it a green holoish look +#define HOLOMAP_AREACOLOR_SHIELD_1 rgb(0, 119, 255, 64) +#define HOLOMAP_AREACOLOR_SHIELD_2 rgb(0, 255, 255, 64) + #define HOLOMAP_AREACOLOR_COMMAND "#3434d499" #define HOLOMAP_AREACOLOR_SECURITY "#AE121299" #define HOLOMAP_AREACOLOR_MEDICAL "#447bc299" diff --git a/code/__DEFINES/~monkestation/traits.dm b/code/__DEFINES/~monkestation/traits.dm index 4388c7e409c7..a56f05ae57fd 100644 --- a/code/__DEFINES/~monkestation/traits.dm +++ b/code/__DEFINES/~monkestation/traits.dm @@ -36,5 +36,13 @@ #define ABDUCTOR_GLAND_VENTCRAWLING_TRAIT "abductor_gland_ventcrawling" #define TRAIT_BETTER_CYBERCONNECTOR "better_cyberconnector_hacking" + /// Allows the user to instantly reload. #define TRAIT_INSTANT_RELOAD "instant_reload" + + +// /turf/open +/// If a trait is considered as having "coverage" by a meteor shield. +#define TRAIT_COVERED_BY_METEOR_SHIELD "covered_by_meteor_shield" +/// Liquids cannot spread over this turf. +#define TRAIT_BLOCK_LIQUID_SPREAD "block_liquid_spread" diff --git a/code/__HELPERS/construction.dm b/code/__HELPERS/construction.dm index ad9f24cef3c1..fe4971b894fb 100644 --- a/code/__HELPERS/construction.dm +++ b/code/__HELPERS/construction.dm @@ -5,6 +5,7 @@ return defaults + list( "cost" = defaults["cost"] / RCD_MEMORY_COST_BUFF, "delay" = defaults["delay"] / RCD_MEMORY_SPEED_BUFF, + RCD_RESULT_BYPASS_FREQUENT_USE_COOLDOWN = TRUE, ) else return defaults diff --git a/code/__HELPERS/paths/jps.dm b/code/__HELPERS/paths/jps.dm index 6ef883c7d2b4..79a4d0204f51 100644 --- a/code/__HELPERS/paths/jps.dm +++ b/code/__HELPERS/paths/jps.dm @@ -34,7 +34,7 @@ previous_node = incoming_previous_node number_tiles = previous_node.number_tiles + jumps node_goal = previous_node.node_goal - heuristic = get_dist(tile, node_goal) + heuristic = get_dist_euclidean(tile, node_goal) f_value = number_tiles + heuristic // otherwise, no parent node means this is from a subscan lateral scan, so we just need the tile for now until we call [datum/jps/proc/update_parent] on it @@ -47,7 +47,7 @@ node_goal = previous_node.node_goal jumps = get_dist(tile, previous_node.tile) number_tiles = previous_node.number_tiles + jumps - heuristic = get_dist(tile, node_goal) + heuristic = get_dist_euclidean(tile, node_goal) f_value = number_tiles + heuristic /// TODO: Macro this to reduce proc overhead diff --git a/code/__HELPERS/spatial_info.dm b/code/__HELPERS/spatial_info.dm index f3d47da9f77f..f5d0155343ca 100644 --- a/code/__HELPERS/spatial_info.dm +++ b/code/__HELPERS/spatial_info.dm @@ -253,7 +253,7 @@ return atoms ///Returns the distance between two atoms -/proc/get_dist_euclidian(atom/first_location as turf|mob|obj, atom/second_location as turf|mob|obj) +/proc/get_dist_euclidean(atom/first_location as turf|mob|obj, atom/second_location as turf|mob|obj) var/dx = first_location.x - second_location.x var/dy = first_location.y - second_location.y diff --git a/code/controllers/subsystem/explosions.dm b/code/controllers/subsystem/explosions.dm index e9933a579932..66a171b90a3e 100644 --- a/code/controllers/subsystem/explosions.dm +++ b/code/controllers/subsystem/explosions.dm @@ -514,7 +514,7 @@ SUBSYSTEM_DEF(explosions) * - [creaking_sound][/sound]: The sound that plays when the station creaks during the explosion. * - [hull_creaking_sound][/sound]: The sound that plays when the station creaks after the explosion. */ -/datum/controller/subsystem/explosions/proc/shake_the_room(turf/epicenter, near_distance, far_distance, quake_factor, echo_factor, creaking, sound/near_sound = sound(get_sfx(SFX_EXPLOSION)), sound/far_sound = sound('sound/effects/explosionfar.ogg'), sound/echo_sound = sound('sound/effects/explosion_distant.ogg'), sound/creaking_sound = sound(get_sfx(SFX_EXPLOSION_CREAKING)), hull_creaking_sound = sound(get_sfx(SFX_HULL_CREAKING))) +/datum/controller/subsystem/explosions/proc/shake_the_room(turf/epicenter, near_distance, far_distance, quake_factor, echo_factor, creaking, sound/near_sound = sound(get_sfx(SFX_EXPLOSION)), sound/far_sound = sound('sound/effects/explosionfar.ogg'), sound/echo_sound = sound('sound/effects/explosion_distant.ogg'), sound/creaking_sound = sound(get_sfx(SFX_EXPLOSION_CREAKING)), hull_creaking_sound = sound(get_sfx(SFX_HULL_CREAKING)), pressure_affected = TRUE) // monkestation edit: add pressure_affected var/frequency = get_rand_frequency() var/blast_z = epicenter.z if(isnull(creaking)) // Autoset creaking. @@ -535,18 +535,18 @@ SUBSYSTEM_DEF(explosions) var/base_shake_amount = sqrt(near_distance / (distance + 1)) if(distance <= round(near_distance + world.view - 2, 1)) // If you are close enough to see the effects of the explosion first-hand (ignoring walls) - listener.playsound_local(epicenter, null, 100, TRUE, frequency, sound_to_use = near_sound) + listener.playsound_local(epicenter, null, 100, TRUE, frequency, pressure_affected = pressure_affected, sound_to_use = near_sound) // monkestation edit: pressure_affected if(base_shake_amount > 0) shake_camera(listener, NEAR_SHAKE_DURATION, clamp(base_shake_amount, 0, NEAR_SHAKE_CAP)) else if(distance < far_distance) // You can hear a far explosion if you are outside the blast radius. Small explosions shouldn't be heard throughout the station. var/far_volume = clamp(far_distance / 2, FAR_LOWER, FAR_UPPER) if(creaking) - listener.playsound_local(epicenter, null, far_volume, TRUE, frequency, sound_to_use = creaking_sound, distance_multiplier = 0) + listener.playsound_local(epicenter, null, far_volume, TRUE, frequency, pressure_affected = pressure_affected, sound_to_use = creaking_sound, distance_multiplier = 0) // monkestation edit: pressure_affected else if(prob(FAR_SOUND_PROB)) // Sound variety during meteor storm/tesloose/other bad event - listener.playsound_local(epicenter, null, far_volume, TRUE, frequency, sound_to_use = far_sound, distance_multiplier = 0) + listener.playsound_local(epicenter, null, far_volume, TRUE, frequency, pressure_affected = pressure_affected, sound_to_use = far_sound, distance_multiplier = 0) // monkestation edit: pressure_affected else - listener.playsound_local(epicenter, null, far_volume, TRUE, frequency, sound_to_use = echo_sound, distance_multiplier = 0) + listener.playsound_local(epicenter, null, far_volume, TRUE, frequency, pressure_affected = pressure_affected, sound_to_use = echo_sound, distance_multiplier = 0) // monkestation edit: pressure_affected if(base_shake_amount || quake_factor) base_shake_amount = max(base_shake_amount, quake_factor * 3, 0) // Devastating explosions rock the station and ground @@ -559,7 +559,7 @@ SUBSYSTEM_DEF(explosions) shake_camera(listener, FAR_SHAKE_DURATION, clamp(quake_factor / 4, 0, FAR_SHAKE_CAP)) else echo_volume = 40 - listener.playsound_local(epicenter, null, echo_volume, TRUE, frequency, sound_to_use = echo_sound, distance_multiplier = 0) + listener.playsound_local(epicenter, null, echo_volume, TRUE, frequency, pressure_affected = pressure_affected, sound_to_use = echo_sound, distance_multiplier = 0) // monkestation edit: pressure_affected if(creaking) // 5 seconds after the bang, the station begins to creak addtimer(CALLBACK(listener, TYPE_PROC_REF(/mob, playsound_local), epicenter, null, rand(FREQ_LOWER, FREQ_UPPER), TRUE, frequency, null, null, FALSE, hull_creaking_sound, 0), CREAK_DELAY) diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index b7bde6a8f01a..7ba49d221cce 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -157,7 +157,10 @@ SUBSYSTEM_DEF(garbage) lastlevel = level - //We do this rather then for(var/refID in queue) because that sort of for loop copies the whole list. +// 1 from the hard reference in the queue, and 1 from the variable used before this +#define REFS_WE_EXPECT 2 + + //We do this rather then for(var/list/ref_info in queue) because that sort of for loop copies the whole list. //Normally this isn't expensive, but the gc queue can grow to 40k items, and that gets costly/causes overrun. for (var/i in 1 to length(queue)) var/list/L = queue[i] @@ -173,10 +176,9 @@ SUBSYSTEM_DEF(garbage) count++ var/datum/D = L[GC_QUEUE_ITEM_REF] - // 1 from the hard reference in the queue, and 1 from the variable used before this - // If that's all we've got, send er off - if (refcount(D) == 2) + // If that's all we've got, send er off + if (refcount(D) == REFS_WE_EXPECT) ++gcedlasttick ++totalgcs pass_counts[level]++ @@ -197,12 +199,15 @@ SUBSYSTEM_DEF(garbage) switch (level) if (GC_QUEUE_CHECK) #ifdef REFERENCE_TRACKING + // Decides how many refs to look for (potentially) + // Based off the remaining and the ones we can account for + var/remaining_refs = refcount(D) - REFS_WE_EXPECT if(reference_find_on_fail[text_ref(D)]) - INVOKE_ASYNC(D, TYPE_PROC_REF(/datum,find_references)) + INVOKE_ASYNC(D, TYPE_PROC_REF(/datum,find_references), remaining_refs) ref_searching = TRUE #ifdef GC_FAILURE_HARD_LOOKUP else - INVOKE_ASYNC(D, TYPE_PROC_REF(/datum,find_references)) + INVOKE_ASYNC(D, TYPE_PROC_REF(/datum,find_references), remaining_refs) ref_searching = TRUE #endif reference_find_on_fail -= text_ref(D) @@ -250,6 +255,8 @@ SUBSYSTEM_DEF(garbage) queue.Cut(1,count+1) count = 0 +#undef REFS_WE_EXPECT + /datum/controller/subsystem/garbage/proc/Queue(datum/D, level = GC_QUEUE_FILTER) if (isnull(D)) return diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index d52fe83856a4..6a9cc631cf52 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -74,7 +74,7 @@ SUBSYSTEM_DEF(radiation) if(pulse_information.chance < 100) // Prevents log(0) runtime if chance is 100% intensity = -log(1 - pulse_information.chance / 100) * (1 + pulse_information.max_range / 2) ** 2 - perceived_intensity = intensity * INVERSE((1 + get_dist_euclidian(source, target)) ** 2) // Diminishes over range. + perceived_intensity = intensity * INVERSE((1 + get_dist_euclidean(source, target)) ** 2) // Diminishes over range. perceived_intensity *= (current_insulation - pulse_information.threshold) * INVERSE(1 - pulse_information.threshold) // Perceived intensity decreases as objects that absorb radiation block its trajectory. perceived_chance = 100 * (1 - NUM_E ** -perceived_intensity) else diff --git a/code/datums/ai/objects/mod.dm b/code/datums/ai/objects/mod.dm index 2bb555d281bf..84f5678addbf 100644 --- a/code/datums/ai/objects/mod.dm +++ b/code/datums/ai/objects/mod.dm @@ -4,6 +4,7 @@ BB_MOD_TARGET, BB_MOD_IMPLANT, ) + can_idle = FALSE max_target_distance = MOD_AI_RANGE //a little spicy but its one specific item that summons it, and it doesn't run otherwise ai_movement = /datum/ai_movement/jps ///ID card generated from the suit's required access. Used for pathing. diff --git a/code/datums/datum.dm b/code/datums/datum.dm index b17cef4fe6e5..72c945ef29f6 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -60,8 +60,12 @@ var/list/filter_data #ifdef REFERENCE_TRACKING - var/running_find_references + /// When was this datum last touched by a reftracker? + /// If this value doesn't match with the start of the search + /// We know this datum has never been seen before, and we should check it var/last_find_references = 0 + /// How many references we're trying to find when searching + var/references_to_clear = 0 #ifdef REFERENCE_TRACKING_DEBUG ///Stores info about where refs are found, used for sanity checks and testing var/list/found_refs diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm index 3a1d921fce3f..d1926a76e58b 100644 --- a/code/datums/looping_sounds/_looping_sound.dm +++ b/code/datums/looping_sounds/_looping_sound.dm @@ -170,7 +170,7 @@ if(!each_once) . = play_from while(!isfile(.) && !isnull(.)) - . = pick_weight(.) + . = pick_weight(fill_with_ones(.)) return . @@ -182,7 +182,7 @@ // Tree is a list of lists containign files // If an entry in the tree goes to 0 length, we cut it from the list tree += list(.) - . = pick_weight(.) + . = pick_weight(fill_with_ones(.)) if(!isfile(.)) return diff --git a/code/datums/status_effects/agent_pinpointer.dm b/code/datums/status_effects/agent_pinpointer.dm index d620ce3796c3..3f64ff252a02 100644 --- a/code/datums/status_effects/agent_pinpointer.dm +++ b/code/datums/status_effects/agent_pinpointer.dm @@ -43,7 +43,7 @@ if(here.z != there.z) linked_alert.icon_state = "pinonnull" return - if(get_dist_euclidian(here,there) <= minimum_range + rand(0, range_fuzz_factor)) + if(get_dist_euclidean(here,there) <= minimum_range + rand(0, range_fuzz_factor)) linked_alert.icon_state = "pinondirect" return linked_alert.setDir(get_dir(here, there)) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 0a983d97d08f..704377e6aaf8 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -113,6 +113,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/camera/xray, 0) /obj/machinery/camera/proc/create_prox_monitor() if(!proximity_monitor) proximity_monitor = new(src, 1) + RegisterSignal(proximity_monitor, COMSIG_QDELETING, PROC_REF(proximity_deleted)) + +/obj/machinery/camera/proc/proximity_deleted() + SIGNAL_HANDLER + proximity_monitor = null /obj/machinery/camera/proc/set_area_motion(area/A) area_motion = A diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 4abc323961de..e151967a1c7f 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -106,12 +106,13 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) JOB_SECURITY_OFFICER_SUPPLY = 16, JOB_DETECTIVE = 17, JOB_SECURITY_ASSISTANT = 18, // monkestation edit: add security assistants + JOB_BRIG_PHYSICIAN = 19, // monkestation edit: add brig physician // 20-29: Medbay - JOB_CHIEF_MEDICAL_OFFICER = 20, - JOB_CHEMIST = 21, - JOB_VIROLOGIST = 22, - JOB_MEDICAL_DOCTOR = 23, - JOB_PARAMEDIC = 24, + JOB_CHIEF_MEDICAL_OFFICER = 21, + JOB_CHEMIST = 22, + JOB_VIROLOGIST = 23, + JOB_MEDICAL_DOCTOR = 24, + JOB_PARAMEDIC = 25, // 30-39: Science JOB_RESEARCH_DIRECTOR = 30, JOB_SCIENTIST = 31, diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 45aed88e0630..9b9fedce401d 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1587,7 +1587,7 @@ if(security_level != AIRLOCK_SECURITY_NONE) to_chat(user, span_notice("[src]'s reinforcement needs to be removed first.")) return FALSE - return list("mode" = RCD_DECONSTRUCT, "delay" = 50, "cost" = 32) + return list("mode" = RCD_DECONSTRUCT, "delay" = 5 SECONDS, "cost" = 32) return FALSE /obj/machinery/door/airlock/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index 4c5e080c653b..73ae0994eb51 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -22,6 +22,25 @@ . = ..() . += span_notice("Has a neat selection menu for modifying airlock access levels.") +/** + * Create a copy of the electronics + * Arguments + * * [location][atom]- the location to create the new copy in + */ +/obj/item/electronics/airlock/proc/create_copy(atom/location) + //create a copy + var/obj/item/electronics/airlock/new_electronics = new(location) + //copy all params + new_electronics.accesses = accesses.Copy() + new_electronics.one_access = one_access + new_electronics.unres_sides = unres_sides + new_electronics.passed_name = passed_name + new_electronics.passed_cycle_id = passed_cycle_id + new_electronics.shell = shell + //return copy + return new_electronics + + /obj/item/electronics/airlock/ui_state(mob/user) return GLOB.hands_state diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index df8eb2e031f4..e24582aef73c 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -901,9 +901,9 @@ /obj/structure/firelock_frame/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) if(the_rcd.mode == RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 50, "cost" = 16) + return list("mode" = RCD_DECONSTRUCT, "delay" = 5 SECONDS, "cost" = 16) else if((constructionStep == CONSTRUCTION_NO_CIRCUIT) && (the_rcd.upgrade & RCD_UPGRADE_SIMPLE_CIRCUITS)) - return list("mode" = RCD_UPGRADE_SIMPLE_CIRCUITS, "delay" = 20, "cost" = 1) + return list("mode" = RCD_UPGRADE_SIMPLE_CIRCUITS, "delay" = 2 SECONDS, "cost" = 1) return FALSE /obj/structure/firelock_frame/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 541bc67d6870..70401f7eda65 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -441,7 +441,7 @@ /obj/machinery/door/window/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 50, "cost" = 32) + return list("mode" = RCD_DECONSTRUCT, "delay" = 5 SECONDS, "cost" = 32) return FALSE /obj/machinery/door/window/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index e79869dfbf71..65077390c81e 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -434,7 +434,7 @@ /obj/machinery/firealarm/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) if((buildstage == ALARM_NO_CIRCUIT) && (the_rcd.upgrade & RCD_UPGRADE_SIMPLE_CIRCUITS)) - return list("mode" = RCD_WALLFRAME, "delay" = 20, "cost" = 1) + return list("mode" = RCD_WALLFRAME, "delay" = 2 SECONDS, "cost" = 1) return FALSE /obj/machinery/firealarm/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index 550ec554a055..558fae298e16 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -30,6 +30,7 @@ I.forceMove(get_turf(src)) if(linked_teleporter) linked_teleporter.linked_reclaimer = null + linked_teleporter = null return ..() /obj/machinery/gulag_item_reclaimer/emag_act(mob/user, obj/item/card/emag/emag_card) diff --git a/code/game/machinery/gulag_teleporter.dm b/code/game/machinery/gulag_teleporter.dm index 067a6b990a7a..f05c79941847 100644 --- a/code/game/machinery/gulag_teleporter.dm +++ b/code/game/machinery/gulag_teleporter.dm @@ -43,6 +43,7 @@ The console is located at computer/gulag_teleporter.dm /obj/machinery/gulag_teleporter/Destroy() if(linked_reclaimer) linked_reclaimer.linked_teleporter = null + linked_reclaimer = null return ..() /obj/machinery/gulag_teleporter/interact(mob/user) diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 4776cf274316..d03cfea3f178 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -507,11 +507,12 @@ layer = ABOVE_ALL_MOB_LAYER plane = ABOVE_GAME_PLANE anchored = TRUE - mouse_opacity = MOUSE_OPACITY_TRANSPARENT + obj_flags = CAN_BE_HIT + mouse_opacity = MOUSE_OPACITY_OPAQUE var/status = 0 var/delay = 0 -/obj/effect/constructing_effect/Initialize(mapload, rcd_delay, rcd_status) +/obj/effect/constructing_effect/Initialize(mapload, rcd_delay, rcd_status, rcd_upgrades) . = ..() status = rcd_status delay = rcd_delay @@ -522,6 +523,26 @@ else update_appearance() + if (rcd_upgrades & RCD_UPGRADE_ANTI_INTERRUPT) + color = list( + 1.0, 0.5, 0.5, 0.0, + 0.1, 0.0, 0.0, 0.0, + 0.1, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 1.0, + 0.0, 0.0, 0.0, 0.0, + ) + + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + obj_flags &= ~CAN_BE_HIT + +/obj/effect/constructing_effect/update_name(updates) + . = ..() + + if (status == RCD_DECONSTRUCT) + name = "deconstruction effect" + else + name = "construction effect" + /obj/effect/constructing_effect/update_icon_state() icon_state = "rcd" if(delay < 10) @@ -541,12 +562,26 @@ if (status == RCD_DECONSTRUCT) qdel(src) else + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + obj_flags &= ~CAN_BE_HIT icon_state = "rcd_end" addtimer(CALLBACK(src, PROC_REF(end)), 15) /obj/effect/constructing_effect/proc/end() qdel(src) +/obj/effect/constructing_effect/proc/attacked(mob/user) + user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) + user.changeNext_move(CLICK_CD_MELEE) + playsound(loc, 'sound/weapons/egloves.ogg', vol = 80, vary = TRUE) + end() + +/obj/effect/constructing_effect/attackby(obj/item/weapon, mob/user, params) + attacked(user) + +/obj/effect/constructing_effect/attack_hand(mob/living/user, list/modifiers) + attacked(user) + /obj/effect/temp_visual/electricity icon_state = "electricity3" duration = 0.5 SECONDS diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index 2d4ce0b30486..05c68e04eba6 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -82,7 +82,7 @@ ///Called by update_icon after sanity. There is a target /obj/item/pinpointer/proc/get_direction_icon(here, there) - if(get_dist_euclidian(here,there) <= minimum_range) + if(get_dist_euclidean(here,there) <= minimum_range) return "pinon[alert ? "alert" : ""]direct[icon_suffix]" else setDir(get_dir(here, there)) diff --git a/code/game/objects/items/rcd/RCD.dm b/code/game/objects/items/rcd/RCD.dm index df221086a88c..83207ff7a070 100644 --- a/code/game/objects/items/rcd/RCD.dm +++ b/code/game/objects/items/rcd/RCD.dm @@ -19,6 +19,9 @@ #define CATEGORY_ICON_SUFFIX "category_icon_suffix" #define TITLE_ICON "ICON=TITLE" +///multiplier applied on construction & deconstruction time when building multiple structures +#define FREQUENT_USE_DEBUFF_MULTIPLIER 3 + //RAPID CONSTRUCTION DEVICE /obj/item/construction/rcd @@ -28,7 +31,7 @@ worn_icon_state = "RCD" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - custom_premium_price = PAYCHECK_COMMAND * 10 + custom_premium_price = PAYCHECK_COMMAND * 2 max_matter = 160 slot_flags = ITEM_SLOT_BELT item_flags = NO_MAT_REDEMPTION | NOBLUDGEON @@ -48,6 +51,7 @@ list(CONSTRUCTION_MODE = RCD_WINDOWGRILLE, WINDOW_TYPE = /obj/structure/window/reinforced/fulltile, ICON = "rwindow0", TITLE = "Full Tile Reinforced Window"), list(CONSTRUCTION_MODE = RCD_CATWALK, ICON = "catwalk-0", TITLE = "Catwalk"), list(CONSTRUCTION_MODE = RCD_REFLECTOR, ICON = "reflector_base", TITLE = "Reflector"), + list(CONSTRUCTION_MODE = RCD_GIRDER, ICON = "girder", TITLE = "Girder"), list(CONSTRUCTION_MODE = RCD_WINDOWGRILLE, WINDOW_TYPE = /obj/structure/window_sill, ICON = "window_sill-0", TITLE = "Window Sill"), ), @@ -161,6 +165,9 @@ COOLDOWN_DECLARE(destructive_scan_cooldown) + ///number of active rcd effects in use e.g. when building multiple walls at once this value increases + var/current_active_effects = 0 + GLOBAL_VAR_INIT(icon_holographic_wall, init_holographic_wall()) GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) @@ -259,39 +266,54 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) user.visible_message(span_suicide("[user] pulls the trigger... But there is not enough ammo!")) return SHAME -/// check can the structure be placed on the turf -/obj/item/construction/rcd/proc/can_place(atom/A, list/rcd_results, mob/user) +/** + * checks if we can build the structure + * Arguments + * + * * [atom][target]- the target we are trying to build on/deconstruct e.g. turf, wall etc + * * rcd_results- list of params specifically the build type of our structure + * * [mob][user]- the user + */ +/obj/item/construction/rcd/proc/can_place(atom/target, list/rcd_results, mob/user) /** *For anything that does not go an a wall we have to make sure that turf is clear for us to put the structure on it *If we are just trying to destory something then this check is not nessassary *RCD_WALLFRAME is also returned as the mode when upgrading apc, airalarm, firealarm using simple circuits upgrade */ if(rcd_results["mode"] != RCD_WALLFRAME && rcd_results["mode"] != RCD_DECONSTRUCT) - var/turf/target_turf = get_turf(A) - //if we are trying to build a window on top of a grill we check for specific edge cases - if(rcd_results["mode"] == RCD_WINDOWGRILLE && istype(A, /obj/structure/grille)) - var/list/structures_to_ignore + var/turf/target_turf = get_turf(target) + //if we are trying to build a window we check for specific edge cases + if(rcd_results["mode"] == RCD_WINDOWGRILLE) + var/is_full_tile = initial(window_type.fulltile) + var/list/structures_to_ignore + if(istype(target, /obj/structure/grille)) + if(is_full_tile) //if we are trying to build full-tile windows we ignore the grille + structures_to_ignore = list(target) + else //no building directional windows on grills + return FALSE + else //for directional windows we ignore other directional windows as they can be in diffrent directions on the turf. + structures_to_ignore = list(/obj/structure/window) //if we are trying to build full-tile windows we only ignore the grille but other directional windows on the grill can block its construction if(window_type == /obj/structure/window/fulltile || window_type == /obj/structure/window/reinforced/fulltile) - structures_to_ignore = list(A, /obj/structure/window_sill) + structures_to_ignore = list(/obj/structure/grille, /obj/structure/window_sill) //for normal directional windows we ignore the grille & other directional windows as they can be in diffrent directions on the grill. There is a later check during construction to deal with those else structures_to_ignore = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window_sill) //check if we can build our window on the grill - if(target_turf.is_blocked_turf(exclude_mobs = FALSE, source_atom = null, ignore_atoms = structures_to_ignore, type_list = (length(structures_to_ignore) == 2))) + if(target_turf.is_blocked_turf(exclude_mobs = !is_full_tile, source_atom = null, ignore_atoms = structures_to_ignore, type_list = !is_full_tile)) playsound(loc, 'sound/machines/click.ogg', 50, TRUE) - balloon_alert(user, "something is on the grille!") + balloon_alert(user, "something is blocking the turf") return FALSE /** * if we are trying to create plating on turf which is not a proper floor then dont check for objects on top of the turf just allow that turf to be converted into plating. e.g. create plating beneath a player or underneath a machine frame/any dense object * if we are trying to finish a wall girder then let it finish then make sure no one/nothing is stuck in the girder */ - else if(rcd_results["mode"] == RCD_FLOORWALL && (!istype(target_turf, /turf/open/floor) || istype(A, /obj/structure/girder))) + else if(rcd_results["mode"] == RCD_FLOORWALL && (!istype(target_turf, /turf/open/floor) || istype(target, /obj/structure/girder))) //if a player builds a wallgirder on top of himself manually with iron sheets he can't finish the wall if he is still on the girder. Exclude the girder itself when checking for other dense objects on the turf - if(istype(A, /obj/structure/girder) && target_turf.is_blocked_turf(exclude_mobs = FALSE, source_atom = null, ignore_atoms = list(A))) + if(istype(target, /obj/structure/girder) && target_turf.is_blocked_turf(exclude_mobs = FALSE, source_atom = null, ignore_atoms = list(target))) playsound(loc, 'sound/machines/click.ogg', 50, TRUE) balloon_alert(user, "something is on the girder!") return FALSE @@ -340,27 +362,58 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) return TRUE -/obj/item/construction/rcd/proc/rcd_create(atom/A, mob/user) +/** + * actual proc to create the structure + * + * Arguments + * * [atom][target]- the target we are trying to build on/deconstruct e.g. turf, wall etc + * * [mob][user]- the user building this structure + */ +/obj/item/construction/rcd/proc/rcd_create(atom/target, mob/user) //does this atom allow for rcd actions? - var/list/rcd_results = A.rcd_vals(user, src) + var/list/rcd_results = target.rcd_vals(user, src) if(!rcd_results) return FALSE + var/delay = rcd_results["delay"] * delay_mod - var/obj/effect/constructing_effect/rcd_effect = new(get_turf(A), delay, src.mode) + if ( + !(upgrade & RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN) \ + && !rcd_results[RCD_RESULT_BYPASS_FREQUENT_USE_COOLDOWN] \ + && current_active_effects > 0 + ) + delay *= FREQUENT_USE_DEBUFF_MULTIPLIER + + current_active_effects += 1 + _rcd_create_effect(target, user, delay, rcd_results) + current_active_effects -= 1 + +/** + * Internal proc which creates the rcd effects & creates the structure + * + * Arguments + * * [atom][target]- the target we are trying to build on/deconstruct e.g. turf, wall etc + * * [mob][user]- the user trying to build the structure + * * delay- the delay with the disk upgrades applied + * * rcd_results- list of params which contains the cost & build mode to create the structure + */ +/obj/item/construction/rcd/proc/_rcd_create_effect(atom/target, mob/user, delay, list/rcd_results) + var/obj/effect/constructing_effect/rcd_effect = new(get_turf(target), delay, src.mode, upgrade) //resource & structure placement sanity checks before & after delay along with beam effects - if(!checkResource(rcd_results["cost"], user) || !can_place(A, rcd_results, user)) + if(!checkResource(rcd_results["cost"], user) || !can_place(target, rcd_results, user)) qdel(rcd_effect) return FALSE var/beam if(ranged) - beam = user.Beam(A,icon_state="rped_upgrade", time = delay) - if(!do_after(user, delay, target = A)) + beam = user.Beam(target,icon_state="rped_upgrade", time = delay) + if(!do_after(user, delay, target = target)) qdel(rcd_effect) if(!isnull(beam)) qdel(beam) return FALSE - if(!checkResource(rcd_results["cost"], user) || !can_place(A, rcd_results, user)) + if (QDELETED(rcd_effect)) + return FALSE + if(!checkResource(rcd_results["cost"], user) || !can_place(target, rcd_results, user)) qdel(rcd_effect) return FALSE @@ -368,7 +421,7 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) qdel(rcd_effect) return FALSE activate() - if(!A.rcd_act(user, src, rcd_results["mode"])) + if(!target.rcd_act(user, src, rcd_results["mode"])) qdel(rcd_effect) return FALSE playsound(loc, 'sound/machines/click.ogg', 50, TRUE) @@ -621,7 +674,7 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) matter = 160 /obj/item/construction/rcd/loaded/upgraded - upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING + upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING | RCD_UPGRADE_ANTI_INTERRUPT | RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN /obj/item/construction/rcd/combat name = "industrial RCD" @@ -630,7 +683,22 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) max_matter = 500 matter = 500 canRturf = TRUE - upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING + upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING | RCD_UPGRADE_ANTI_INTERRUPT | RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN + +/obj/item/construction/rcd/ce + name = "professional RCD" + desc = "A higher-end model of the rapid construction device, prefitted with improved cooling and disruption prevention. Provided to the chief engineer." + upgrade = RCD_UPGRADE_ANTI_INTERRUPT | RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN + matter = 160 + color = list( + 0.3, 0.3, 0.7, 0.0, + 1.0, 1.0, 0.2, 0.0, + -0.2, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0, + 0.0, 0.0, 0.0, 0.0, + ) + +#undef FREQUENT_USE_DEBUFF_MULTIPLIER #undef CONSTRUCTION_MODE #undef WINDOW_TYPE @@ -665,7 +733,7 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) name = "admin RCD" max_matter = INFINITY matter = INFINITY - upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING + upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING | RCD_UPGRADE_ANTI_INTERRUPT | RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN // Ranged RCD @@ -679,4 +747,4 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) icon_state = "arcd" inhand_icon_state = "oldrcd" has_ammobar = FALSE - upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING + upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING | RCD_UPGRADE_ANTI_INTERRUPT | RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN diff --git a/code/game/objects/items/rcd/RHD.dm b/code/game/objects/items/rcd/RHD.dm index 50ebce21c928..a3b1f1edf732 100644 --- a/code/game/objects/items/rcd/RHD.dm +++ b/code/game/objects/items/rcd/RHD.dm @@ -283,6 +283,14 @@ desc = "It contains the design for firelock, air alarm, fire alarm, apc circuits and crap power cells." upgrade = RCD_UPGRADE_SIMPLE_CIRCUITS +/obj/item/rcd_upgrade/anti_interrupt + desc = "It contains the upgrades necessary to prevent interruption of RCD construction and deconstruction." + upgrade = RCD_UPGRADE_ANTI_INTERRUPT + +/obj/item/rcd_upgrade/cooling + desc = "It contains the upgrades necessary to allow more frequent use of the RCD." + upgrade = RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN + /obj/item/rcd_upgrade/silo_link desc = "It contains direct silo connection RCD upgrade." upgrade = RCD_UPGRADE_SILO_LINK diff --git a/code/game/objects/items/rcd/RLD.dm b/code/game/objects/items/rcd/RLD.dm index 9d07929a9091..f737c4e819a3 100644 --- a/code/game/objects/items/rcd/RLD.dm +++ b/code/game/objects/items/rcd/RLD.dm @@ -18,7 +18,7 @@ has_ammobar = TRUE ammo_sections = 6 ///it does not make sense why any of these should be installed - banned_upgrades = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING + banned_upgrades = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING | RCD_UPGRADE_ANTI_INTERRUPT | RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN var/mode = LIGHT_MODE var/wallcost = 10 diff --git a/code/game/objects/items/rcd/RPLD.dm b/code/game/objects/items/rcd/RPLD.dm index a90836aac441..253d93a5aab4 100644 --- a/code/game/objects/items/rcd/RPLD.dm +++ b/code/game/objects/items/rcd/RPLD.dm @@ -10,7 +10,7 @@ icon = 'icons/obj/tools.dmi' slot_flags = ITEM_SLOT_BELT ///it does not make sense why any of these should be installed. - banned_upgrades = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING + banned_upgrades = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING | RCD_UPGRADE_ANTI_INTERRUPT | RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN matter = 200 max_matter = 200 diff --git a/code/game/objects/items/rcd/RTD.dm b/code/game/objects/items/rcd/RTD.dm index 9141e77ae95a..78408af895c5 100644 --- a/code/game/objects/items/rcd/RTD.dm +++ b/code/game/objects/items/rcd/RTD.dm @@ -23,7 +23,7 @@ slot_flags = ITEM_SLOT_BELT item_flags = NO_MAT_REDEMPTION | NOBLUDGEON has_ammobar = TRUE - banned_upgrades = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING + banned_upgrades = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING | RCD_UPGRADE_ANTI_INTERRUPT | RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN /// main category for tile design var/root_category = "Conventional" diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 4b7c51ab8ebd..41e2b77399fb 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -234,6 +234,7 @@ name = "improvised gauze" singular_name = "improvised gauze" desc = "A roll of cloth roughly cut from something that does a decent job of stabilizing wounds, but less efficiently so than real medical gauze." + icon_state = "gauze_imp" self_delay = 6 SECONDS other_delay = 3 SECONDS splint_factor = 0.85 diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 73eaaeef316a..a2cad69e8b2a 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -239,7 +239,8 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list( . += GLOB.titaniumglass_recipes GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( - new/datum/stack_recipe("plastitanium window", /obj/structure/window/reinforced/plasma/plastitanium/unanchored, 2, time = 0, on_solid_ground = TRUE, is_fulltile = TRUE, category = CAT_WINDOWS) \ + new/datum/stack_recipe("plastitanium window", /obj/structure/window/reinforced/plasma/plastitanium/unanchored, 2, time = 0, on_solid_ground = TRUE, is_fulltile = TRUE, category = CAT_WINDOWS), \ + new/datum/stack_recipe("plastitanium glass shard", /obj/item/shard/plastitanium, time = 60, on_solid_ground = TRUE, category = CAT_MISC) \ )) /obj/item/stack/sheet/plastitaniumglass diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index ae3187b927ed..cf1d76bab1f0 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -450,6 +450,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ new/datum/stack_recipe("bio bag", /obj/item/storage/bag/bio, 4, check_density = FALSE, category = CAT_CONTAINERS), \ new/datum/stack_recipe("science bag", /obj/item/storage/bag/xeno, 4, check_density = FALSE, category = CAT_CONTAINERS), \ new/datum/stack_recipe("construction bag", /obj/item/storage/bag/construction, 4, check_density = FALSE, category = CAT_CONTAINERS), \ + new/datum/stack_recipe("egg bag", /obj/item/storage/bag/egg, 4, check_density = FALSE, category = CAT_CONTAINERS), \ null, \ new/datum/stack_recipe("improvised gauze", /obj/item/stack/medical/gauze/improvised, 1, 2, 6, check_density = FALSE, category = CAT_TOOLS), \ new/datum/stack_recipe("rag", /obj/item/reagent_containers/cup/rag, 1, check_density = FALSE, category = CAT_CHEMISTRY), \ diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 79550320237e..c00b9cb60e99 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -92,7 +92,7 @@ new /obj/item/circuitboard/machine/techfab/department/medical(src) new /obj/item/storage/photo_album/cmo(src) new /obj/item/storage/lockbox/medal/med(src) - new /obj/item/extrapolator(src) +// new /obj/item/extrapolator(src) //MONKESTATION EDIT: extrapolators are not useful! missed this single case! -Dexee, 04/13/24 /obj/structure/closet/secure_closet/chief_medical/populate_contents_immediate() . = ..() diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 084c804dc084..48a48ab9b148 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -260,7 +260,6 @@ door = new airlock_type( loc ) door.setDir(dir) door.unres_sides = electronics.unres_sides - //door.req_access = req_access door.electronics = electronics door.heat_proof = heat_proof_finished door.security_level = 0 @@ -288,9 +287,12 @@ door.unres_sensor = TRUE door.previous_airlock = previous_assembly electronics.forceMove(door) + door.autoclose = TRUE + door.close() + door.auto_dir_align() // monkestation edit: ensure doors get aligned properly on creation door.update_appearance() + qdel(src) - return door /obj/structure/door_assembly/update_overlays() . = ..() @@ -350,7 +352,7 @@ /obj/structure/door_assembly/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) if(the_rcd.mode == RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 50, "cost" = 16) + return list("mode" = RCD_DECONSTRUCT, "delay" = 5 SECONDS, "cost" = 16) return FALSE /obj/structure/door_assembly/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index a048766bec91..99317dd61aed 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -452,7 +452,7 @@ get_turf(src), RCD_MEMORY_WALL, ) if(RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 20, "cost" = 13) + return list("mode" = RCD_DECONSTRUCT, "delay" = 2 SECONDS, "cost" = 13) return FALSE /obj/structure/girder/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index d08d2d50b4e2..076c79ccafb6 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -63,21 +63,15 @@ /obj/structure/grille/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 20, "cost" = 5) + return list("mode" = RCD_DECONSTRUCT, "delay" = 2 SECONDS, "cost" = 5) if(RCD_WINDOWGRILLE) var/cost = 0 var/delay = 0 - if(the_rcd.window_type == /obj/structure/window) - cost = 6 - delay = 2 SECONDS - else if(the_rcd.window_type == /obj/structure/window/reinforced) - cost = 9 - delay = 2.5 SECONDS - else if(the_rcd.window_type == /obj/structure/window/fulltile) - cost = 12 + if(the_rcd.window_type == /obj/structure/window/fulltile) + cost = 8 delay = 3 SECONDS else if(the_rcd.window_type == /obj/structure/window/reinforced/fulltile) - cost = 15 + cost = 12 delay = 4 SECONDS if(!cost) return FALSE @@ -101,15 +95,13 @@ if(repair_grille()) balloon_alert(user, "grille rebuilt") - if(!clear_tile(user)) return FALSE var/obj/structure/window/window_path = the_rcd.window_type if(!ispath(window_path)) CRASH("Invalid window path type in RCD: [window_path]") - if(!valid_build_direction(T, user.dir, is_fulltile = initial(window_path.fulltile))) - balloon_alert(user, "window already here!") + if(!initial(window_path.fulltile)) //only fulltile windows can be built here return FALSE var/obj/structure/window/WD = new the_rcd.window_type(T, user.dir) WD.set_anchored(TRUE) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 42dadf19ff59..50f31d76346f 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -65,15 +65,15 @@ /obj/structure/lattice/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) if(the_rcd.mode == RCD_FLOORWALL) - return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 2) + return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 1) if(the_rcd.mode == RCD_CATWALK) - return list("mode" = RCD_CATWALK, "delay" = 0, "cost" = 1) + return list("mode" = RCD_CATWALK, "delay" = 0, "cost" = 2) /obj/structure/lattice/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) if(passed_mode == RCD_FLOORWALL) to_chat(user, span_notice("You build a floor.")) var/turf/T = src.loc - if(isspaceturf(T)) + if(isgroundlessturf(T)) T.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) qdel(src) return TRUE @@ -123,7 +123,7 @@ /obj/structure/lattice/catwalk/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) if(the_rcd.mode == RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 10, "cost" = 5) + return list("mode" = RCD_DECONSTRUCT, "delay" = 1 SECONDS, "cost" = 5) return FALSE /obj/structure/lattice/catwalk/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index c6c737749017..9efdd4e5bf62 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -316,7 +316,7 @@ /obj/structure/table/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 24, "cost" = 16) + return list("mode" = RCD_DECONSTRUCT, "delay" = 2.4 SECONDS, "cost" = 16) return FALSE /obj/structure/table/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index ae705bdf8928..e33441ebdc4e 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -30,7 +30,7 @@ var/state = "01" //How far the door assembly has progressed can_atmos_pass = ATMOS_PASS_PROC -/obj/structure/windoor_assembly/Initialize(mapload, loc, set_dir) +/obj/structure/windoor_assembly/Initialize(mapload, set_dir) . = ..() if(set_dir) setDir(set_dir) @@ -267,55 +267,11 @@ span_notice("You start prying the windoor into the frame...")) if(W.use_tool(src, user, 40, volume=100) && electronics) - set_density(TRUE) //Shouldn't matter but just incase - to_chat(user, span_notice("You finish the windoor.")) - - if(secure) - var/obj/machinery/door/window/brigdoor/windoor = new /obj/machinery/door/window/brigdoor(loc) - if(facing == "l") - windoor.icon_state = "leftsecureopen" - windoor.base_state = "leftsecure" - else - windoor.icon_state = "rightsecureopen" - windoor.base_state = "rightsecure" - windoor.setDir(dir) - windoor.set_density(FALSE) - - if(electronics.one_access) - windoor.req_one_access = electronics.accesses - else - windoor.req_access = electronics.accesses - windoor.electronics = electronics - electronics.forceMove(windoor) - if(created_name) - windoor.name = created_name - qdel(src) - windoor.close() - - else - var/obj/machinery/door/window/windoor = new /obj/machinery/door/window(loc) - if(facing == "l") - windoor.icon_state = "leftopen" - windoor.base_state = "left" - else - windoor.icon_state = "rightopen" - windoor.base_state = "right" - windoor.setDir(dir) - windoor.set_density(FALSE) - - if(electronics.one_access) - windoor.req_one_access = electronics.accesses - else - windoor.req_access = electronics.accesses - windoor.electronics = electronics - electronics.forceMove(windoor) - if(created_name) - windoor.name = created_name - qdel(src) - windoor.close() + to_chat(user, span_notice("You finish the windoor.")) + finish_door() else return ..() @@ -323,6 +279,54 @@ //Update to reflect changes(if applicable) update_appearance() +/obj/structure/windoor_assembly/proc/finish_door() + var/obj/machinery/door/window/windoor + if(secure) + windoor = new /obj/machinery/door/window/brigdoor(loc) + if(facing == "l") + windoor.icon_state = "leftsecureopen" + windoor.base_state = "leftsecure" + else + windoor.icon_state = "rightsecureopen" + windoor.base_state = "rightsecure" + + else + windoor = new /obj/machinery/door/window(loc) + if(facing == "l") + windoor.icon_state = "leftopen" + windoor.base_state = "left" + else + windoor.icon_state = "rightopen" + windoor.base_state = "right" + + windoor.setDir(dir) + windoor.set_density(FALSE) + if(created_name) + windoor.name = created_name + else if(electronics.passed_name) + windoor.name = electronics.passed_name + if(electronics.one_access) + windoor.req_one_access = electronics.accesses + else + windoor.req_access = electronics.accesses + if(electronics.unres_sides) + windoor.unres_sides = electronics.unres_sides + switch(dir) + if(NORTH,SOUTH) + windoor.unres_sides &= ~EAST + windoor.unres_sides &= ~WEST + if(EAST,WEST) + windoor.unres_sides &= ~NORTH + windoor.unres_sides &= ~SOUTH + windoor.unres_sensor = TRUE + electronics.forceMove(windoor) + windoor.electronics = electronics + windoor.autoclose = TRUE + windoor.close() + windoor.update_appearance() + + qdel(src) + /obj/structure/windoor_assembly/AltClick(mob/user) return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index a4bbc3c2fe0d..e645a334c42f 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -105,7 +105,7 @@ /obj/structure/window/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 20, "cost" = 5) + return list("mode" = RCD_DECONSTRUCT, "delay" = 2 SECONDS, "cost" = 5) return FALSE /obj/structure/window/rcd_act(mob/user, obj/item/construction/rcd/the_rcd) @@ -489,7 +489,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/spawner, 0) /obj/structure/window/reinforced/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 30, "cost" = 15) + return list("mode" = RCD_DECONSTRUCT, "delay" = 3 SECONDS, "cost" = 15) return FALSE /obj/structure/window/reinforced/attackby_secondary(obj/item/tool, mob/user, params) @@ -678,7 +678,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/tinted/frosted/spaw /obj/structure/window/fulltile/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 25, "cost" = 10) + return list("mode" = RCD_DECONSTRUCT, "delay" = 2.5 SECONDS, "cost" = 10) return FALSE /obj/structure/window/fulltile/unanchored @@ -735,7 +735,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/tinted/frosted/spaw /obj/structure/window/reinforced/fulltile/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 40, "cost" = 20) + return list("mode" = RCD_DECONSTRUCT, "delay" = 4 SECONDS, "cost" = 20) return FALSE /obj/structure/window/reinforced/fulltile/unanchored diff --git a/code/game/turfs/closed/wall/reinf_walls.dm b/code/game/turfs/closed/wall/reinf_walls.dm index d496c7f438b5..adef8f10e718 100644 --- a/code/game/turfs/closed/wall/reinf_walls.dm +++ b/code/game/turfs/closed/wall/reinf_walls.dm @@ -211,12 +211,12 @@ dismantle_wall() /turf/closed/wall/r_wall/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) - if(the_rcd.canRturf) + if(the_rcd.canRturf || the_rcd.construction_mode == RCD_WALLFRAME) return ..() /turf/closed/wall/r_wall/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) - if(the_rcd.canRturf) + if(the_rcd.canRturf || passed_mode == RCD_WALLFRAME) return ..() /turf/closed/wall/r_wall/rust_heretic_act() diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm index bb4299a8416a..baf7cd488086 100644 --- a/code/game/turfs/closed/walls.dm +++ b/code/game/turfs/closed/walls.dm @@ -321,9 +321,9 @@ /turf/closed/wall/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 40, "cost" = 26) + return list("mode" = RCD_DECONSTRUCT, "delay" = 4 SECONDS, "cost" = 26) if(RCD_WALLFRAME) - return list("mode" = RCD_WALLFRAME, "delay" = 10, "cost" = 25) + return list("mode" = RCD_WALLFRAME, "delay" = 1 SECONDS, "cost" = 8) return FALSE /turf/closed/wall/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm index 28abba12b200..142a7aad9a5c 100644 --- a/code/game/turfs/open/floor.dm +++ b/code/game/turfs/open/floor.dm @@ -255,49 +255,57 @@ src, RCD_MEMORY_WALL, ) if(RCD_REFLECTOR) - return list("mode" = RCD_REFLECTOR, "delay" = 20, "cost" = 30) + return list("mode" = RCD_REFLECTOR, "delay" = 2 SECONDS, "cost" = 20) if(RCD_AIRLOCK) if(the_rcd.airlock_glass) - return list("mode" = RCD_AIRLOCK, "delay" = 50, "cost" = 20) + return list("mode" = RCD_AIRLOCK, "delay" = 5 SECONDS, "cost" = 20) else - return list("mode" = RCD_AIRLOCK, "delay" = 50, "cost" = 16) + return list("mode" = RCD_AIRLOCK, "delay" = 5 SECONDS, "cost" = 16) if(RCD_DECONSTRUCT) - return list("mode" = RCD_DECONSTRUCT, "delay" = 50, "cost" = 33) + return list("mode" = RCD_DECONSTRUCT, "delay" = 5 SECONDS, "cost" = 33) if(RCD_WINDOWGRILLE) + //default cost for building a grill for fulltile windows + var/cost = 4 + var/delay = 1 SECONDS + if(the_rcd.window_type == /obj/structure/window) + cost = 4 + delay = 2 SECONDS + else if(the_rcd.window_type == /obj/structure/window/reinforced) + cost = 6 + delay = 2.5 SECONDS return rcd_result_with_memory( - list("mode" = RCD_WINDOWGRILLE, "delay" = 1 SECONDS, "cost" = 4), + list("mode" = RCD_WINDOWGRILLE, "delay" = delay, "cost" = cost), src, RCD_MEMORY_WINDOWGRILLE, ) if(RCD_MACHINE) - return list("mode" = RCD_MACHINE, "delay" = 20, "cost" = 25) + return list("mode" = RCD_MACHINE, "delay" = 2 SECONDS, "cost" = 20) if(RCD_COMPUTER) - return list("mode" = RCD_COMPUTER, "delay" = 20, "cost" = 25) + return list("mode" = RCD_COMPUTER, "delay" = 2 SECONDS, "cost" = 20) if(RCD_FLOODLIGHT) - return list("mode" = RCD_FLOODLIGHT, "delay" = 30, "cost" = 35) + return list("mode" = RCD_FLOODLIGHT, "delay" = 3 SECONDS, "cost" = 20) + if(RCD_GIRDER) + return list("mode" = RCD_GIRDER, "delay" = 1.3 SECONDS, "cost" = 8) if(RCD_FURNISHING) var/cost = 0 var/delay = 0 if(the_rcd.furnish_type == /obj/structure/chair || the_rcd.furnish_type == /obj/structure/chair/stool) - cost = 8 - delay = 10 - else if(the_rcd.furnish_type == /obj/structure/chair/stool/bar) cost = 4 - delay = 5 + delay = 1 SECONDS else if(the_rcd.furnish_type == /obj/structure/chair/stool/bar) cost = 4 - delay = 5 + delay = 0.5 SECONDS else if(the_rcd.furnish_type == /obj/structure/table) - cost = 15 - delay = 20 + cost = 8 + delay = 2 SECONDS else if(the_rcd.furnish_type == /obj/structure/table/glass) - cost = 12 - delay = 15 + cost = 8 + delay = 2 SECONDS else if(the_rcd.furnish_type == /obj/structure/rack) - cost = 20 - delay = 25 + cost = 4 + delay = 2.5 SECONDS else if(the_rcd.furnish_type == /obj/structure/bed) - cost = 10 - delay = 15 + cost = 8 + delay = 1.5 SECONDS if(cost == 0) return FALSE return list("mode" = RCD_FURNISHING, "delay" = cost, "cost" = delay) @@ -329,15 +337,11 @@ continue balloon_alert(user, "there's already a door!") return FALSE - var/obj/machinery/door/window/new_window = new the_rcd.airlock_type(src, user.dir, the_rcd.airlock_electronics?.unres_sides) - if(the_rcd.airlock_electronics) - new_window.name = the_rcd.airlock_electronics.passed_name || initial(new_window.name) - if(the_rcd.airlock_electronics.one_access) - new_window.req_one_access = the_rcd.airlock_electronics.accesses.Copy() - else - new_window.req_access = the_rcd.airlock_electronics.accesses.Copy() - new_window.autoclose = TRUE - new_window.update_appearance() + //create the assembly and let it finish itself + var/obj/structure/windoor_assembly/assembly = new /obj/structure/windoor_assembly(src, user.dir) + assembly.secure = ispath(the_rcd.airlock_type, /obj/machinery/door/window/brigdoor) + assembly.electronics = the_rcd.airlock_electronics.create_copy(assembly) + assembly.finish_door() return TRUE for(var/obj/machinery/door/door in src) @@ -345,29 +349,15 @@ continue balloon_alert(user, "there's already a door!") return FALSE - var/obj/machinery/door/airlock/new_airlock = new the_rcd.airlock_type(src) - new_airlock.electronics = new /obj/item/electronics/airlock(new_airlock) - if(the_rcd.airlock_electronics) - new_airlock.electronics.accesses = the_rcd.airlock_electronics.accesses.Copy() - new_airlock.electronics.one_access = the_rcd.airlock_electronics.one_access - new_airlock.electronics.unres_sides = the_rcd.airlock_electronics.unres_sides - new_airlock.electronics.passed_name = the_rcd.airlock_electronics.passed_name - new_airlock.electronics.passed_cycle_id = the_rcd.airlock_electronics.passed_cycle_id - new_airlock.electronics.shell = the_rcd.airlock_electronics.shell - if(new_airlock.electronics.one_access) - new_airlock.req_one_access = new_airlock.electronics.accesses + //create the assembly and let it finish itself + var/obj/structure/door_assembly/assembly = new (src) + if(ispath(the_rcd.airlock_type, /obj/machinery/door/airlock/glass)) + assembly.glass = TRUE + assembly.glass_type = the_rcd.airlock_type else - new_airlock.req_access = new_airlock.electronics.accesses - if(new_airlock.electronics.unres_sides) - new_airlock.unres_sides = new_airlock.electronics.unres_sides - new_airlock.unres_sensor = TRUE - if(new_airlock.electronics.passed_name) - new_airlock.name = sanitize(new_airlock.electronics.passed_name) - if(new_airlock.electronics.passed_cycle_id) - new_airlock.closeOtherId = new_airlock.electronics.passed_cycle_id - new_airlock.update_other_id() - new_airlock.autoclose = TRUE - new_airlock.update_appearance() + assembly.airlock_type = the_rcd.airlock_type + assembly.electronics = the_rcd.airlock_electronics.create_copy(assembly) + assembly.finish_door() return TRUE if(RCD_DECONSTRUCT) if(rcd_proof) @@ -377,6 +367,21 @@ return FALSE return TRUE if(RCD_WINDOWGRILLE) + //check if we are building a window + var/obj/structure/window/window_path = the_rcd.window_type + if(!ispath(window_path)) + CRASH("Invalid window path type in RCD: [window_path]") + + //allow directional windows to be built without grills + if(!initial(window_path.fulltile)) + if(!valid_build_direction(src, user.dir, is_fulltile = FALSE)) + balloon_alert(user, "window already here!") + return FALSE + var/obj/structure/window/WD = new the_rcd.window_type(src, user.dir) + WD.set_anchored(TRUE) + return TRUE + + //build grills to deal with full tile windows if(locate(/obj/structure/grille) in src) return FALSE var/obj/structure/grille/new_grille = new(src) @@ -407,6 +412,11 @@ new_floodlight.icon_state = "floodlight_c3" new_floodlight.state = FLOODLIGHT_NEEDS_LIGHTS return TRUE + if(RCD_GIRDER) + if(locate(/obj/structure/girder) in src) + return FALSE + new /obj/structure/girder(src) + return TRUE if(RCD_FURNISHING) if(locate(the_rcd.furnish_type) in src) return FALSE diff --git a/code/game/turfs/open/misc.dm b/code/game/turfs/open/misc.dm index 55e6ca05b139..d47212e38d17 100644 --- a/code/game/turfs/open/misc.dm +++ b/code/game/turfs/open/misc.dm @@ -84,47 +84,46 @@ else return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 3) if(RCD_REFLECTOR) - return list("mode" = RCD_REFLECTOR, "delay" = 20, "cost" = 30) + return list("mode" = RCD_REFLECTOR, "delay" = 2 SECONDS, "cost" = 20) if(RCD_AIRLOCK) if(the_rcd.airlock_glass) - return list("mode" = RCD_AIRLOCK, "delay" = 50, "cost" = 20) + return list("mode" = RCD_AIRLOCK, "delay" = 5 SECONDS, "cost" = 20) else - return list("mode" = RCD_AIRLOCK, "delay" = 50, "cost" = 16) + return list("mode" = RCD_AIRLOCK, "delay" = 5 SECONDS, "cost" = 16) if(RCD_WINDOWGRILLE) return rcd_result_with_memory( list("mode" = RCD_WINDOWGRILLE, "delay" = 1 SECONDS, "cost" = 4), src, RCD_MEMORY_WINDOWGRILLE, ) if(RCD_MACHINE) - return list("mode" = RCD_MACHINE, "delay" = 20, "cost" = 25) + return list("mode" = RCD_MACHINE, "delay" = 2 SECONDS, "cost" = 20) if(RCD_COMPUTER) - return list("mode" = RCD_COMPUTER, "delay" = 20, "cost" = 25) + return list("mode" = RCD_COMPUTER, "delay" = 2 SECONDS, "cost" = 20) if(RCD_FLOODLIGHT) - return list("mode" = RCD_FLOODLIGHT, "delay" = 30, "cost" = 35) + return list("mode" = RCD_FLOODLIGHT, "delay" = 3 SECONDS, "cost" = 20) + if(RCD_GIRDER) + return list("mode" = RCD_GIRDER, "delay" = 1.3 SECONDS, "cost" = 8) if(RCD_FURNISHING) var/cost = 0 var/delay = 0 if(the_rcd.furnish_type == /obj/structure/chair || the_rcd.furnish_type == /obj/structure/chair/stool) - cost = 8 - delay = 10 - else if(the_rcd.furnish_type == /obj/structure/chair/stool/bar) cost = 4 - delay = 5 + delay = 1 SECONDS else if(the_rcd.furnish_type == /obj/structure/chair/stool/bar) cost = 4 - delay = 5 + delay = 0.5 SECONDS else if(the_rcd.furnish_type == /obj/structure/table) - cost = 15 - delay = 20 + cost = 8 + delay = 2 SECONDS else if(the_rcd.furnish_type == /obj/structure/table/glass) - cost = 12 - delay = 15 + cost = 8 + delay = 2 SECONDS else if(the_rcd.furnish_type == /obj/structure/rack) - cost = 20 - delay = 25 + cost = 4 + delay = 2.5 SECONDS else if(the_rcd.furnish_type == /obj/structure/bed) - cost = 10 - delay = 15 + cost = 8 + delay = 1.5 SECONDS if(!cost) return FALSE return list("mode" = RCD_FURNISHING, "delay" = cost, "cost" = delay) @@ -222,6 +221,11 @@ new_floodlight.icon_state = "floodlight_c3" new_floodlight.state = FLOODLIGHT_NEEDS_LIGHTS return TRUE + if(RCD_GIRDER) + if(locate(/obj/structure/girder) in src) + return FALSE + new /obj/structure/girder(src) + return TRUE if(RCD_FURNISHING) if(locate(the_rcd.furnish_type) in src) return FALSE diff --git a/code/game/turfs/open/space/space.dm b/code/game/turfs/open/space/space.dm index 3cb8222d07fa..5b172d2a7efa 100644 --- a/code/game/turfs/open/space/space.dm +++ b/code/game/turfs/open/space/space.dm @@ -218,9 +218,9 @@ GLOBAL_VAR_INIT(starlight_color, pick(COLOR_TEAL, COLOR_GREEN, COLOR_CYAN, COLOR if(RCD_CATWALK) var/obj/structure/lattice/lattice = locate(/obj/structure/lattice, src) if(lattice) - return list("mode" = RCD_CATWALK, "delay" = 0, "cost" = 1) - else return list("mode" = RCD_CATWALK, "delay" = 0, "cost" = 2) + else + return list("mode" = RCD_CATWALK, "delay" = 0, "cost" = 4) return FALSE /turf/open/space/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) diff --git a/code/modules/admin/view_variables/reference_tracking.dm b/code/modules/admin/view_variables/reference_tracking.dm index 6be224cdd86f..b9fd0e6d2ad6 100644 --- a/code/modules/admin/view_variables/reference_tracking.dm +++ b/code/modules/admin/view_variables/reference_tracking.dm @@ -1,36 +1,29 @@ #ifdef REFERENCE_TRACKING +#define REFSEARCH_RECURSE_LIMIT 64 -/datum/proc/find_references(skip_alert) - running_find_references = type +/datum/proc/find_references(references_to_clear = INFINITY) if(usr?.client) - if(usr.client.running_find_references) - log_reftracker("CANCELLED search for references to a [usr.client.running_find_references].") - usr.client.running_find_references = null - running_find_references = null - //restart the garbage collector - SSgarbage.can_fire = TRUE - SSgarbage.update_nextfire(reset_time = TRUE) - return - - if(!skip_alert && tgui_alert(usr,"Running this will lock everything up for about 5 minutes. Would you like to begin the search?", "Find References", list("Yes", "No")) != "Yes") - running_find_references = null + if(tgui_alert(usr,"Running this will lock everything up for about 5 minutes. Would you like to begin the search?", "Find References", list("Yes", "No")) != "Yes") return + src.references_to_clear = references_to_clear //this keeps the garbage collector from failing to collect objects being searched for in here SSgarbage.can_fire = FALSE - if(usr?.client) - usr.client.running_find_references = type + _search_references() + //restart the garbage collector + SSgarbage.can_fire = TRUE + SSgarbage.update_nextfire(reset_time = TRUE) - log_reftracker("Beginning search for references to a [type].") +/datum/proc/_search_references() + log_reftracker("Beginning search for references to a [type], looking for [references_to_clear] refs.") var/starting_time = world.time - - log_reftracker("Refcount for [type]: [refcount(src)]") - //Time to search the whole game for our ref - DoSearchVar(GLOB, "GLOB", search_time = starting_time) //globals + DoSearchVar(GLOB, "GLOB", starting_time) //globals log_reftracker("Finished searching globals") + if(src.references_to_clear == 0) + return //Yes we do actually need to do this. The searcher refuses to read weird lists //And global.vars is a really weird list @@ -38,45 +31,46 @@ for(var/key in global.vars) global_vars[key] = global.vars[key] - DoSearchVar(global_vars, "Native Global", search_time = starting_time) + DoSearchVar(global_vars, "Native Global", starting_time) log_reftracker("Finished searching native globals") + if(src.references_to_clear == 0) + return for(var/datum/thing in world) //atoms (don't beleive its lies) - DoSearchVar(thing, "World -> [thing.type]", search_time = starting_time) + DoSearchVar(thing, "World -> [thing.type]", starting_time) + if(src.references_to_clear == 0) + break log_reftracker("Finished searching atoms") + if(src.references_to_clear == 0) + return for(var/datum/thing) //datums - DoSearchVar(thing, "Datums -> [thing.type]", search_time = starting_time) + DoSearchVar(thing, "Datums -> [thing.type]", starting_time) + if(src.references_to_clear == 0) + break log_reftracker("Finished searching datums") + if(src.references_to_clear == 0) + return //Warning, attempting to search clients like this will cause crashes if done on live. Watch yourself #ifndef REFERENCE_DOING_IT_LIVE for(var/client/thing) //clients - DoSearchVar(thing, "Clients -> [thing.type]", search_time = starting_time) + DoSearchVar(thing, "Clients -> [thing.type]", starting_time) + if(src.references_to_clear == 0) + break log_reftracker("Finished searching clients") + if(src.references_to_clear == 0) + return #endif log_reftracker("Completed search for references to a [type].") - if(usr?.client) - usr.client.running_find_references = null - running_find_references = null - - //restart the garbage collector - SSgarbage.can_fire = TRUE - SSgarbage.update_nextfire(reset_time = TRUE) - -/datum/proc/DoSearchVar(potential_container, container_name, recursive_limit = 64, search_time = world.time) - #ifdef REFERENCE_TRACKING_DEBUG - if(SSgarbage.should_save_refs && !found_refs) - found_refs = list() - #endif - - if(usr?.client && !usr.client.running_find_references) +/datum/proc/DoSearchVar(potential_container, container_name, search_time, recursion_count, is_special_list) + if(recursion_count >= REFSEARCH_RECURSE_LIMIT) + log_reftracker("Recursion limit reached. [container_name]") return - if(!recursive_limit) - log_reftracker("Recursion limit reached. [container_name]") + if(references_to_clear == 0) return //Check each time you go down a layer. This makes it a bit slow, but it won't effect the rest of the game at all @@ -92,68 +86,122 @@ datum_container.last_find_references = search_time var/list/vars_list = datum_container.vars + var/is_atom = FALSE + var/is_area = FALSE + if(isatom(datum_container)) + is_atom = TRUE + if(isarea(datum_container)) + is_area = TRUE for(var/varname in vars_list) - #ifndef FIND_REF_NO_CHECK_TICK - CHECK_TICK - #endif - if (varname == "vars" || varname == "vis_locs") //Fun fact, vis_locs don't count for references - continue var/variable = vars_list[varname] - - if(variable == src) + if(islist(variable)) + //Fun fact, vis_locs don't count for references + if(varname == "vars" || (is_atom && (varname == "vis_locs" || varname == "overlays" || varname == "underlays" || varname == "filters" || varname == "verbs" || (is_area && varname == "contents")))) + continue + // We do this after the varname check to avoid area contents (reading it incures a world loop's worth of cost) + if(!length(variable)) + continue + DoSearchVar(variable,\ + "[container_name] [datum_container.ref_search_details()] -> [varname] (list)",\ + search_time,\ + recursion_count + 1,\ + /*is_special_list = */ is_atom && (varname == "contents" || varname == "vis_contents" || varname == "locs")) + else if(variable == src) #ifdef REFERENCE_TRACKING_DEBUG if(SSgarbage.should_save_refs) + if(!found_refs) + found_refs = list() found_refs[varname] = TRUE continue //End early, don't want these logging + else + log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [datum_container.ref_search_details()] [varname] var. [container_name]") + #else + log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [datum_container.ref_search_details()] [varname] var. [container_name]") #endif - log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [text_ref(datum_container)] [varname] var. [container_name]") + references_to_clear -= 1 + if(references_to_clear == 0) + log_reftracker("All references to [type] [text_ref(src)] found, exiting.") + return continue - if(islist(variable)) - DoSearchVar(variable, "[container_name] [text_ref(datum_container)] -> [varname] (list)", recursive_limit - 1, search_time) - else if(islist(potential_container)) - var/normal = IS_NORMAL_LIST(potential_container) var/list/potential_cache = potential_container for(var/element_in_list in potential_cache) - #ifndef FIND_REF_NO_CHECK_TICK - CHECK_TICK - #endif + //Check normal sublists + if(islist(element_in_list)) + if(length(element_in_list)) + DoSearchVar(element_in_list, "[container_name] -> [element_in_list] (list)", search_time, recursion_count + 1) //Check normal entrys - if(element_in_list == src) + else if(element_in_list == src) #ifdef REFERENCE_TRACKING_DEBUG if(SSgarbage.should_save_refs) + if(!found_refs) + found_refs = list() found_refs[potential_cache] = TRUE - continue //End early, don't want these logging - #endif + continue + else + log_reftracker("Found [type] [text_ref(src)] in list [container_name].") + #else log_reftracker("Found [type] [text_ref(src)] in list [container_name].") - continue - - var/assoc_val = null - if(!isnum(element_in_list) && normal) - assoc_val = potential_cache[element_in_list] - //Check assoc entrys - if(assoc_val == src) - #ifdef REFERENCE_TRACKING_DEBUG - if(SSgarbage.should_save_refs) - found_refs[potential_cache] = TRUE - continue //End early, don't want these logging #endif - log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") - continue - //We need to run both of these checks, since our object could be hiding in either of them - //Check normal sublists - if(islist(element_in_list)) - DoSearchVar(element_in_list, "[container_name] -> [element_in_list] (list)", recursive_limit - 1, search_time) - //Check assoc sublists - if(islist(assoc_val)) - DoSearchVar(potential_container[element_in_list], "[container_name]\[[element_in_list]\] -> [assoc_val] (list)", recursive_limit - 1, search_time) -/proc/qdel_and_find_ref_if_fail(datum/thing_to_del, force = FALSE) - thing_to_del.qdel_and_find_ref_if_fail(force) + // This is dumb as hell I'm sorry + // I don't want the garbage subsystem to count as a ref for the purposes of this number + // If we find all other refs before it I want to early exit, and if we don't I want to keep searching past it + var/ignore_ref = FALSE + var/list/queues = SSgarbage.queues + for(var/list/queue in queues) + if(potential_cache in queue) + ignore_ref = TRUE + break + if(ignore_ref) + log_reftracker("[container_name] does not count as a ref for our count") + else + references_to_clear -= 1 + if(references_to_clear == 0) + log_reftracker("All references to [type] [text_ref(src)] found, exiting.") + return + + if(!isnum(element_in_list) && !is_special_list) + // This exists to catch an error that throws when we access a special list + // is_special_list is a hint, it can be wrong + try + var/assoc_val = potential_cache[element_in_list] + //Check assoc sublists + if(islist(assoc_val)) + if(length(assoc_val)) + DoSearchVar(potential_container[element_in_list], "[container_name]\[[element_in_list]\] -> [assoc_val] (list)", search_time, recursion_count + 1) + //Check assoc entry + else if(assoc_val == src) + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs) + if(!found_refs) + found_refs = list() + found_refs[potential_cache] = TRUE + continue + else + log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") + #else + log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") + #endif + references_to_clear -= 1 + if(references_to_clear == 0) + log_reftracker("All references to [type] [text_ref(src)] found, exiting.") + return + catch + // So if it goes wrong we kill it + is_special_list = TRUE + log_reftracker("Curiosity: [container_name] lead to an error when acessing [element_in_list], what is it?") + +#undef REFSEARCH_RECURSE_LIMIT +#endif -/datum/proc/qdel_and_find_ref_if_fail(force = FALSE) - SSgarbage.reference_find_on_fail[text_ref(src)] = TRUE - qdel(src, force) +// Kept outside the ifdef so overrides are easy to implement -#endif +/// Return info about us for reference searching purposes +/// Will be logged as a representation of this datum if it's a part of a search chain +/datum/proc/ref_search_details() + return text_ref(src) + +/datum/callback/ref_search_details() + return "[text_ref(src)] (obj: [object] proc: [delegate] args: [json_encode(arguments)] user: [user?.resolve() || "null"])" diff --git a/code/modules/antagonists/changeling/powers/pheromone_receptors.dm b/code/modules/antagonists/changeling/powers/pheromone_receptors.dm index 8ed9c27599b3..e7fb3820c019 100644 --- a/code/modules/antagonists/changeling/powers/pheromone_receptors.dm +++ b/code/modules/antagonists/changeling/powers/pheromone_receptors.dm @@ -52,7 +52,7 @@ var/datum/antagonist/changeling/antag_datum = C.mind.has_antag_datum(/datum/antagonist/changeling) if(istype(antag_datum)) var/their_loc = get_turf(C) - var/distance = get_dist_euclidian(my_loc, their_loc) + var/distance = get_dist_euclidean(my_loc, their_loc) if (distance < CHANGELING_PHEROMONE_MAX_DISTANCE) changelings[C] = (CHANGELING_PHEROMONE_MAX_DISTANCE ** 2) - (distance ** 2) diff --git a/code/modules/asset_cache/assets/rcd.dm b/code/modules/asset_cache/assets/rcd.dm index 2125c67f6878..8487df3c91c4 100644 --- a/code/modules/asset_cache/assets/rcd.dm +++ b/code/modules/asset_cache/assets/rcd.dm @@ -15,7 +15,7 @@ 'icons/obj/objects.dmi' = list("bed"), 'icons/obj/smooth_structures/catwalk.dmi' = list("catwalk-0"), 'icons/hud/radial.dmi' = list("cnorth", "csouth", "ceast", "cwest", "chair", "secure_windoor", "stool", "wallfloor", "windowsize", "windowtype", "windoor"), - 'icons/obj/structures.dmi' = list("glass_table", "rack", "rwindow0", "reflector_base", "table", "window0"), + 'icons/obj/structures.dmi' = list("glass_table", "rack", "rwindow0", "reflector_base", "table", "window0", "girder"), ) var/icon/icon diff --git a/code/modules/atmospherics/machinery/air_alarm/air_alarm_interact.dm b/code/modules/atmospherics/machinery/air_alarm/air_alarm_interact.dm index 7e3039158d2e..d90fcd8096c4 100644 --- a/code/modules/atmospherics/machinery/air_alarm/air_alarm_interact.dm +++ b/code/modules/atmospherics/machinery/air_alarm/air_alarm_interact.dm @@ -47,7 +47,7 @@ /obj/machinery/airalarm/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) if((buildstage == AIR_ALARM_BUILD_NO_CIRCUIT) && (the_rcd.upgrade & RCD_UPGRADE_SIMPLE_CIRCUITS)) - return list("mode" = RCD_WALLFRAME, "delay" = 20, "cost" = 1) + return list("mode" = RCD_WALLFRAME, "delay" = 2 SECONDS, "cost" = 1) return FALSE /obj/machinery/airalarm/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) diff --git a/code/modules/hydroponics/grown/aloe.dm b/code/modules/hydroponics/grown/aloe.dm index d873eccba2fb..27992a58f345 100644 --- a/code/modules/hydroponics/grown/aloe.dm +++ b/code/modules/hydroponics/grown/aloe.dm @@ -11,7 +11,7 @@ endurance = 25 maturation = 12 production = 12 - yield = 6 + yield = 60 growthstages = 5 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05) diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm index ee01a447de7e..a9cc7b361eec 100644 --- a/code/modules/hydroponics/grown/ambrosia.dm +++ b/code/modules/hydroponics/grown/ambrosia.dm @@ -20,7 +20,7 @@ product = /obj/item/food/grown/ambrosia/vulgaris lifespan = 60 endurance = 25 - yield = 6 + yield = 60 potency = 5 icon_dead = "ambrosia-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) diff --git a/code/modules/hydroponics/grown/apple.dm b/code/modules/hydroponics/grown/apple.dm index d6001514f51a..c9a644038b67 100644 --- a/code/modules/hydroponics/grown/apple.dm +++ b/code/modules/hydroponics/grown/apple.dm @@ -8,7 +8,7 @@ product = /obj/item/food/grown/apple lifespan = 55 endurance = 35 - yield = 5 + yield = 50 harvest_age = 200 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "apple-grow" diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm index c8f19237ae26..3d0a62b7eea9 100644 --- a/code/modules/hydroponics/grown/berries.dm +++ b/code/modules/hydroponics/grown/berries.dm @@ -9,7 +9,7 @@ lifespan = 20 maturation = 25 production = 5 - yield = 2 + yield = 20 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "berry-grow" // Uses one growth icons set for all the subtypes icon_dead = "berry-dead" // Same for the dead icon @@ -118,7 +118,7 @@ endurance = 25 maturation = 30 production = 5 - yield = 4 + yield = 40 growthstages = 2 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "grape-grow" @@ -171,7 +171,7 @@ lifespan = 20 maturation = 25 production = 5 - yield = 2 + yield = 20 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "toechtauese-grow" icon_dead = "toechtauese-dead" diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm index 46d455ae27c9..e4b2170a4726 100644 --- a/code/modules/hydroponics/grown/cereals.dm +++ b/code/modules/hydroponics/grown/cereals.dm @@ -7,7 +7,7 @@ plantname = "Wheat Stalks" product = /obj/item/food/grown/wheat production = 1 - yield = 4 + yield = 40 potency = 15 icon_dead = "wheat-dead" possible_mutations = list(/datum/hydroponics/plant_mutation/oat_wheat, /datum/hydroponics/plant_mutation/meat_wheat) diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm index a1be42dd08f8..15b11f43fcdf 100644 --- a/code/modules/hydroponics/grown/chili.dm +++ b/code/modules/hydroponics/grown/chili.dm @@ -9,7 +9,7 @@ lifespan = 20 maturation = 20 production = 20 - yield = 4 + yield = 40 potency = 20 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_grow = "chili-grow" // Uses one growth icons set for all the subtypes @@ -67,7 +67,7 @@ endurance = 10 maturation = 10 production = 10 - yield = 3 + yield = 30 rarity = 20 genes = list(/datum/plant_gene/trait/chem_heating, /datum/plant_gene/trait/backfire/chili_heat) possible_mutations = list() @@ -96,7 +96,7 @@ endurance = 10 maturation = 10 production = 10 - yield = 3 + yield = 30 rarity = 20 genes = list(/datum/plant_gene/trait/repeated_harvest) possible_mutations = list() diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 491b8c3f026b..d368e95f8bce 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -17,7 +17,7 @@ product = /obj/item/food/grown/citrus/lime lifespan = 55 endurance = 50 - yield = 4 + yield = 40 potency = 15 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/repeated_harvest) @@ -41,7 +41,7 @@ product = /obj/item/food/grown/citrus/orange lifespan = 60 endurance = 50 - yield = 5 + yield = 50 potency = 20 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "lime-grow" @@ -69,7 +69,7 @@ product = /obj/item/food/grown/citrus/lemon lifespan = 55 endurance = 45 - yield = 4 + yield = 40 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "lime-grow" icon_dead = "lime-dead" @@ -98,7 +98,7 @@ genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/bomb_plant/potency_based) lifespan = 55 endurance = 45 - yield = 4 + yield = 40 reagents_add = list(/datum/reagent/consumable/nutriment = 0.05, /datum/reagent/fuel = 0.05) /obj/item/food/grown/firelemon @@ -120,7 +120,7 @@ product = /obj/item/food/grown/citrus/orange_3d lifespan = 60 endurance = 50 - yield = 5 + yield = 50 potency = 20 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "lime-grow" diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm index e3a87c31613c..3407e0e06b37 100644 --- a/code/modules/hydroponics/grown/cocoa_vanilla.dm +++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm @@ -9,7 +9,7 @@ lifespan = 20 maturation = 25 production = 25 - yield = 2 + yield = 20 growthstages = 5 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "cocoapod-grow" @@ -60,7 +60,7 @@ product = /obj/item/food/grown/bungofruit lifespan = 30 maturation = 12 - yield = 3 + yield = 30 production = 7 genes = list(/datum/plant_gene/trait/repeated_harvest) possible_mutations = list() diff --git a/code/modules/hydroponics/grown/cotton.dm b/code/modules/hydroponics/grown/cotton.dm index c67c30440538..89a3431af243 100644 --- a/code/modules/hydroponics/grown/cotton.dm +++ b/code/modules/hydroponics/grown/cotton.dm @@ -10,7 +10,7 @@ endurance = 25 maturation = 15 production = 1 - yield = 2 + yield = 20 potency = 50 growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing.dmi' @@ -68,7 +68,7 @@ endurance = 50 maturation = 15 production = 1 - yield = 2 + yield = 20 potency = 50 //growthstages = 3 //growing_icon = 'icons/obj/hydroponics/growing.dmi' diff --git a/code/modules/hydroponics/grown/cucumber.dm b/code/modules/hydroponics/grown/cucumber.dm index 5180044be60d..a22670a8f32e 100644 --- a/code/modules/hydroponics/grown/cucumber.dm +++ b/code/modules/hydroponics/grown/cucumber.dm @@ -8,7 +8,7 @@ product = /obj/item/food/grown/cucumber maturation = 10 production = 1 - yield = 5 + yield = 50 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_grow = "cucumber-grow" icon_dead = "cucumber-dead" diff --git a/code/modules/hydroponics/grown/eggplant.dm b/code/modules/hydroponics/grown/eggplant.dm index fac6c7eed8ed..0147d9a37bd7 100644 --- a/code/modules/hydroponics/grown/eggplant.dm +++ b/code/modules/hydroponics/grown/eggplant.dm @@ -6,7 +6,7 @@ species = "eggplant" plantname = "Eggplants" product = /obj/item/food/grown/eggplant - yield = 2 + yield = 20 potency = 20 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_grow = "eggplant-grow" diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 10c05b8586c3..848e4e870fb0 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -8,7 +8,7 @@ product = /obj/item/food/grown/poppy endurance = 10 maturation = 8 - yield = 6 + yield = 60 potency = 20 growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' @@ -65,7 +65,7 @@ production = 5 endurance = 10 maturation = 12 - yield = 4 + yield = 40 potency = 20 growthstages = 4 weed_rate = 2 @@ -140,7 +140,7 @@ endurance = 20 maturation = 7 production = 1 - yield = 2 + yield = 20 potency = 30 growthstages = 4 genes = list(/datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/preserved) @@ -169,7 +169,7 @@ genes = list(/datum/plant_gene/trait/attack/sunflower_attack, /datum/plant_gene/trait/preserved) endurance = 20 production = 2 - yield = 2 + yield = 20 growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' icon_grow = "sunflower-grow" diff --git a/code/modules/hydroponics/grown/garlic.dm b/code/modules/hydroponics/grown/garlic.dm index ea228e09b9d6..b61150b4da40 100644 --- a/code/modules/hydroponics/grown/garlic.dm +++ b/code/modules/hydroponics/grown/garlic.dm @@ -5,7 +5,7 @@ species = "garlic" plantname = "Garlic Sprouts" product = /obj/item/food/grown/garlic - yield = 6 + yield = 60 potency = 25 growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' diff --git a/code/modules/hydroponics/grown/gatfruit.dm b/code/modules/hydroponics/grown/gatfruit.dm index 866944b390e1..5671f4b1a799 100644 --- a/code/modules/hydroponics/grown/gatfruit.dm +++ b/code/modules/hydroponics/grown/gatfruit.dm @@ -12,7 +12,7 @@ endurance = 20 maturation = 1 production = 10 - yield = 2 + yield = 20 potency = 60 growthstages = 2 rarity = 60 // Obtainable only with xenobio+superluck. diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm index 920e04883069..78c745e1561e 100644 --- a/code/modules/hydroponics/grown/grass_carpet.dm +++ b/code/modules/hydroponics/grown/grass_carpet.dm @@ -10,7 +10,7 @@ endurance = 40 maturation = 80 production = 5 - yield = 5 + yield = 50 growthstages = 2 icon_grow = "grass-grow" icon_dead = "grass-dead" diff --git a/code/modules/hydroponics/grown/hedges.dm b/code/modules/hydroponics/grown/hedges.dm index 02a2b5a5dd2d..951abd86feaa 100644 --- a/code/modules/hydroponics/grown/hedges.dm +++ b/code/modules/hydroponics/grown/hedges.dm @@ -9,7 +9,7 @@ endurance = 30 maturation = 12 production = 6 - yield = 2 + yield = 20 growthstages = 3 reagents_add = list() possible_mutations = list(/datum/hydroponics/plant_mutation/kudzu_vines) diff --git a/code/modules/hydroponics/grown/herbs.dm b/code/modules/hydroponics/grown/herbs.dm index 5416de9becf1..9e095475348e 100644 --- a/code/modules/hydroponics/grown/herbs.dm +++ b/code/modules/hydroponics/grown/herbs.dm @@ -7,7 +7,7 @@ plantname = "Herbs" product = /obj/item/food/grown/herbs growthstages = 2 - yield = 5 + yield = 50 potency = 20 growing_icon = 'icons/obj/hydroponics/growing.dmi' icon_grow = "herbs-grow" diff --git a/code/modules/hydroponics/grown/korta_nut.dm b/code/modules/hydroponics/grown/korta_nut.dm index 4c6787a91822..bfc6777c21ac 100644 --- a/code/modules/hydroponics/grown/korta_nut.dm +++ b/code/modules/hydroponics/grown/korta_nut.dm @@ -8,7 +8,7 @@ product = /obj/item/food/grown/korta_nut lifespan = 55 endurance = 35 - yield = 5 + yield = 50 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "kortanut-grow" icon_dead = "kortanut-dead" diff --git a/code/modules/hydroponics/grown/kronkus.dm b/code/modules/hydroponics/grown/kronkus.dm index 732a6e26c834..17ca34f755c3 100644 --- a/code/modules/hydroponics/grown/kronkus.dm +++ b/code/modules/hydroponics/grown/kronkus.dm @@ -11,7 +11,7 @@ endurance = 10 maturation = 12 production = 4 - yield = 3 + yield = 30 growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing.dmi' reagents_add = list(/datum/reagent/consumable/nutriment = 0.05) diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index 3562c80a346e..3b94cebeab6a 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -18,7 +18,7 @@ endurance = 35 maturation = 10 production = 5 - yield = 4 + yield = 40 potency = 15 growthstages = 4 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) @@ -44,7 +44,7 @@ endurance = 35 maturation = 10 production = 5 - yield = 4 + yield = 40 growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' @@ -71,7 +71,7 @@ endurance = 35 maturation = 12 production = 5 - yield = 2 + yield = 20 potency = 35 growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) @@ -97,7 +97,7 @@ product = /obj/item/food/grown/mushroom/libertycap maturation = 7 production = 1 - yield = 5 + yield = 50 potency = 15 growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) @@ -122,7 +122,7 @@ product = /obj/item/food/grown/mushroom/plumphelmet maturation = 8 production = 1 - yield = 4 + yield = 40 potency = 15 growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) @@ -149,7 +149,7 @@ lifespan = 30 endurance = 30 maturation = 22 - yield = 1 + yield = 10 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/mob_transformation/shroom) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' possible_mutations = list() @@ -176,7 +176,7 @@ endurance = 20 maturation = 7 production = 1 - yield = 5 + yield = 50 potency = 15 growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) @@ -202,7 +202,7 @@ lifespan = 40 production = 4 endurance = 8 - yield = 4 + yield = 40 growthstages = 2 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/preset/liquidelectricity, /datum/plant_gene/trait/carnivory/jupitercup) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' @@ -228,7 +228,7 @@ endurance = 30 maturation = 15 production = 1 - yield = 3 //-> spread + yield = 30 //-> spread potency = 30 //-> brightness growthstages = 4 rarity = 20 diff --git a/code/modules/hydroponics/grown/olive.dm b/code/modules/hydroponics/grown/olive.dm index 8f93a9695ecf..29e03fcf08cf 100644 --- a/code/modules/hydroponics/grown/olive.dm +++ b/code/modules/hydroponics/grown/olive.dm @@ -8,7 +8,7 @@ product = /obj/item/food/grown/olive lifespan = 150 endurance = 35 - yield = 5 + yield = 50 maturation = 10 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "olive-grow" diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm index 79650dab3193..eb9fc33484b9 100644 --- a/code/modules/hydroponics/grown/onion.dm +++ b/code/modules/hydroponics/grown/onion.dm @@ -8,7 +8,7 @@ lifespan = 20 maturation = 30 production = 4 - yield = 6 + yield = 60 endurance = 25 growthstages = 3 weed_chance = 3 diff --git a/code/modules/hydroponics/grown/peanut.dm b/code/modules/hydroponics/grown/peanut.dm index bda79a10a6be..b9d21b7d1185 100644 --- a/code/modules/hydroponics/grown/peanut.dm +++ b/code/modules/hydroponics/grown/peanut.dm @@ -8,7 +8,7 @@ product = /obj/item/food/grown/peanut lifespan = 55 endurance = 35 - yield = 5 + yield = 50 growing_icon = 'icons/obj/hydroponics/growing.dmi' icon_grow = "peanut-grow" icon_dead = "peanut-dead" diff --git a/code/modules/hydroponics/grown/peas.dm b/code/modules/hydroponics/grown/peas.dm index a813601bee3b..9bd23f6483ba 100644 --- a/code/modules/hydroponics/grown/peas.dm +++ b/code/modules/hydroponics/grown/peas.dm @@ -36,7 +36,7 @@ product = /obj/item/food/grown/laugh maturation = 7 potency = 10 - yield = 7 + yield = 70 production = 5 growthstages = 3 icon_grow = "laughpeas-grow" @@ -68,7 +68,7 @@ product = /obj/item/food/grown/peace maturation = 20 potency = 75 - yield = 1 + yield = 10 production = 10 genes = list (/datum/plant_gene/trait/glow/blue) reagents_add = list (/datum/reagent/pax = 0.1, /datum/reagent/drug/happiness = 0.1, /datum/reagent/consumable/nutriment = 0.15) diff --git a/code/modules/hydroponics/grown/plum.dm b/code/modules/hydroponics/grown/plum.dm index d12718d4ebf5..56c2e20536b1 100644 --- a/code/modules/hydroponics/grown/plum.dm +++ b/code/modules/hydroponics/grown/plum.dm @@ -8,7 +8,7 @@ product = /obj/item/food/grown/plum lifespan = 55 endurance = 35 - yield = 5 + yield = 50 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "plum-grow" icon_dead = "plum-dead" diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm index 2f478b6b27b8..5375d3e2a0d4 100644 --- a/code/modules/hydroponics/grown/potato.dm +++ b/code/modules/hydroponics/grown/potato.dm @@ -9,7 +9,7 @@ lifespan = 30 maturation = 10 production = 1 - yield = 4 + yield = 40 growthstages = 4 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_grow = "potato-grow" diff --git a/code/modules/hydroponics/grown/rainbow_bunch.dm b/code/modules/hydroponics/grown/rainbow_bunch.dm index 3b60906c3f51..a15fa08a7722 100644 --- a/code/modules/hydroponics/grown/rainbow_bunch.dm +++ b/code/modules/hydroponics/grown/rainbow_bunch.dm @@ -10,7 +10,7 @@ endurance = 10 maturation = 6 production = 3 - yield = 5 + yield = 50 potency = 20 growthstages = 4 growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index 5dd01a418fa2..be51fe2d9e98 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -12,7 +12,7 @@ endurance = 25 maturation = 30 production = 5 - yield = 4 + yield = 40 growthstages = 1 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' genes = list(/datum/plant_gene/trait/repeated_harvest) @@ -41,7 +41,7 @@ endurance = 8 maturation = 10 production = 1 - yield = 1 //seeds if there isn't a dna inside + yield = 10 potency = 30 var/volume = 5 var/ckey diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm index dbb67d0e8882..ccbcae864929 100644 --- a/code/modules/hydroponics/grown/root.dm +++ b/code/modules/hydroponics/grown/root.dm @@ -8,7 +8,7 @@ product = /obj/item/food/grown/carrot maturation = 10 production = 1 - yield = 5 + yield = 50 growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' possible_mutations = list(/datum/hydroponics/plant_mutation/parsnip) @@ -66,7 +66,7 @@ product = /obj/item/food/grown/whitebeet lifespan = 60 endurance = 50 - yield = 6 + yield = 60 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_dead = "whitebeet-dead" possible_mutations = list(/datum/hydroponics/plant_mutation/redbeet) @@ -91,7 +91,7 @@ product = /obj/item/food/grown/redbeet lifespan = 60 endurance = 50 - yield = 5 + yield = 50 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_dead = "whitebeet-dead" genes = list(/datum/plant_gene/trait/maxchem) diff --git a/code/modules/hydroponics/grown/seedling.dm b/code/modules/hydroponics/grown/seedling.dm index e50b8fe10d13..bd0e1a37e819 100644 --- a/code/modules/hydroponics/grown/seedling.dm +++ b/code/modules/hydroponics/grown/seedling.dm @@ -12,7 +12,7 @@ maturation = 10 production = 1 growthstages = 2 - yield = 1 + yield = 10 potency = 30 /obj/item/seeds/seedling/harvest(mob/harvester) diff --git a/code/modules/hydroponics/grown/sugarcane.dm b/code/modules/hydroponics/grown/sugarcane.dm index 90f87fce8539..a32fe8fb58c5 100644 --- a/code/modules/hydroponics/grown/sugarcane.dm +++ b/code/modules/hydroponics/grown/sugarcane.dm @@ -11,7 +11,7 @@ lifespan = 60 endurance = 50 maturation = 30 - yield = 4 + yield = 40 growthstages = 2 reagents_add = list(/datum/reagent/consumable/nutriment = 0.04, /datum/reagent/consumable/sugar = 0.25) possible_mutations = list(/datum/hydroponics/plant_mutation/bamboo) diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index a83a7a09d40e..9231102097f4 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -9,7 +9,7 @@ lifespan = 20 maturation = 5 production = 5 - yield = 5 + yield = 50 growthstages = 5 icon_dead = "tea-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) @@ -56,7 +56,7 @@ endurance = 20 maturation = 5 production = 5 - yield = 5 + yield = 50 growthstages = 5 icon_dead = "coffee-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) diff --git a/code/modules/hydroponics/grown/tobacco.dm b/code/modules/hydroponics/grown/tobacco.dm index 7a5679e66f12..08e1ec675fd8 100644 --- a/code/modules/hydroponics/grown/tobacco.dm +++ b/code/modules/hydroponics/grown/tobacco.dm @@ -9,7 +9,7 @@ lifespan = 20 maturation = 35 production = 5 - yield = 10 + yield = 100 growthstages = 3 icon_dead = "tobacco-dead" possible_mutations = list(/datum/hydroponics/plant_mutation/space_tobacco) diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index 387cf0a56782..3a2af110e9d6 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -82,7 +82,7 @@ species = "bluespacetomato" plantname = "Bluespace Tomato Plants" product = /obj/item/food/grown/tomato/blue/bluespace - yield = 2 + yield = 20 possible_mutations = list() genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/backfire/bluespace) reagents_add = list(/datum/reagent/lube = 0.2, /datum/reagent/bluespace = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) @@ -106,7 +106,7 @@ species = "killertomato" plantname = "Killer-Tomato Plants" product = /obj/item/food/grown/tomato/killer - yield = 2 + yield = 20 genes = list(/datum/plant_gene/trait/mob_transformation/tomato) growthstages = 2 icon_grow = "killertomato-grow" diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 5c1aa0d40013..bc46dd77e557 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -9,7 +9,7 @@ endurance = 50 maturation = 15 production = 1 - yield = 5 + yield = 50 potency = 50 growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' diff --git a/code/modules/hydroponics/grown/weeds/kudzu.dm b/code/modules/hydroponics/grown/weeds/kudzu.dm index 679e99d500c9..7e95ae00f4b4 100644 --- a/code/modules/hydroponics/grown/weeds/kudzu.dm +++ b/code/modules/hydroponics/grown/weeds/kudzu.dm @@ -11,7 +11,7 @@ genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/plant_type/weed_hardy) lifespan = 20 endurance = 10 - yield = 4 + yield = 40 growthstages = 4 rarity = 30 var/list/mutations = list() diff --git a/code/modules/hydroponics/grown/weeds/nettle.dm b/code/modules/hydroponics/grown/weeds/nettle.dm index 3e4301c75083..375c031e0ab9 100644 --- a/code/modules/hydroponics/grown/weeds/nettle.dm +++ b/code/modules/hydroponics/grown/weeds/nettle.dm @@ -8,7 +8,7 @@ product = /obj/item/food/grown/nettle lifespan = 30 endurance = 40 // tuff like a toiger - yield = 4 + yield = 40 growthstages = 5 genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/attack/nettle_attack, /datum/plant_gene/trait/backfire/nettle_burn) possible_mutations = list(/datum/hydroponics/plant_mutation/death_nettle) @@ -24,7 +24,7 @@ product = /obj/item/food/grown/nettle/death endurance = 25 maturation = 8 - yield = 2 + yield = 20 genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/stinging, /datum/plant_gene/trait/attack/nettle_attack/death, /datum/plant_gene/trait/backfire/nettle_burn/death) possible_mutations = list() reagents_add = list(/datum/reagent/toxin/acid/fluacid = 0.5, /datum/reagent/toxin/acid = 0.5) diff --git a/code/modules/hydroponics/grown/weeds/starthistle.dm b/code/modules/hydroponics/grown/weeds/starthistle.dm index d5f730a5360b..859ef9f5b086 100644 --- a/code/modules/hydroponics/grown/weeds/starthistle.dm +++ b/code/modules/hydroponics/grown/weeds/starthistle.dm @@ -10,7 +10,7 @@ endurance = 50 // damm pesky weeds maturation = 5 production = 1 - yield = 2 + yield = 20 potency = 10 growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' @@ -44,7 +44,7 @@ endurance = 40 maturation = 30 production = 2 - yield = 2 + yield = 20 potency = 25 growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index d84bf59dbd67..4f92ba56807e 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -974,13 +974,13 @@ /datum/plant_gene/trait/never_mutate name = "Prosophobic Inclination" description = "The plant does not mutate normally, but may give a mutated produce." - mutability_flags = PLANT_GENE_REMOVABLE | PLANT_GENE_MUTATABLE | PLANT_GENE_GRAFTABLE + mutability_flags = PLANT_GENE_REMOVABLE | PLANT_GENE_GRAFTABLE /// Prevents stat mutation caused by instability. Trait acts as a tag for hydroponics.dm to recognise. /datum/plant_gene/trait/stable_stats name = "Symbiotic Resilience" description = "High instability does not affect the plant stats." - mutability_flags = PLANT_GENE_REMOVABLE | PLANT_GENE_MUTATABLE | PLANT_GENE_GRAFTABLE + mutability_flags = PLANT_GENE_REMOVABLE | PLANT_GENE_GRAFTABLE /// Traits for flowers, makes plants not decompose. /datum/plant_gene/trait/preserved @@ -1025,3 +1025,8 @@ /datum/plant_gene/trait/plant_type/alien_properties name ="?????" icon = "reddit-alien" + +/datum/plant_gene/trait/seedless + name = "Seedless" + description = "The plant is unable to produce seeds" + mutability_flags = PLANT_GENE_REMOVABLE | PLANT_GENE_MUTATABLE | PLANT_GENE_GRAFTABLE diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index b86e545dbc5c..bb7911aea17e 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -35,7 +35,7 @@ /// Changes the amount of time needed for a plant to become harvestable. var/production = 25 /// Amount of growns created per harvest. If is -1, the plant/shroom/weed is never meant to be harvested. - var/yield = 3 + var/yield = 30 /// The 'power' of a plant. Generally effects the amount of reagent in a plant, also used in other ways. var/potency = 10 /// Amount of growth sprites the plant has. @@ -247,57 +247,77 @@ /obj/item/seeds/proc/harvest(mob/user) ///Reference to the tray/soil the seeds are planted in. var/atom/movable/parent = loc //for ease of access - ///Count used for creating the correct amount of results to the harvest. - var/t_amount = 0 ///List of plants all harvested from the same batch. var/list/result = list() ///Tile of the harvester to deposit the growables. var/output_loc = parent.Adjacent(user) ? user.loc : parent.loc //needed for TK ///Name of the grown products. var/product_name - ///The Number of products produced by the plant, typically the yield. Modified by certain traits. - var/product_count = getYield() - - if(product_count >= 10) - product_count = 10 + log(1.02) * (getYield() - 1) + var/seed_harvest_ratio = 0.2 + var/seedless = get_gene(/datum/plant_gene/trait/seedless) + ///the value of yield that the harvest amount stops being linear and slows down + var/yield_linearity_breakpoint = 100 + ///linear region growth coeff + var/harvest_linear_coeff = 0.1 + ///harvest amount gets close to 20 as yield gets close to +infinity + var/maximum_harvest_amount = 20 + ///to be calculated later based on yield + var/harvest_amount = 0 + var/harvest_counter = 0 + var/maximum_seed_production = 0 + var/seed_counter = 0 + var/plant_yield = getYield() if(user.client) add_jobxp_chance(user.client, 1, JOB_BOTANIST, 20) - while(t_amount < product_count) - if(prob(25)) + if(plant_yield >= yield_linearity_breakpoint) + harvest_amount = qp_sigmoid(yield_linearity_breakpoint, maximum_harvest_amount, plant_yield) + if(!seedless) + maximum_seed_production = floor(harvest_amount * seed_harvest_ratio) + + else + harvest_amount = floor(plant_yield * harvest_linear_coeff) + if(!seedless) + maximum_seed_production = floor(harvest_amount * seed_harvest_ratio) + if ((plant_yield > 0 && maximum_seed_production == 0) && prob(50)) + maximum_seed_production = 1 + + while(harvest_counter < harvest_amount) + while(seed_counter < maximum_seed_production) var/obj/item/seeds/seed_prod - if(prob(50) && has_viable_mutations()) + if(prob(65) && has_viable_mutations()) seed_prod = create_valid_mutation(output_loc, TRUE) ADD_TRAIT(seed_prod, TRAIT_PLANT_WILDMUTATE, "mutated") else seed_prod = src.Copy_drop(output_loc) - result.Add(seed_prod) // User gets a consumable - t_amount++ + result.Add(seed_prod) + harvest_counter++ + seed_counter++ + var/obj/item/food/grown/item_grown + if(prob(10) && has_viable_mutations()) + item_grown = create_valid_mutation(output_loc) else - var/obj/item/food/grown/t_prod - if(prob(10) && has_viable_mutations()) - t_prod = create_valid_mutation(output_loc) - else - if(!product) - t_amount++ - continue - t_prod = new product(output_loc, src) - if(plantname != initial(plantname)) - t_prod.name = plantname - if(istype(t_prod)) - t_prod.seed.name = name - t_prod.seed.desc = desc - t_prod.seed.plantname = plantname - result.Add(t_prod) // User gets a consumable - if(!t_prod) - return - t_amount++ - if(istype(t_prod)) - product_name = t_prod.seed.plantname - if(product_count >= 1) - SSblackbox.record_feedback("tally", "food_harvested", product_count, product_name) + if(!product) + harvest_counter++ + continue + item_grown = new product(output_loc, src) + if(plantname != initial(plantname)) + item_grown.name = plantname + if(istype(item_grown)) + item_grown.seed.name = name + item_grown.seed.desc = desc + item_grown.seed.plantname = plantname + result.Add(item_grown) // User gets a consumable + if(!item_grown) + return + harvest_counter++ + if(istype(item_grown)) + product_name = item_grown.seed.plantname + if(harvest_amount >= 1) + SSblackbox.record_feedback("tally", "food_harvested", harvest_amount, product_name) return result + /** * This is where plant chemical products are handled. diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index d5a7b6bca106..09a0633ff927 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -65,7 +65,8 @@ uniform = /obj/item/clothing/under/rank/engineering/chief_engineer backpack_contents = list( /obj/item/melee/baton/telescopic = 1, - ) + /obj/item/construction/rcd/ce = 1, + ) belt = /obj/item/storage/belt/utility/chief/full ears = /obj/item/radio/headset/heads/ce gloves = /obj/item/clothing/gloves/color/black diff --git a/code/modules/jobs/job_types/prisoner.dm b/code/modules/jobs/job_types/prisoner.dm index 5da3f5437f1a..60871e29ea25 100644 --- a/code/modules/jobs/job_types/prisoner.dm +++ b/code/modules/jobs/job_types/prisoner.dm @@ -102,7 +102,7 @@ /// Iterates over all turfs in the target area and returns the first non-dense one /datum/job/prisoner/proc/get_random_open_turf_in_area() - var/list/turfs = get_area_turfs(/area/station/security/prison/safe) + var/list/turfs = get_area_turfs(/area/station/security/prison/) var/turf/open/target_turf = null var/sanity = 0 while(!target_turf && sanity < 100) diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index b98685902bd9..343752ea2fb3 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -56,6 +56,10 @@ satchel = /obj/item/storage/backpack/satchel/eng duffelbag = /obj/item/storage/backpack/duffelbag/engineering + backpack_contents = list( + /obj/item/construction/rcd/loaded, + ) + box = /obj/item/storage/box/survival/engineer pda_slot = ITEM_SLOT_LPOCKET skillchips = list(/obj/item/skillchip/job/engineer) diff --git a/code/modules/mob/living/basic/drone/_drone.dm b/code/modules/mob/living/basic/drone/_drone.dm index d26271c71b42..cf0e71553abe 100644 --- a/code/modules/mob/living/basic/drone/_drone.dm +++ b/code/modules/mob/living/basic/drone/_drone.dm @@ -162,6 +162,12 @@ /obj/item/clothing/mask, /obj/item/storage/box/lights, /obj/item/lightreplacer, + /obj/item/construction/rcd, + /obj/item/rcd_ammo, + /obj/item/rcd_upgrade, + /obj/item/storage/part_replacer, + /obj/item/soap, + /obj/item/holosign_creator, ) /// machines whitelisted from being shy with var/list/shy_machine_whitelist = list( diff --git a/code/modules/mob/living/navigation.dm b/code/modules/mob/living/navigation.dm index df2e5806631e..470bdc187228 100644 --- a/code/modules/mob/living/navigation.dm +++ b/code/modules/mob/living/navigation.dm @@ -132,7 +132,7 @@ if(!target) target = lad continue - if(get_dist_euclidian(lad, src) > get_dist_euclidian(target, src)) + if(get_dist_euclidean(lad, src) > get_dist_euclidean(target, src)) continue target = lad @@ -144,7 +144,7 @@ if(!target) target = stairs_bro.z == z ? stairs_bro : get_step_multiz(stairs_bro, UP) //if the stairs aren't on our z level, get the turf above them (on our zlevel) to path to instead continue - if(get_dist_euclidian(stairs_bro, src) > get_dist_euclidian(target, src)) + if(get_dist_euclidean(stairs_bro, src) > get_dist_euclidean(target, src)) continue target = stairs_bro.z == z ? stairs_bro : get_step_multiz(stairs_bro, UP) diff --git a/code/modules/modular_computers/file_system/programs/radar.dm b/code/modules/modular_computers/file_system/programs/radar.dm index cf8f39073cbf..82ce5e80ed95 100644 --- a/code/modules/modular_computers/file_system/programs/radar.dm +++ b/code/modules/modular_computers/file_system/programs/radar.dm @@ -91,7 +91,7 @@ var/locx = (target_turf.x - here_turf.x) + 24 var/locy = (here_turf.y - target_turf.y) + 24 - if(get_dist_euclidian(here_turf, target_turf) > 24) + if(get_dist_euclidean(here_turf, target_turf) > 24) userot = TRUE rot = round(get_angle(here_turf, target_turf)) else @@ -176,7 +176,7 @@ var/here_turf = get_turf(computer) var/target_turf = get_turf(signal) - var/trackdistance = get_dist_euclidian(here_turf, target_turf) + var/trackdistance = get_dist_euclidean(here_turf, target_turf) switch(trackdistance) if(0) program_icon_state = "[initial(program_icon_state)]direct" diff --git a/code/modules/power/apc/apc_tool_act.dm b/code/modules/power/apc/apc_tool_act.dm index 2e47aa7ad789..00d878ba1041 100644 --- a/code/modules/power/apc/apc_tool_act.dm +++ b/code/modules/power/apc/apc_tool_act.dm @@ -161,13 +161,13 @@ if(machine_stat & BROKEN) balloon_alert(user, "frame is too damaged!") return FALSE - return list("mode" = RCD_WALLFRAME, "delay" = 20, "cost" = 1) + return list("mode" = RCD_WALLFRAME, "delay" = 2 SECONDS, "cost" = 1) if(!cell) if(machine_stat & MAINT) balloon_alert(user, "no board for a cell!") return FALSE - return list("mode" = RCD_WALLFRAME, "delay" = 50, "cost" = 10) + return list("mode" = RCD_WALLFRAME, "delay" = 5 SECONDS, "cost" = 10) balloon_alert(user, "has both board and cell!") return FALSE diff --git a/code/modules/reagents/chemistry/items.dm b/code/modules/reagents/chemistry/items.dm index b2e29e3c5d61..b086f0f78e02 100644 --- a/code/modules/reagents/chemistry/items.dm +++ b/code/modules/reagents/chemistry/items.dm @@ -123,7 +123,7 @@ return var/list/out_message = list() to_chat(user, "The chemistry meter beeps and displays:") - out_message += "Total volume: [round(cont.volume, 0.01)] Current temperature: [round(cont.reagents.chem_temp, 0.1)]K Total pH: [round(cont.reagents.ph, 0.01)]\n" + out_message += "Total volume: [round(cont.volume, 0.01)] Current temperature: [round(cont.reagents.chem_temp, 0.1)]K Total pH: [round(cont.reagents.ph, 0.01)]\n" out_message += "Chemicals found in [target.name]:\n" if(cont.reagents.is_reacting) out_message += "[span_warning("A reaction appears to be occuring currently.")]\n" @@ -135,7 +135,7 @@ out_message += "[round(reagent.volume, 0.01)]u of [reagent.name], Purity: [round(reagent.purity, 0.000001)*100]%, [(scanmode?"[(reagent.overdose_threshold?"Overdose: [reagent.overdose_threshold]u, ":"")]Base pH: [initial(reagent.ph)], Current pH: [reagent.ph].":"Current pH: [reagent.ph].")]\n" if(scanmode) out_message += "Analysis: [reagent.description]\n" - to_chat(user, "[out_message.Join()]") + to_chat(user, examine_block(span_notice("[out_message.Join()]"))) desc = "An electrode attached to a small circuit box that will display details of a solution. Can be toggled to provide a description of each of the reagents. The screen currently displays detected vol: [round(cont.volume, 0.01)] detected pH:[round(cont.reagents.ph, 0.1)]." /obj/item/burner diff --git a/code/modules/research/designs/tool_designs.dm b/code/modules/research/designs/tool_designs.dm index a9267f9484d0..0c27f6b7550f 100644 --- a/code/modules/research/designs/tool_designs.dm +++ b/code/modules/research/designs/tool_designs.dm @@ -133,6 +133,39 @@ ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING +/datum/design/rcd_upgrade/anti_interrupt + name = "RCD anti disruption designs upgrade" + desc = "Prevents interruption of RCD construction and deconstruction." + id = "rcd_upgrade_anti_interrupt" + build_type = PROTOLATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 1.5, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/rcd_upgrade/anti_interrupt + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design/rcd_upgrade/cooling + name = "RCD cooling upgrade" + desc = "Allows the RCD to more quickly perform multiple actions at once." + id = "rcd_upgrade_cooling" + build_type = PROTOLATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/rcd_upgrade/cooling + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING + /datum/design/rcd_upgrade/furnishing name = "RCD furnishing upgrade" desc = "Adds the ability to furnish areas using the RCD." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index feab11b01e32..7175b8663b8f 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -1558,6 +1558,8 @@ description = "Unlocks new designs that improve rapid devices." prereq_ids = list("adv_engi") design_ids = list( + "rcd_upgrade_anti_interrupt", + "rcd_upgrade_cooling", "rcd_upgrade_frames", "rcd_upgrade_furnishing", "rcd_upgrade_simple_circuits", diff --git a/code/modules/station_goals/meteor_shield.dm b/code/modules/station_goals/meteor_shield.dm index 6eec271a01fc..cb527fd12d87 100644 --- a/code/modules/station_goals/meteor_shield.dm +++ b/code/modules/station_goals/meteor_shield.dm @@ -13,7 +13,7 @@ // A chain of satellites encircles the station // Satellites be actived to generate a shield that will block unorganic matter from passing it. /datum/station_goal/station_shield - name = "Station Shield" + name = "Hard-Kill Meteor Protection System" // monkestation edit var/coverage_goal = 500 requires_space = TRUE diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 5ebc3bf6ff5e..e1d4f42815c1 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -93,7 +93,7 @@ w_class = WEIGHT_CLASS_NORMAL toolspeed = 0.7 light_system = OVERLAY_LIGHT - light_outer_range = 1 + light_outer_range = 1.5 light_color = COLOR_SOFT_RED /obj/item/cautery/advanced/get_all_tool_behaviours() @@ -119,7 +119,13 @@ /obj/item/cautery/advanced/proc/on_transform(obj/item/source, mob/user, active) SIGNAL_HANDLER - tool_behaviour = (active ? TOOL_DRILL : TOOL_CAUTERY) + if(active) + tool_behaviour = TOOL_DRILL + set_light_color(LIGHT_COLOR_BLUE) + else + tool_behaviour = TOOL_CAUTERY + set_light_color(LIGHT_COLOR_ORANGE) + balloon_alert(user, "lenses set to [active ? "drill" : "mend"]") playsound(user ? user : src, 'sound/weapons/tap.ogg', 50, TRUE) return COMPONENT_NO_DEFAULT_MESSAGE @@ -372,7 +378,7 @@ w_class = WEIGHT_CLASS_NORMAL toolspeed = 0.7 light_system = OVERLAY_LIGHT - light_outer_range = 1 + light_outer_range = 1.5 light_color = LIGHT_COLOR_BLUE sharpness = SHARP_EDGED @@ -403,10 +409,10 @@ if(active) tool_behaviour = TOOL_SAW - set_light_range(2) + set_light_color(LIGHT_COLOR_ORANGE) else tool_behaviour = TOOL_SCALPEL - set_light_range(1) + set_light_color(LIGHT_COLOR_BLUE) balloon_alert(user, "[active ? "enabled" : "disabled"] bone-cutting mode") playsound(user ? user : src, 'sound/machines/click.ogg', 50, TRUE) diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 80895a0dfd56..da3c7922bc0b 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -138,6 +138,7 @@ #include "leash.dm" #include "lesserform.dm" #include "limbsanity.dm" +#include "linked_xenobio_pens.dm" #include "load_map_security.dm" #include "lungs.dm" #include "machine_disassembly.dm" diff --git a/code/modules/unit_tests/find_reference_sanity.dm b/code/modules/unit_tests/find_reference_sanity.dm index 575ec3269106..0a9b6f3d1722 100644 --- a/code/modules/unit_tests/find_reference_sanity.dm +++ b/code/modules/unit_tests/find_reference_sanity.dm @@ -15,6 +15,8 @@ return ..() /atom/movable/ref_test + // Gotta make sure we do a full check + references_to_clear = INFINITY var/atom/movable/ref_test/self_ref /atom/movable/ref_test/Destroy(force) @@ -28,8 +30,9 @@ var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 3, "Should be: test references: 0 + baseline references: 3 (victim var,loc,allocated list)") - victim.DoSearchVar(testbed, "Sanity Check", search_time = 1) //We increment search time to get around an optimization - TEST_ASSERT(!victim.found_refs.len, "The ref-tracking tool found a ref where none existed") + victim.DoSearchVar(testbed, "Sanity Check") //We increment search time to get around an optimization + + TEST_ASSERT(!LAZYLEN(victim.found_refs), "The ref-tracking tool found a ref where none existed") SSgarbage.should_save_refs = FALSE /datum/unit_test/find_reference_baseline/Run() @@ -44,11 +47,11 @@ var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 6, "Should be: test references: 3 + baseline references: 3 (victim var,loc,allocated list)") - victim.DoSearchVar(testbed, "First Run", search_time = 2) + victim.DoSearchVar(testbed, "First Run") - TEST_ASSERT(victim.found_refs["test"], "The ref-tracking tool failed to find a regular value") - TEST_ASSERT(victim.found_refs[testbed.test_list], "The ref-tracking tool failed to find a list entry") - TEST_ASSERT(victim.found_refs[testbed.test_assoc_list], "The ref-tracking tool failed to find an assoc list value") + TEST_ASSERT(LAZYACCESS(victim.found_refs, "test"), "The ref-tracking tool failed to find a regular value") + TEST_ASSERT(LAZYACCESS(victim.found_refs, testbed.test_list), "The ref-tracking tool failed to find a list entry") + TEST_ASSERT(LAZYACCESS(victim.found_refs, testbed.test_assoc_list), "The ref-tracking tool failed to find an assoc list value") SSgarbage.should_save_refs = FALSE /datum/unit_test/find_reference_exotic/Run() @@ -61,16 +64,14 @@ testbed.vis_contents += victim testbed.test_assoc_list[victim] = TRUE - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 6, "Should be: test references: 3 + baseline references: 3 (victim var,loc,allocated list)") - #endif - victim.DoSearchVar(testbed, "Second Run", search_time = 3) + victim.DoSearchVar(testbed, "Second Run") //This is another sanity check - TEST_ASSERT(!victim.found_refs[testbed.overlays], "The ref-tracking tool found an overlays entry? That shouldn't be possible") - TEST_ASSERT(victim.found_refs[testbed.vis_contents], "The ref-tracking tool failed to find a vis_contents entry") - TEST_ASSERT(victim.found_refs[testbed.test_assoc_list], "The ref-tracking tool failed to find an assoc list key") + TEST_ASSERT(!LAZYACCESS(victim.found_refs, testbed.overlays), "The ref-tracking tool found an overlays entry? That shouldn't be possible") + TEST_ASSERT(LAZYACCESS(victim.found_refs, testbed.vis_contents), "The ref-tracking tool failed to find a vis_contents entry") + TEST_ASSERT(LAZYACCESS(victim.found_refs, testbed.test_assoc_list), "The ref-tracking tool failed to find an assoc list key") SSgarbage.should_save_refs = FALSE /datum/unit_test/find_reference_esoteric/Run() @@ -85,15 +86,14 @@ var/list/to_find_assoc = list(victim) testbed.test_assoc_list["Nesting"] = to_find_assoc - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 6, "Should be: test references: 3 + baseline references: 3 (victim var,loc,allocated list)") - #endif - victim.DoSearchVar(victim, "Third Run Self", search_time = 4) - victim.DoSearchVar(testbed, "Third Run Testbed", search_time = 4) - TEST_ASSERT(victim.found_refs["self_ref"], "The ref-tracking tool failed to find a self reference") - TEST_ASSERT(victim.found_refs[to_find], "The ref-tracking tool failed to find a nested list entry") - TEST_ASSERT(victim.found_refs[to_find_assoc], "The ref-tracking tool failed to find a nested assoc list entry") + victim.DoSearchVar(victim, "Third Run Self") + victim.DoSearchVar(testbed, "Third Run Testbed") + + TEST_ASSERT(LAZYACCESS(victim.found_refs, "self_ref"), "The ref-tracking tool failed to find a self reference") + TEST_ASSERT(LAZYACCESS(victim.found_refs, to_find), "The ref-tracking tool failed to find a nested list entry") + TEST_ASSERT(LAZYACCESS(victim.found_refs, to_find_assoc), "The ref-tracking tool failed to find a nested assoc list entry") SSgarbage.should_save_refs = FALSE /datum/unit_test/find_reference_null_key_entry/Run() @@ -103,12 +103,11 @@ //Calm before the storm testbed.test_assoc_list = list(null = victim) - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 4, "Should be: test references: 1 + baseline references: 3 (victim var,loc,allocated list)") - #endif - victim.DoSearchVar(testbed, "Fourth Run", search_time = 5) - TEST_ASSERT(testbed.test_assoc_list, "The ref-tracking tool failed to find a null key'd assoc list entry") + victim.DoSearchVar(testbed, "Fourth Run") + + TEST_ASSERT(LAZYACCESS(victim.found_refs, testbed.test_assoc_list), "The ref-tracking tool failed to find a null key'd assoc list entry") /datum/unit_test/find_reference_assoc_investigation/Run() var/atom/movable/ref_test/victim = allocate(/atom/movable/ref_test) @@ -121,13 +120,12 @@ var/list/to_find_null_assoc_nested = list(victim) testbed.test_assoc_list[null] = to_find_null_assoc_nested - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 5, "Should be: test references: 2 + baseline references: 3 (victim var,loc,allocated list)") - #endif - victim.DoSearchVar(testbed, "Fifth Run", search_time = 6) - TEST_ASSERT(victim.found_refs[to_find_in_key], "The ref-tracking tool failed to find a nested assoc list key") - TEST_ASSERT(victim.found_refs[to_find_null_assoc_nested], "The ref-tracking tool failed to find a null key'd nested assoc list entry") + victim.DoSearchVar(testbed, "Fifth Run") + + TEST_ASSERT(LAZYACCESS(victim.found_refs, to_find_in_key), "The ref-tracking tool failed to find a nested assoc list key") + TEST_ASSERT(LAZYACCESS(victim.found_refs, to_find_null_assoc_nested), "The ref-tracking tool failed to find a null key'd nested assoc list entry") SSgarbage.should_save_refs = FALSE /datum/unit_test/find_reference_static_investigation/Run() @@ -145,11 +143,9 @@ for(var/key in global.vars) global_vars[key] = global.vars[key] - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 5, "Should be: test references: 2 + baseline references: 3 (victim var,loc,allocated list)") - #endif - victim.DoSearchVar(global_vars, "Sixth Run", search_time = 7) + victim.DoSearchVar(global_vars, "Sixth Run") - TEST_ASSERT(victim.found_refs[global_vars], "The ref-tracking tool failed to find a natively global variable") + TEST_ASSERT(LAZYACCESS(victim.found_refs, global_vars), "The ref-tracking tool failed to find a natively global variable") SSgarbage.should_save_refs = FALSE diff --git a/code/modules/unit_tests/linked_xenobio_pens.dm b/code/modules/unit_tests/linked_xenobio_pens.dm new file mode 100644 index 000000000000..8dc582a73e56 --- /dev/null +++ b/code/modules/unit_tests/linked_xenobio_pens.dm @@ -0,0 +1,20 @@ +/// This test ensures that any mapped xenobiology pens properly have a unique mapping ID set between each ooze sucker and slime pen management console. +/datum/unit_test/linked_xenobio_pens + +/datum/unit_test/linked_xenobio_pens/Run() + var/list/obj/machinery/plumbing/ooze_sucker/used_map_ids = list() + for(var/obj/machinery/slime_pen_controller/pen as anything in GLOB.slime_pen_controllers) + if(!pen.mapping_id) + TEST_FAIL("Found a slime pen management console without a mapping ID at [AREACOORD(pen)]!") + else if(used_map_ids[pen.mapping_id]) + TEST_FAIL("Found a slime pen management console with duplicate mapping_id [pen.mapping_id] at [AREACOORD(pen)], which is already used by the console at [AREACOORD(used_map_ids[pen.mapping_id])]!") + else + used_map_ids[pen.mapping_id] = pen + for(var/obj/machinery/plumbing/ooze_sucker/sucker as anything in GLOB.ooze_suckers) + if(!sucker.mapping_id) + TEST_FAIL("Found an ooze sucker without a mapping ID at [AREACOORD(sucker)]!") + else if(!used_map_ids[sucker.mapping_id]) + TEST_FAIL("Found an ooze sucker with an unused mapping ID at [AREACOORD(sucker)]!") + else if(!sucker.linked_controller) + TEST_FAIL("Ooze sucker failed to link to controller at [AREACOORD(sucker)]!") + diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index b3022560075e..725e3b27702a 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -34,6 +34,10 @@ /obj/item/clothing/head/helmet/hat/cowboy = 3, /obj/item/clothing/head/costume/constable = 3, //monkestation edit /obj/item/clothing/under/rank/security/constable = 3, //Monkestation edit + /obj/item/clothing/under/rank/security/brig_physician = 3, //Monkestation edit + /obj/item/clothing/under/rank/security/brig_physician/skirt = 3, //Monkestation edit + /obj/item/clothing/suit/toggle/labcoat/brig_physician = 3, //Monkestation edit + /obj/item/clothing/shoes/sneakers/secred = 3, //Monkestation edit ) premium = list( /obj/item/clothing/under/rank/security/officer/formal = 3, diff --git a/config/config.txt b/config/config.txt index cf55e68060f4..a15291b8953e 100644 --- a/config/config.txt +++ b/config/config.txt @@ -362,14 +362,14 @@ AUTOADMIN_RANK Game Master ## These trigger for any version below (non-inclusive) the given version, so 510 triggers on 509 or lower. ## These messages will be followed by one stating the clients current version and the required version for clarity. ## If CLIENT_WARN_POPUP is uncommented a popup window with the message will be displayed instead -#CLIENT_WARN_VERSION 511 -#CLIENT_WARN_BUILD 1421 +#CLIENT_WARN_VERSION 515 +#CLIENT_WARN_BUILD 1635 #CLIENT_WARN_POPUP -#CLIENT_WARN_MESSAGE Byond released 511 as the stable release. You can set the framerate your client runs at, which makes the game feel very different and cool. Shortly after its release we will end up using 511 client features and you will be forced to update. -CLIENT_ERROR_VERSION 511 +#CLIENT_WARN_MESSAGE Byond released 515 as the stable release. This comes bundled with a host of niceties, including image generation for UIs and :: operators. +CLIENT_ERROR_VERSION 515 CLIENT_ERROR_MESSAGE Your version of byond is not supported. Please upgrade. -## The minimum build needed for joining the server, if using 512, a good minimum build would be 1421 as that disables the Middle Mouse Button exploit. -CLIENT_ERROR_BUILD 1421 +## The minimum build needed for joining the server. +CLIENT_ERROR_BUILD 1590 ## TOPIC RATE LIMITING ## This allows you to limit how many topic calls (clicking on an interface window) the client can do in any given game second and/or game minute. diff --git a/dependencies.sh b/dependencies.sh index 62463ad41604..d672e81ecfa1 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -5,14 +5,15 @@ # byond version export BYOND_MAJOR=515 -export BYOND_MINOR=1633 +export BYOND_MINOR=1637 #rust_g git tag export RUST_G_VERSION=3.1.0 #node version -export NODE_VERSION=14 -export NODE_VERSION_PRECISE=14.16.1 +export NODE_VERSION_LTS=20.13.0 +# compatiblility mode MUST work with windows 7 +export NODE_VERSION_COMPAT=20.2.0 # SpacemanDMM git tag export SPACEMAN_DMM_VERSION=suite-1.8 diff --git a/html/changelogs/archive/2024-06.yml b/html/changelogs/archive/2024-06.yml index 5607cdf1713a..e1e4519a88c5 100644 --- a/html/changelogs/archive/2024-06.yml +++ b/html/changelogs/archive/2024-06.yml @@ -522,3 +522,94 @@ MrMelbert, KnigTheThrasher: - rscadd: Lizards can customize their lisp - code_imp: Added a modular file for species features +2024-06-26: + Absolucy: + - rscadd: Holomaps now show meteor defense coverage, visualized by a blue grid. + - sound: Meteor defense zap sounds should be able to be heard from further away + now. + - balance: Meteor defense sats can now always be ordered from cargo, regardless + of station goal. + - balance: Meteor defense sats now cover upwards and downwards too, making them + less of a pain on multi-Z stations. + - refactor: Tracking which tiles are covered by meteor defense sats is now much + more intuitive and efficient. + - qol: Meteors now drop debris when zapped by meteor defense sats. + - qol: Examining meteor defense sats now also shows how many meteors have been zapped + overall by all sats. + - balance: Slightly boosted the range of meteor defense satellite from 14 to 16 + tiles. +2024-06-27: + Absolucy: + - rscadd: Engineers now have an RCD round start. + - balance: RCD construction/deconstruction effects can now be attacked in order + to cancel them. You can get the anti-disruption upgrade disk to prevent this. + - balance: RCD construction/deconstruction is now slower if you already have another + effect up. This does not effect reconstruction. + - balance: Both of the above effects do not effect the CE's roundstart RCD, nor + any other RCDs such as combat RCDs. + - rscadd: RCDs can make girders now. + - bugfix: Some RCD constructs took more material than manual construction. The RCD + cost should be consistent in comparison to manual construction now. + - bugfix: RCDs can build wallmounts on reinforced walls. + - qol: RCDs can build directional windows without requiring/building a grill. + - bugfix: You should be able to click on lattices on icebox with the RCD and construct + a floor now + - balance: Maintenance drones now can use RPED, RCD, holosigns, and spray bottles. + - rscadd: Added liquid barriers, currently mapped into xenobio, which block all + liquid flow across them, hopefully preventing the dreaded station-wide ooze + floods. + - image: (intercepti0n) Resprites t-ray scanner, gas analyzer, geiger counter and + hand drill. + - image: (LT3) Medical and improvised gauze are visibly different from cloth. + - image: (Alecksohs) Updated the Advanced Surgical Tool's sprites. + - code_imp: (Alecksohs) Updated the Advanced Surgical Tool's light code. + - qol: Placing someone on an operating table now actually buckles them. + - qol: Prettied up the Chemical Analyzer's output in chat, making it easier to read, + especially when scanning multiple things. + DexeeXI: + - rscadd: New Title for Captains + DustanHache: + - rscadd: Egg bags are now craftable using cloth, like many other bags. + Kapu1178: + - bugfix: Fixed stuff relating to the MODsuit pathfinder module. + - code_imp: AI pathfinding should produce slightly better paths. + KnigTheThrasher: + - bugfix: fixed latejoin prisoner spawns + - bugfix: :) + RafRoq: + - rscadd: 'Added new botany plant trait, seedless, can be found in money tree seeds + + :cl:' + Rex9001, DexeeXI: + - rscadd: Brig Physician as a job + - rscadd: 'Clothing items for Brig Physician: jumpsuit, skirt, scrubs, shoes, backpacks + of all kinds.' + - rscadd: Plasmaman support for Brig Physician. Sprites provided directly by DimWhat. + - rscadd: Alternative job title support for Brig Physician + - rscadd: SECHUD, Crew Monitor and ID card support for Brig Physician + - rscadd: Locker specifically for Brig Physician + - rscadd: Digi-legs support for new clothes for Lizards. + - rscadd: Most new items have inhand sprites + - rscadd: Brig Physician start markers in Prison Medbays. + - rscadd: Requested alternative title for Medical Doctor. (Admin Team Request) + - balance: All prison medbays overhauled to provide proper support. The old tram + medbay was completely bare while Box was mostly "feature complete". All medbays + should have very similar capability. + - bugfix: Head of Personnel's supervisor is now the Captain properly. + - rscdel: Virus extrapolator in the CMO's locker is now gone. (I don't know how + I missed this one) + TTNT789: + - rscadd: The Ashen Forge as a traitor faction + Uristthedorf: + - qol: You can craft plastitanium shards. + ven1883: + - rscadd: Adds Alveolic Deoxidation, a nanite program that heals suffocation. + - rscadd: Adds Alveolic Deoxidation to the tech tree. +2024-06-30: + Absolucy: + - bugfix: Fixed cat ears disappearing from slimes with the gooey cat mutation across + Z-levels. + RafRoq: + - bugfix: 'Fixes botany early game yield + + :cl:' diff --git a/icons/mob/huds/hud.dmi b/icons/mob/huds/hud.dmi index 6420db1c8750..708882bb2302 100644 Binary files a/icons/mob/huds/hud.dmi and b/icons/mob/huds/hud.dmi differ diff --git a/icons/mob/inhands/equipment/backpack_lefthand.dmi b/icons/mob/inhands/equipment/backpack_lefthand.dmi index 6c600e85e8aa..7bed688b2b96 100644 Binary files a/icons/mob/inhands/equipment/backpack_lefthand.dmi and b/icons/mob/inhands/equipment/backpack_lefthand.dmi differ diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index be13305ca8d4..95d8375d739d 100644 Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 57beb052f917..68276a9b5f6b 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/medical/stack_medical.dmi b/icons/obj/medical/stack_medical.dmi index d12949da595f..6a5589512563 100644 Binary files a/icons/obj/medical/stack_medical.dmi and b/icons/obj/medical/stack_medical.dmi differ diff --git a/icons/obj/medical/surgery_tools.dmi b/icons/obj/medical/surgery_tools.dmi index 594f0a8d43fc..5582374b2825 100644 Binary files a/icons/obj/medical/surgery_tools.dmi and b/icons/obj/medical/surgery_tools.dmi differ diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index 867ebd3f3c1c..75a711d111a3 100644 Binary files a/icons/obj/tools.dmi and b/icons/obj/tools.dmi differ diff --git a/monkestation/code/datums/components/crafting.dm b/monkestation/code/datums/components/crafting.dm index 643255a9a3b0..35499e2f2ee7 100644 --- a/monkestation/code/datums/components/crafting.dm +++ b/monkestation/code/datums/components/crafting.dm @@ -12,3 +12,18 @@ ) time = 1.5 SECONDS category = CAT_WEAPON_MELEE + +/datum/crafting_recipe/ph_sensor //Ghetto science goggles for the wanna-be Walter White's upon our grimey-ass station. + name = "Chemical Sensor" + tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_MULTITOOL) + result = /obj/item/ph_meter + reqs = list( + /obj/item/stock_parts/scanning_module = 1, + /obj/item/stock_parts/cell = 1, + /obj/item/stack/sheet/glass = 1, + /obj/item/stack/cable_coil = 5, + /obj/item/pen = 1, + /obj/item/stack/sheet/iron = 2 + ) + time = 4 SECONDS + category = CAT_CHEMISTRY diff --git a/monkestation/code/datums/components/multi_hit.dm b/monkestation/code/datums/components/multi_hit.dm index 870b7be7b79a..7c439ebf6631 100644 --- a/monkestation/code/datums/components/multi_hit.dm +++ b/monkestation/code/datums/components/multi_hit.dm @@ -45,6 +45,11 @@ src.stamina_cost = stamina_cost item_parent = parent +/datum/component/multi_hit/Destroy(force, silent) + after_hit_callback = null + pre_hit_callback = null + return ..() + /datum/component/multi_hit/RegisterWithParent() RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, PROC_REF(pre_hit_callback)) @@ -52,7 +57,6 @@ . = ..() UnregisterSignal(parent, COMSIG_ITEM_PRE_ATTACK) - /datum/component/multi_hit/proc/pre_hit_callback(datum/source, obj/item/thing, mob/user, params) SIGNAL_HANDLER diff --git a/monkestation/code/datums/id_trim/jobs.dm b/monkestation/code/datums/id_trim/jobs.dm new file mode 100644 index 000000000000..ece4a2889851 --- /dev/null +++ b/monkestation/code/datums/id_trim/jobs.dm @@ -0,0 +1,28 @@ +/datum/id_trim/job/brig_physician + assignment = "Brig Physician" + trim_state = "trim_brigphysician" + department_color = COLOR_SECURITY_RED + subdepartment_color = COLOR_MEDICAL_BLUE + sechud_icon_state = SECHUD_BRIG_PHYSICIAN + minimal_access = list( + ACCESS_BRIG, + ACCESS_BRIG_ENTRANCE, + ACCESS_COURT, + ACCESS_MECH_SECURITY, + ACCESS_MEDICAL, + ACCESS_MINERAL_STOREROOM, + ACCESS_MORGUE, + ACCESS_SECURITY, + ACCESS_WEAPONS, + ) + extra_access = list( + ACCESS_DETECTIVE, + ACCESS_MAINT_TUNNELS, + ACCESS_SURGERY, + ) + template_access = list( + ACCESS_CAPTAIN, + ACCESS_CHANGE_IDS, + ACCESS_HOS, + ) + job = /datum/job/brig_physician diff --git a/monkestation/code/game/objects/effects/landmark.dm b/monkestation/code/game/objects/effects/landmark.dm index ee0bbd5fa0dc..266d1b747262 100644 --- a/monkestation/code/game/objects/effects/landmark.dm +++ b/monkestation/code/game/objects/effects/landmark.dm @@ -129,3 +129,10 @@ /obj/effect/landmark/start/security_assistant name = "Security Assistant" icon_state = "Security Officer" + +//Brig Physician Spawn Location Marker - Dexee, 4/13/24 + +/obj/effect/landmark/start/brig_physician + name = "Brig Physician" + icon = 'monkestation/icons/mob/landmarks.dmi' + icon_state = "Brig Physician" diff --git a/monkestation/code/game/objects/items/caneswords.dm b/monkestation/code/game/objects/items/caneswords.dm index bf240bb682b1..dca8c4e2b7d8 100644 --- a/monkestation/code/game/objects/items/caneswords.dm +++ b/monkestation/code/game/objects/items/caneswords.dm @@ -96,6 +96,7 @@ /obj/item/storage/canesword/civ/Initialize(mapload) . = ..() AddElement(/datum/element/update_icon_updates_onmob, ITEM_SLOT_BELT) + AddElement(/datum/element/manufacturer_examine, COMPANY_ASHENFORGE) atom_storage.max_slots = 1 atom_storage.rustle_sound = FALSE @@ -138,6 +139,7 @@ /obj/item/storage/canesword/CentCom/Initialize(mapload) . = ..() AddElement(/datum/element/update_icon_updates_onmob, ITEM_SLOT_BELT) + AddElement(/datum/element/manufacturer_examine, COMPANY_ASHENFORGE) atom_storage.max_slots = 1 atom_storage.rustle_sound = FALSE @@ -179,6 +181,7 @@ /obj/item/storage/canesword/syndicate/Initialize(mapload) . = ..() AddElement(/datum/element/update_icon_updates_onmob, ITEM_SLOT_BELT) + AddElement(/datum/element/manufacturer_examine, COMPANY_ASHENFORGE) atom_storage.max_slots = 1 atom_storage.rustle_sound = FALSE diff --git a/monkestation/code/game/objects/items/devices/radio/encryptionkey.dm b/monkestation/code/game/objects/items/devices/radio/encryptionkey.dm new file mode 100644 index 000000000000..df453599a12a --- /dev/null +++ b/monkestation/code/game/objects/items/devices/radio/encryptionkey.dm @@ -0,0 +1,6 @@ +/obj/item/encryptionkey/headset_secmed + name = "brig physician radio encryption key" + icon_state = "cypherkey_security" + channels = list(RADIO_CHANNEL_SECURITY = 1, RADIO_CHANNEL_MEDICAL = 1) + greyscale_config = /datum/greyscale_config/encryptionkey_security + greyscale_colors = "#820a16#280b1a" diff --git a/monkestation/code/game/objects/items/devices/radio/headset.dm b/monkestation/code/game/objects/items/devices/radio/headset.dm new file mode 100644 index 000000000000..c266ed70b6b4 --- /dev/null +++ b/monkestation/code/game/objects/items/devices/radio/headset.dm @@ -0,0 +1,6 @@ +/obj/item/radio/headset/headset_secmed + name = "brig physician radio headset" + desc = "This is used by your secure doctor." + icon_state = "sec_headset" + worn_icon_state = "sec_headset" + keyslot = /obj/item/encryptionkey/headset_secmed diff --git a/monkestation/code/game/objects/items/storage/garment.dm b/monkestation/code/game/objects/items/storage/garment.dm new file mode 100644 index 000000000000..e80e5175ae1f --- /dev/null +++ b/monkestation/code/game/objects/items/storage/garment.dm @@ -0,0 +1,13 @@ +/obj/item/storage/bag/garment/brig_physician + name = "brig physician's garment bag" + desc = "A bag for storing extra clothes and shoes. This one belongs to the brig physician." + +/obj/item/storage/bag/garment/brig_physician/PopulateContents() + new /obj/item/clothing/under/rank/security/brig_physician(src) + new /obj/item/clothing/under/rank/security/brig_physician/skirt(src) + new /obj/item/clothing/under/rank/security/scrubs/sec(src) + new /obj/item/clothing/head/utility/surgerycap/sec(src) + new /obj/item/clothing/suit/toggle/labcoat/brig_physician(src) + new /obj/item/clothing/shoes/sneakers/secred(src) + new /obj/item/clothing/gloves/latex/nitrile(src) + diff --git a/monkestation/code/game/objects/structures/crates_lockers/closets/secure/brig_physician.dm b/monkestation/code/game/objects/structures/crates_lockers/closets/secure/brig_physician.dm new file mode 100644 index 000000000000..a2ae5b7beaaf --- /dev/null +++ b/monkestation/code/game/objects/structures/crates_lockers/closets/secure/brig_physician.dm @@ -0,0 +1,17 @@ +/obj/structure/closet/secure_closet/brig_physician + name = "brig physician's locker" + icon = 'monkestation/icons/obj/storage/closet.dmi' + icon_state = "brigphys" + req_access = list(ACCESS_BRIG) + + +/obj/structure/closet/secure_closet/brig_physician/PopulateContents() + ..() + + new /obj/item/flashlight/seclite(src) + new /obj/item/storage/bag/garment/brig_physician(src) + new /obj/item/storage/backpack/brig_physician(src) + new /obj/item/storage/backpack/duffelbag/sec/surgery(src) + new /obj/item/clothing/glasses/hud/health(src) + new /obj/item/healthanalyzer(src) + new /obj/item/defibrillator/loaded(src) diff --git a/monkestation/code/game/objects/structures/tables_racks.dm b/monkestation/code/game/objects/structures/tables_racks.dm index 20ac1c115258..b2d9aa67c20f 100644 --- a/monkestation/code/game/objects/structures/tables_racks.dm +++ b/monkestation/code/game/objects/structures/tables_racks.dm @@ -1,3 +1,7 @@ +/obj/structure/table/optable/tablepush(mob/living/user, mob/living/pushed_mob) + . = ..() + buckle_mob(pushed_mob) + /obj/structure/table/sandstone name = "sandstone table" desc = "Woah! A sandstone TABLE!!" diff --git a/monkestation/code/modules/antagonists/contractor/items/misc.dm b/monkestation/code/modules/antagonists/contractor/items/misc.dm index 13fa368c573d..3e3c4e89a3ee 100644 --- a/monkestation/code/modules/antagonists/contractor/items/misc.dm +++ b/monkestation/code/modules/antagonists/contractor/items/misc.dm @@ -120,14 +120,14 @@ var/closest_turf_range = 255 if(!door_mode) for(var/turf/open/floor as anything in tracked_area_turfs) // Lets go over every turf and check their distances for the closest tile - if(get_dist_euclidian(pinpointer_turf, floor) < closest_turf_range) - closest_turf_range = get_dist_euclidian(pinpointer_turf, floor) + if(get_dist_euclidean(pinpointer_turf, floor) < closest_turf_range) + closest_turf_range = get_dist_euclidean(pinpointer_turf, floor) closest_turf = floor else // if door_mode is TRUE, we instead want to track the nearest airlock instead of all turfs for(var/turf/open/floor as anything in door_turfs) // Lets go over every door and check their distances for the closest tile - if(get_dist_euclidian(pinpointer_turf, floor) < closest_turf_range) - closest_turf_range = get_dist_euclidian(pinpointer_turf, floor) + if(get_dist_euclidean(pinpointer_turf, floor) < closest_turf_range) + closest_turf_range = get_dist_euclidean(pinpointer_turf, floor) closest_turf = floor target = closest_turf diff --git a/monkestation/code/modules/blueshift/benos/beno_types/rouny.dm b/monkestation/code/modules/blueshift/benos/beno_types/rouny.dm index 0d1e4af8ec5e..bd39d44da8f5 100644 --- a/monkestation/code/modules/blueshift/benos/beno_types/rouny.dm +++ b/monkestation/code/modules/blueshift/benos/beno_types/rouny.dm @@ -25,6 +25,10 @@ add_movespeed_modifier(/datum/movespeed_modifier/alien_quick) +/mob/living/carbon/alien/adult/nova/runner/Destroy() + QDEL_NULL(evade_ability) + return ..() + /mob/living/carbon/alien/adult/nova/runner/create_internal_organs() organs += new /obj/item/organ/internal/alien/plasmavessel/small/tiny ..() diff --git a/monkestation/code/modules/blueshift/components/cell_component.dm b/monkestation/code/modules/blueshift/components/cell_component.dm index 9a4522c17d94..eec1cd115e96 100644 --- a/monkestation/code/modules/blueshift/components/cell_component.dm +++ b/monkestation/code/modules/blueshift/components/cell_component.dm @@ -87,8 +87,7 @@ component_cell_out_of_charge/component_cell_removed proc using loc where necessa UnregisterSignal(parent, COMSIG_ATOM_EXAMINE) /datum/component/cell/Destroy(force, silent) - if(on_cell_removed) - on_cell_removed = null + on_cell_removed = null if(inserted_cell) if(!inside_robot) //We really don't want to be deleting the robot's cell. QDEL_NULL(inserted_cell) diff --git a/monkestation/code/modules/blueshift/components/wall_mounted.dm b/monkestation/code/modules/blueshift/components/wall_mounted.dm index 1ed4632c5a65..49032e71db95 100644 --- a/monkestation/code/modules/blueshift/components/wall_mounted.dm +++ b/monkestation/code/modules/blueshift/components/wall_mounted.dm @@ -15,6 +15,10 @@ hanging_wall_turf = target_wall on_drop = on_drop_callback +/datum/component/wall_mounted/Destroy(force, silent) + on_drop = null + return ..() + /datum/component/wall_mounted/RegisterWithParent() ADD_TRAIT(parent, TRAIT_WALLMOUNTED, REF(src)) RegisterSignal(hanging_wall_turf, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) diff --git a/monkestation/code/modules/blueshift/mobs/soulcatcher.dm b/monkestation/code/modules/blueshift/mobs/soulcatcher.dm index 6f5195c12799..d019b18b94cf 100644 --- a/monkestation/code/modules/blueshift/mobs/soulcatcher.dm +++ b/monkestation/code/modules/blueshift/mobs/soulcatcher.dm @@ -124,7 +124,7 @@ datum/saymode/saymode, list/message_mods = list(), ) - message = trim(copytext_char(sanitize(message), 1, MAX_MESSAGE_LEN)) + message = capitalize(trim(copytext_char(sanitize(message), 1, MAX_MESSAGE_LEN))) if(!message || message == "") return diff --git a/monkestation/code/modules/botany/new_seeds/seeds.dm b/monkestation/code/modules/botany/new_seeds/seeds.dm index e1fb666b909e..d54ec1d4d37a 100644 --- a/monkestation/code/modules/botany/new_seeds/seeds.dm +++ b/monkestation/code/modules/botany/new_seeds/seeds.dm @@ -12,7 +12,7 @@ endurance = 50 maturation = 15 production = 5 - yield = 5 + yield = 50 plant_icon_offset = 0 growing_icon = 'goon/icons/obj/hydroponics/plants_crop.dmi' @@ -52,7 +52,7 @@ icon_grow = "TreeCash-G" possible_mutations = list() - genes = list(/datum/plant_gene/trait/repeated_harvest) + genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/seedless) product = /obj/item/stack/spacecash/c10 /obj/item/seeds/tree/steel diff --git a/monkestation/code/modules/cargo/packs/engineering.dm b/monkestation/code/modules/cargo/packs/engineering.dm index 204dc92b3d32..ec20454ac8a9 100644 --- a/monkestation/code/modules/cargo/packs/engineering.dm +++ b/monkestation/code/modules/cargo/packs/engineering.dm @@ -1,3 +1,12 @@ /datum/supply_pack/engineering/shield_sat + name = "Hard-Kill Meteor Protection Satellites" + desc = "Contains a 5 pack of HK-MPS capsules, which can be deployed into a full meteor defense satellite." + special = FALSE access_view = ACCESS_ENGINEERING contains = list(/obj/item/meteor_shield_capsule = 5) + +/datum/supply_pack/engineering/shield_sat_control + name = "Hard-Kill Meteor Protection System Control Board" + desc = "A control system for HK-MPS satellites." + special = FALSE + access_view = ACCESS_ENGINEERING diff --git a/monkestation/code/modules/client/preferences/alt_jobs/titles.dm b/monkestation/code/modules/client/preferences/alt_jobs/titles.dm index 2ad3e7a4f200..80b731f70309 100644 --- a/monkestation/code/modules/client/preferences/alt_jobs/titles.dm +++ b/monkestation/code/modules/client/preferences/alt_jobs/titles.dm @@ -68,12 +68,22 @@ "Rancher", ) +/datum/job/brig_physician + alt_titles = list( + "Jail Doctor", + "Brig Orderly", + "Prison Medic", + "Chief Tickler", + "Navy Corpsman", + ) + /datum/job/captain alt_titles = list( "Captain", "Station Commander", "Commanding Officer", "Site Manager", + "Criminally Underpaid Babysitter", ) /datum/job/cargo_technician diff --git a/monkestation/code/modules/clothing/jobs/brig_physician.dm b/monkestation/code/modules/clothing/jobs/brig_physician.dm new file mode 100644 index 000000000000..5aacbace4da7 --- /dev/null +++ b/monkestation/code/modules/clothing/jobs/brig_physician.dm @@ -0,0 +1,99 @@ +/obj/item/clothing/under/rank/security/brig_physician + desc = "A formerly retired security uniform pattern now brought back for those working the medical profession in the security apparatus." + name = "brig physician's jumpsuit" + icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' + worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' + icon_state = "brigphys" + inhand_icon_state = "gy_suit" + +/obj/item/clothing/under/rank/security/brig_physician/skirt + name = "brig physician's jumpskirt" + desc = "A formerly retired security uniform pattern now brought back for those working the medical profession in the security apparatus." + icon_state = "brigphys_skirt" + icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' + worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' + inhand_icon_state = "gy_suit" + body_parts_covered = CHEST|GROIN|ARMS + dying_key = DYE_REGISTRY_JUMPSKIRT + female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + +/obj/item/clothing/under/rank/security/scrubs/sec + armor_type = /datum/armor/rank_medical + name = "brig physician's security scrubs" + desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in security red." + icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' + worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' + icon_state = "scrubssec" + +/obj/item/clothing/head/utility/surgerycap/sec + name = "security surgical cap" + desc = "A security red medical surgery cap to prevent suspects from grabbing their doctor." + icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' + worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' + icon_state = "surgicalcapsec" + +/obj/item/clothing/under/plasmaman/brig_physician + desc = "A new pattern plasmaman suit for those qualified as a brig physician." + name = "brig physician's envirosuit" + icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' + worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' + icon_state = "brigphys_envirosuit" + +/obj/item/clothing/head/helmet/space/plasmaman/brig_physician + desc = "A new pattern plasmaman helmet for those qualified as a brig physician. This is still EVA rated too!" + name = "brig physician's envirosuit helmet" + icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' + worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' + icon_state = "brigphys_envirohelm" + +/obj/item/clothing/gloves/color/plasmaman/brig_physician + desc = "A new pattern plasmaman glove set to match that drippy security grey suit." + name = "brig physician's envirogloves" + icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' + worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' + icon_state = "brigphysplasma" + greyscale_colors = "#918F8C" + +/obj/item/clothing/suit/toggle/labcoat/brig_physician + name = "brig physician's labcoat" + desc = "A formerly retired labcoat pattern now brought back for those working the medical profession in the security apparatus." + icon_state = "labcoat_brigphys" + icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' + worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' + +/obj/item/storage/backpack/brig_physician + name = "brig physician's backpack" + desc = "You wear this on your back and put items into it." + icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' + worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' + icon_state = "backpack-brigphys" + inhand_icon_state = "backpack-brigphys" + lefthand_file = 'monkestation/icons/mob/inhands/equipment/brigphys_lefthand.dmi' + righthand_file = 'monkestation/icons/mob/inhands/equipment/brigphys_righthand.dmi' + +/obj/item/storage/backpack/satchel/brig_physician + name = "brig physician's satchel" + desc = "You wear this on your back and put items into it." + icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' + worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' + icon_state = "satchel-brigphys" + inhand_icon_state = "satchel-brigphys" + lefthand_file = 'monkestation/icons/mob/inhands/equipment/brigphys_lefthand.dmi' + righthand_file = 'monkestation/icons/mob/inhands/equipment/brigphys_righthand.dmi' + +/obj/item/storage/backpack/duffelbag/brig_physician + name = "brig physician's duffelbag" + desc = "You wear this on your back and put items into it." + icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' + worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' + icon_state = "duffel-brigphys" + inhand_icon_state = "duffel-brigphys" + lefthand_file = 'monkestation/icons/mob/inhands/equipment/brigphys_lefthand.dmi' + righthand_file = 'monkestation/icons/mob/inhands/equipment/brigphys_righthand.dmi' + +/obj/item/clothing/shoes/sneakers/secred + name = "security red sneakers" + desc = "A nice set of sneakers in security red. These even have the custom fabric used by medical white! Sweet!" + armor_type = /datum/armor/sneakers_white + greyscale_colors = "#a52f29#918f8c" diff --git a/monkestation/code/modules/donator/code/datum/loadout.dm b/monkestation/code/modules/donator/code/datum/loadout.dm index 1d35e5a15d50..8f1f8a78e4b7 100644 --- a/monkestation/code/modules/donator/code/datum/loadout.dm +++ b/monkestation/code/modules/donator/code/datum/loadout.dm @@ -469,6 +469,12 @@ donator_only = TRUE requires_purchase = FALSE +/datum/loadout_item/toys/elliethedarksunplush + name = "Ellie plush" + item_path = /obj/item/toy/plush/elliethedarksun + donator_only = TRUE + requires_purchase = FALSE + //ThePooba /datum/loadout_item/mask/poob_mask name = "Yellow gas mask" diff --git a/monkestation/code/modules/donator/code/item/plush.dm b/monkestation/code/modules/donator/code/item/plush.dm index 0447c483f136..e98098c54885 100644 --- a/monkestation/code/modules/donator/code/item/plush.dm +++ b/monkestation/code/modules/donator/code/item/plush.dm @@ -112,3 +112,10 @@ desc = "A plush of a Cowlephant ~Handcrafted lovingly for Raziaar" icon = 'monkestation/code/modules/donator/icons/obj/plushes.dmi' icon_state = "cowlephant" + +/obj/item/toy/plush/elliethedarksun + name = "ellie plush" + desc = "A plush of a crewmember named Ellie! ~Handcrafted lovingly for elliethedarksun (must be an alias for something..)" + icon = 'monkestation/code/modules/donator/icons/obj/plushes.dmi' + icon_state = "elliethedarksun" + squeak_override = list('monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-1.ogg'=1,'monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-2.ogg'=1,'monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-3.ogg'=1) diff --git a/monkestation/code/modules/donator/icons/obj/plushes.dmi b/monkestation/code/modules/donator/icons/obj/plushes.dmi index e1036c599cab..4e2f9c573d8a 100644 Binary files a/monkestation/code/modules/donator/icons/obj/plushes.dmi and b/monkestation/code/modules/donator/icons/obj/plushes.dmi differ diff --git a/monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-1.ogg b/monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-1.ogg new file mode 100644 index 000000000000..aa19b91b8568 Binary files /dev/null and b/monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-1.ogg differ diff --git a/monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-2.ogg b/monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-2.ogg new file mode 100644 index 000000000000..1eef1590c264 Binary files /dev/null and b/monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-2.ogg differ diff --git a/monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-3.ogg b/monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-3.ogg new file mode 100644 index 000000000000..87459e6cbe26 Binary files /dev/null and b/monkestation/code/modules/donator/sounds/elliethedarksunPlushSqueak-3.ogg differ diff --git a/monkestation/code/modules/holomaps/icons/8x8.dmi b/monkestation/code/modules/holomaps/icons/8x8.dmi index ac8687dc1fce..8e98b1dbe56b 100644 Binary files a/monkestation/code/modules/holomaps/icons/8x8.dmi and b/monkestation/code/modules/holomaps/icons/8x8.dmi differ diff --git a/monkestation/code/modules/holomaps/machinery.dm b/monkestation/code/modules/holomaps/machinery.dm index 428df2f60440..46e435c5d4db 100644 --- a/monkestation/code/modules/holomaps/machinery.dm +++ b/monkestation/code/modules/holomaps/machinery.dm @@ -291,6 +291,20 @@ if(length(fire_alarms)) extra_overlays["Fire Alarms"] = list("icon" = image('monkestation/code/modules/holomaps/icons/8x8.dmi', icon_state = "fire_marker"), "markers" = fire_alarms) + if(length(GLOB.meteor_shielded_turfs)) + var/icon/canvas = icon(HOLOMAP_ICON, "blank") + var/z_has_coverage = FALSE + for(var/turf/open/shielded_turf as anything in GLOB.meteor_shielded_turfs) + if(shielded_turf?.z != current_z_level) + continue + var/offset_x = HOLOMAP_CENTER_X + shielded_turf.x + var/offset_y = HOLOMAP_CENTER_Y + shielded_turf.y + var/color = ((offset_x ^ offset_y) % 2 == 0) ? HOLOMAP_AREACOLOR_SHIELD_1 : HOLOMAP_AREACOLOR_SHIELD_2 + canvas.DrawBox(color, offset_x, offset_y) + z_has_coverage = TRUE + if(z_has_coverage) + extra_overlays["Meteor Shield"] = list("icon" = image('monkestation/code/modules/holomaps/icons/8x8.dmi', icon_state = "meteor_shield"), "markers" = list(image(canvas))) + /* var/list/air_alarms = list() for(var/obj/machinery/airalarm/air_alarm in GLOB.machines) diff --git a/monkestation/code/modules/hydroponics/machines/composter.dm b/monkestation/code/modules/hydroponics/machines/composter.dm index 9cb68fa0bddc..c313e24f47dd 100644 --- a/monkestation/code/modules/hydroponics/machines/composter.dm +++ b/monkestation/code/modules/hydroponics/machines/composter.dm @@ -91,7 +91,7 @@ biomatter_added++ qdel(composter) else if(istype(composter, /obj/item/food)) - biomatter_added += 4 + biomatter_added += 5 qdel(composter) else if(istype(composter, /mob/living/carbon) && allow_carbons) var/mob/living/carbon/carbon_target = composter diff --git a/monkestation/code/modules/jobs/job_types/brig_physician.dm b/monkestation/code/modules/jobs/job_types/brig_physician.dm new file mode 100644 index 000000000000..3865969ff26f --- /dev/null +++ b/monkestation/code/modules/jobs/job_types/brig_physician.dm @@ -0,0 +1,71 @@ +/datum/job/brig_physician + title = JOB_BRIG_PHYSICIAN + description = "Stitch up security, prisoners, sometimes the crew." + auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY + department_head = list(JOB_HEAD_OF_SECURITY) + faction = FACTION_STATION + total_positions = 1 + spawn_positions = 1 + supervisors = SUPERVISOR_HOS + exp_granted_type = EXP_TYPE_CREW + config_tag = "BRIG_PHYSICIAN" + + outfit = /datum/outfit/job/brig_physician + plasmaman_outfit = /datum/outfit/plasmaman/security + + paycheck = PAYCHECK_CREW + paycheck_department = ACCOUNT_SEC + + liver_traits = list(TRAIT_MEDICAL_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_BRIG_PHYSICIAN + bounty_types = CIV_JOB_MED + departments_list = list( + /datum/job_department/security, + ) + + family_heirlooms = list(/obj/item/storage/medkit/ancient/heirloom, /obj/item/scalpel, /obj/item/hemostat, /obj/item/circular_saw, /obj/item/retractor, /obj/item/cautery) + + mail_goodies = list( + /obj/item/healthanalyzer/advanced = 15, + /obj/item/scalpel/advanced = 6, + /obj/item/retractor/advanced = 6, + /obj/item/cautery/advanced = 6, + /obj/item/reagent_containers/cup/bottle/formaldehyde = 6, + /obj/effect/spawner/random/medical/organs = 5, + /obj/effect/spawner/random/medical/memeorgans = 1 + ) + rpg_title = "Chirurgeon" + job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + + +/datum/outfit/job/brig_physician + name = "Brig Physician" + jobtype = /datum/job/brig_physician + + id_trim = /datum/id_trim/job/brig_physician + uniform = /obj/item/clothing/under/rank/security/scrubs/sec + suit = /obj/item/clothing/suit/toggle/labcoat/brig_physician + suit_store = /obj/item/flashlight/pen + belt = /obj/item/modular_computer/pda/security + ears = /obj/item/radio/headset/headset_secmed + head = /obj/item/clothing/head/utility/surgerycap/sec + shoes = /obj/item/clothing/shoes/sneakers/secred + l_hand = /obj/item/storage/medkit/surgery + + backpack = /obj/item/storage/backpack/brig_physician + satchel = /obj/item/storage/backpack/satchel/brig_physician + duffelbag = /obj/item/storage/backpack/duffelbag/brig_physician + + box = /obj/item/storage/box/survival/medical + chameleon_extras = /obj/item/gun/syringe + skillchips = list(/obj/item/skillchip/entrails_reader) + implants = list(/obj/item/implant/mindshield) + +/datum/outfit/plasmaman/brig_physician + name = "Brig Physician Plasmaman" + + uniform = /obj/item/clothing/under/plasmaman/brig_physician + gloves = /obj/item/clothing/gloves/color/plasmaman/brig_physician + head = /obj/item/clothing/head/helmet/space/plasmaman/brig_physician + diff --git a/monkestation/code/modules/liquids/liquid_barrier.dm b/monkestation/code/modules/liquids/liquid_barrier.dm new file mode 100644 index 000000000000..d2dd4809be09 --- /dev/null +++ b/monkestation/code/modules/liquids/liquid_barrier.dm @@ -0,0 +1,25 @@ +/obj/structure/liquid_barrier + name = "liquid barrier" + desc = "A complex draining mesh embedded in the flooring that blocks any and all liquids from passing through.\nYou feel like these were installed for a very good reason..." + icon = 'monkestation/icons/obj/structures/drains.dmi' + icon_state = "bigdrain" + plane = FLOOR_PLANE + layer = GAS_SCRUBBER_LAYER + density = FALSE + anchored = TRUE + move_resist = INFINITY + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + +/obj/structure/liquid_barrier/Initialize(mapload) + . = ..() + if(mapload && !isfloorturf(loc)) + log_mapping("[src] mapped onto a non-floor turf at [AREACOORD(src)]!") + var/static/list/loc_connections = list( + COMSIG_TURF_LIQUIDS_CREATION = PROC_REF(on_liquid_creation), + ) + AddElement(/datum/element/connect_loc, loc_connections) + AddElement(/datum/element/give_turf_traits, string_list(list(TRAIT_BLOCK_LIQUID_SPREAD))) + +/obj/structure/liquid_barrier/proc/on_liquid_creation(datum/source) + SIGNAL_HANDLER + return BLOCK_LIQUID_CREATION diff --git a/monkestation/code/modules/liquids/liquid_effect.dm b/monkestation/code/modules/liquids/liquid_effect.dm index 9e1e8324791f..306b44a11739 100644 --- a/monkestation/code/modules/liquids/liquid_effect.dm +++ b/monkestation/code/modules/liquids/liquid_effect.dm @@ -200,7 +200,8 @@ RegisterSignal(my_turf, COMSIG_TURF_MOB_FALL, PROC_REF(mob_fall)) RegisterSignal(my_turf, COMSIG_ATOM_EXAMINE, PROC_REF(examine_turf)) - SEND_SIGNAL(my_turf, COMSIG_TURF_LIQUIDS_CREATION, src) + if(SEND_SIGNAL(my_turf, COMSIG_TURF_LIQUIDS_CREATION, src) & BLOCK_LIQUID_CREATION) + return INITIALIZE_HINT_QDEL if(z) QUEUE_SMOOTH(src) diff --git a/monkestation/code/modules/liquids/liquid_groups.dm b/monkestation/code/modules/liquids/liquid_groups.dm index 93b81a9e5744..aaa3a2f2c5bd 100644 --- a/monkestation/code/modules/liquids/liquid_groups.dm +++ b/monkestation/code/modules/liquids/liquid_groups.dm @@ -895,6 +895,8 @@ GLOBAL_VAR_INIT(liquid_debug_colors, FALSE) /datum/liquid_group/proc/spread_liquid(turf/new_turf, turf/source_turf) if(isclosedturf(new_turf) || !source_turf.atmos_adjacent_turfs) return + if(HAS_TRAIT(new_turf, TRAIT_BLOCK_LIQUID_SPREAD)) + return if(!(new_turf in source_turf.atmos_adjacent_turfs)) //i hate that this is needed return if(!source_turf.atmos_adjacent_turfs[new_turf]) @@ -904,7 +906,7 @@ GLOBAL_VAR_INIT(liquid_debug_colors, FALSE) var/turf/Z_turf_below = GET_TURF_BELOW(new_turf) if(!Z_turf_below) return - if(isspaceturf(Z_turf_below)) + if(isspaceturf(Z_turf_below) || HAS_TRAIT(Z_turf_below, TRAIT_BLOCK_LIQUID_SPREAD)) return FALSE if(QDELETED(Z_turf_below.liquids)) Z_turf_below.liquids = new(Z_turf_below) diff --git a/monkestation/code/modules/liquids/liquid_interaction.dm b/monkestation/code/modules/liquids/liquid_interaction.dm index 0a43b0c9f512..e9b725047a85 100644 --- a/monkestation/code/modules/liquids/liquid_interaction.dm +++ b/monkestation/code/modules/liquids/liquid_interaction.dm @@ -11,6 +11,10 @@ interaction_callback = CALLBACK(parent, on_interaction_callback) +/datum/component/liquids_interaction/Destroy(force, silent) + interaction_callback = null + return ..() + /datum/component/liquids_interaction/RegisterWithParent() RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(AfterAttack)) //The only signal allowing item -> turf interaction diff --git a/monkestation/code/modules/meteor_shield/meteor_shield.dm b/monkestation/code/modules/meteor_shield/meteor_shield.dm new file mode 100644 index 000000000000..2bee0d716a63 --- /dev/null +++ b/monkestation/code/modules/meteor_shield/meteor_shield.dm @@ -0,0 +1,114 @@ +GLOBAL_LIST_EMPTY_TYPED(meteor_shield_sats, /obj/machinery/satellite/meteor_shield) +GLOBAL_VAR_INIT(total_meteors_zapped, 0) + +/obj/machinery/satellite/meteor_shield + name = "meteor defense satellite" + mode = "HK-MPS" + kill_range = 16 + /// Whether the meteor sat checks for line of sight to determine if it can intercept a meteor. + var/check_sight = TRUE + /// The proximity monitor used to detect meteors entering the shield's range. + var/datum/proximity_monitor/advanced/meteor_shield/monitor + /// A counter for how many meteors this specific satellite has zapped. + var/meteors_zapped = 0 + /// A list of "proxy" objects used for multi-z coverage. + var/list/obj/effect/abstract/meteor_shield_proxy/proxies = list() + +/obj/machinery/satellite/meteor_shield/Initialize(mapload) + . = ..() + AddElement(/datum/element/repackable, /obj/item/flatpacked_machine/generic, 5 SECONDS, TRUE, TRUE) + + GLOB.meteor_shield_sats += src + RegisterSignal(src, COMSIG_MOVABLE_SPACEMOVE, PROC_REF(on_space_move)) // so these fuckers don't drift off into space when you're trying to position them + setup_proximity() + setup_proxies() + register_context() + +/obj/machinery/satellite/meteor_shield/Destroy() + GLOB.meteor_shield_sats -= src + proxies = null + QDEL_NULL(monitor) + return ..() + +/obj/machinery/satellite/meteor_shield/examine(mob/user) + . = ..() + . += span_info("It has stopped [meteors_zapped] meteors so far.") + . += span_info("Overall, all meteor defense satellites have stopped a combined [GLOB.total_meteors_zapped] meteors this shift.") + +/obj/machinery/satellite/meteor_shield/proc/on_space_move(datum/source) + SIGNAL_HANDLER + return COMSIG_MOVABLE_STOP_SPACEMOVE + +/obj/machinery/satellite/meteor_shield/vv_edit_var(vname, vval) + . = ..() + if(.) + switch(vname) + if(NAMEOF(src, kill_range)) + monitor?.set_range(kill_range) + for(var/proxy_z in proxies) + var/obj/effect/abstract/meteor_shield_proxy/proxy = proxies[proxy_z] + proxy.monitor.set_range(kill_range) + if(NAMEOF(src, active)) + set_anchored(active) + setup_proximity() + +/obj/machinery/satellite/meteor_shield/add_context(atom/source, list/context, obj/item/held_item, mob/user) + context[SCREENTIP_CONTEXT_LMB] = active ? "Deactivate" : "Activate" + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/satellite/meteor_shield/toggle(mob/user) + . = ..() + if(.) + user.log_message("[active ? "" : "de"]activated [src] at [AREACOORD(src)]", LOG_GAME) + setup_proximity() + +/obj/machinery/satellite/meteor_shield/emag_act(mob/user, obj/item/card/emag/emag_card) + . = ..() + user.log_message("emagged [src] at [AREACOORD(src)]", LOG_GAME) + setup_proximity() + +/obj/machinery/satellite/meteor_shield/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents) + . = ..() + setup_proxies() + +/obj/machinery/satellite/meteor_shield/proc/setup_proximity() + if((obj_flags & EMAGGED) || !active) + if(!QDELETED(monitor)) + QDEL_NULL(monitor) + else + if(QDELETED(monitor)) + monitor = new(src, kill_range) + +/obj/machinery/satellite/meteor_shield/proc/setup_proxies() + for(var/stacked_z in SSmapping.get_connected_levels(get_turf(src))) + setup_proxy_for_z(stacked_z) + +/obj/machinery/satellite/meteor_shield/proc/setup_proxy_for_z(target_z) + if(target_z == z) + return + // don't setup a proxy if there already is one. + if(!QDELETED(proxies["[target_z]"])) + return + var/turf/our_loc = get_turf(src) + var/turf/target_loc = locate(our_loc.x, our_loc.y, target_z) + if(QDELETED(target_loc)) + return + var/obj/effect/abstract/meteor_shield_proxy/new_proxy = new(target_loc, src) + proxies["[target_z]"] = new_proxy + +/obj/machinery/satellite/meteor_shield/piercing + check_sight = FALSE + +/obj/machinery/satellite/meteor_shield/proc/change_meteor_chance(mod = 1) + var/static/list/meteor_event_typecache + if(!meteor_event_typecache) + meteor_event_typecache = typecacheof(list( + /datum/round_event_control/meteor_wave, + /datum/round_event_control/sandstorm, + /datum/round_event_control/space_dust, + /datum/round_event_control/stray_meteor + )) + var/list/all_events = SSevents.control | SSgamemode.control + for(var/datum/round_event_control/event as anything in all_events) + if(is_type_in_typecache(event, meteor_event_typecache)) + event.weight *= mod diff --git a/monkestation/code/modules/meteor_shield/meteor_shield_capsule.dm b/monkestation/code/modules/meteor_shield/meteor_shield_capsule.dm new file mode 100644 index 000000000000..be8c7b317d58 --- /dev/null +++ b/monkestation/code/modules/meteor_shield/meteor_shield_capsule.dm @@ -0,0 +1,10 @@ +/obj/item/meteor_shield_capsule + name = "meteor defense satellite capsule" + desc = "A bluespace capsule which a single unit of meteor defense satellite is compressed within. If you activate this capsule, a meteor shield satellite will pop out. You still need to install these." + icon_state = "capsule" + icon = 'icons/obj/mining.dmi' + w_class = WEIGHT_CLASS_TINY + +/obj/item/meteor_shield_capsule/Initialize(mapload) + . = ..() + AddComponent(/datum/component/deployable, 5 SECONDS, /obj/machinery/satellite/meteor_shield, delete_on_use = TRUE) diff --git a/monkestation/code/modules/meteor_shield/meteor_shield_coverage.dm b/monkestation/code/modules/meteor_shield/meteor_shield_coverage.dm new file mode 100644 index 000000000000..f86bf04c6f70 --- /dev/null +++ b/monkestation/code/modules/meteor_shield/meteor_shield_coverage.dm @@ -0,0 +1,40 @@ +#define TRAIT_METEOR_SHIELD_FIELD_MONITORED "meteor_shield_field_monitored" + +GLOBAL_LIST_EMPTY_TYPED(meteor_shielded_turfs, /turf/open) + +/// Stupid element to handle tracking which turfs are in a meteor sat's range, +/// without messing up in situations like with overlapping ranges. +/datum/element/meteor_shield_coverage + // Detach whenever destroyed, so we can ensure there's no hanging references to the turf in GLOB.meteor_shielded_turfs + element_flags = ELEMENT_DETACH_ON_HOST_DESTROY + /// Signals to attach to all turfs. + var/static/list/attach_signals = list( + SIGNAL_ADDTRAIT(TRAIT_COVERED_BY_METEOR_SHIELD), + SIGNAL_REMOVETRAIT(TRAIT_COVERED_BY_METEOR_SHIELD) + ) + +/datum/element/meteor_shield_coverage/Attach(turf/open/target) + . = ..() + if(!isgroundlessturf(target)) + return ELEMENT_INCOMPATIBLE + // We use a trait to prevent duplicate assignments. + if(!HAS_TRAIT(target, TRAIT_METEOR_SHIELD_FIELD_MONITORED)) + ADD_TRAIT(target, TRAIT_METEOR_SHIELD_FIELD_MONITORED, ELEMENT_TRAIT(type)) + RegisterSignals(target, attach_signals, PROC_REF(update_global_shield_list)) + GLOB.meteor_shielded_turfs += target + +/datum/element/meteor_shield_coverage/Detach(turf/open/target) + REMOVE_TRAIT(target, TRAIT_METEOR_SHIELD_FIELD_MONITORED, ELEMENT_TRAIT(type)) + UnregisterSignal(target, attach_signals) + GLOB.meteor_shielded_turfs -= target + return ..() + +/datum/element/meteor_shield_coverage/proc/update_global_shield_list(turf/open/source) + SIGNAL_HANDLER + if(!isgroundlessturf(source) || !HAS_TRAIT(source, TRAIT_COVERED_BY_METEOR_SHIELD)) + source.RemoveElement(/datum/element/meteor_shield_coverage) + +/proc/get_meteor_sat_coverage() as num + return length(GLOB.meteor_shielded_turfs) + +#undef TRAIT_METEOR_SHIELD_FIELD_MONITORED diff --git a/monkestation/code/modules/meteor_shield/meteor_shield_field.dm b/monkestation/code/modules/meteor_shield/meteor_shield_field.dm new file mode 100644 index 000000000000..60c1cea4650a --- /dev/null +++ b/monkestation/code/modules/meteor_shield/meteor_shield_field.dm @@ -0,0 +1,33 @@ +GLOBAL_LIST_EMPTY_TYPED(meteor_shield_fields, /datum/proximity_monitor/advanced/meteor_shield) + +/// A proximity monitor field that marks openspace turfs within as being covered by a meteor shield. +/datum/proximity_monitor/advanced/meteor_shield + edge_is_a_field = TRUE + var/obj/machinery/satellite/meteor_shield/proxied_host + +/datum/proximity_monitor/advanced/meteor_shield/New(atom/_host, range, _ignore_if_not_on_turf, proxied_host) + GLOB.meteor_shield_fields += src + if(proxied_host) + src.proxied_host = proxied_host + return ..() + +/datum/proximity_monitor/advanced/meteor_shield/Destroy() + GLOB.meteor_shield_fields -= src + proxied_host = null + return ..() + +/datum/proximity_monitor/advanced/meteor_shield/setup_field_turf(turf/open/target) + if(!isgroundlessturf(target)) + return + var/obj/machinery/satellite/meteor_shield/host_sat = proxied_host || host + if(host_sat.check_los(get_turf(host_sat), target)) + ADD_TRAIT(target, TRAIT_COVERED_BY_METEOR_SHIELD, REF(src)) + target.AddElement(/datum/element/meteor_shield_coverage) + +/datum/proximity_monitor/advanced/meteor_shield/cleanup_field_turf(turf/target) + REMOVE_TRAIT(target, TRAIT_COVERED_BY_METEOR_SHIELD, REF(src)) + +/datum/proximity_monitor/advanced/meteor_shield/set_range(range, force_rebuild) + . = ..() + if(.) + recalculate_field(full_recalc = TRUE) diff --git a/monkestation/code/modules/meteor_shield/meteor_shield_proxy.dm b/monkestation/code/modules/meteor_shield/meteor_shield_proxy.dm new file mode 100644 index 000000000000..111913bd58cf --- /dev/null +++ b/monkestation/code/modules/meteor_shield/meteor_shield_proxy.dm @@ -0,0 +1,43 @@ +/obj/effect/abstract/meteor_shield_proxy + invisibility = INVISIBILITY_ABSTRACT + /// The meteor shield sat this is proxying - any HasProximity calls will be forwarded to it. + var/obj/machinery/satellite/meteor_shield/parent + /// Our proximity monitor. + var/datum/proximity_monitor/advanced/meteor_shield/monitor + +/obj/effect/abstract/meteor_shield_proxy/Initialize(mapload, obj/machinery/satellite/meteor_shield/parent) + . = ..() + if(QDELETED(parent)) + return INITIALIZE_HINT_QDEL + src.parent = parent + src.monitor = new(src, parent.kill_range, TRUE, parent) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_deleted)) + RegisterSignal(parent, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(on_parent_z_changed)) + RegisterSignal(parent, COMSIG_QDELETING, PROC_REF(on_parent_moved)) + +/obj/effect/abstract/meteor_shield_proxy/Destroy(force) + QDEL_NULL(monitor) + if(!QDELETED(parent)) + if(parent.proxies["[z]"] == src) + parent.proxies -= "[z]" + UnregisterSignal(parent, list(COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_Z_CHANGED, COMSIG_QDELETING)) + parent = null + return ..() + +/obj/effect/abstract/meteor_shield_proxy/HasProximity(obj/effect/meteor/meteor) + parent.HasProximity(meteor) + +/obj/effect/abstract/meteor_shield_proxy/proc/on_parent_moved() + SIGNAL_HANDLER + var/turf/parent_loc = get_turf(parent) + var/turf/new_loc = locate(parent_loc.x, parent_loc.y, z) + forceMove(new_loc) + +/obj/effect/abstract/meteor_shield_proxy/proc/on_parent_z_changed() + SIGNAL_HANDLER + if(!are_zs_connected(parent, src) || z == parent.z) + qdel(src) + +/obj/effect/abstract/meteor_shield_proxy/proc/on_parent_deleted() + SIGNAL_HANDLER + qdel(src) diff --git a/monkestation/code/modules/meteor_shield/meteor_shield_zap.dm b/monkestation/code/modules/meteor_shield/meteor_shield_zap.dm new file mode 100644 index 000000000000..d20698487642 --- /dev/null +++ b/monkestation/code/modules/meteor_shield/meteor_shield_zap.dm @@ -0,0 +1,46 @@ +/obj/machinery/satellite/meteor_shield/HasProximity(obj/effect/meteor/meteor) + if(!active || !istype(meteor) || QDELING(meteor) || (obj_flags & EMAGGED)) + return + var/turf/our_turf = get_turf(src) + var/turf/meteor_turf = get_turf(meteor) + if(!check_los(our_turf, meteor_turf)) + return + our_turf.Beam(meteor_turf, icon_state = "sat_beam", time = 5) + if(meteor.shield_defense(src)) + new /obj/effect/temp_visual/explosion(meteor_turf) + INVOKE_ASYNC(src, PROC_REF(play_zap_sound), meteor_turf) + SSblackbox.record_feedback("tally", "meteors_zapped", 1, "[meteor.type]") + meteors_zapped++ + GLOB.total_meteors_zapped++ + meteor.make_debris() + qdel(meteor) + +/obj/machinery/satellite/meteor_shield/proc/check_los(turf/source, turf/target) as num + // if something goes fucky wucky, let's just assume line-of-sight by default + . = TRUE + if(!check_sight) + return TRUE + for(var/turf/segment as anything in get_line(source, target)) + if(QDELETED(segment)) + continue + if(isclosedturf(segment) && !istransparentturf(segment)) + return FALSE + +/obj/machinery/satellite/meteor_shield/proc/play_zap_sound(turf/epicenter) + if(QDELETED(epicenter)) + return + var/static/near_distance + if(isnull(near_distance)) + var/list/world_view = getviewsize(world.view) + near_distance = max(world_view[1], world_view[2]) + SSexplosions.shake_the_room( + epicenter, + near_distance, + far_distance = near_distance * 8, + quake_factor = 0, + echo_factor = 0, + creaking = FALSE, + near_sound = sound('sound/weapons/lasercannonfire.ogg'), + far_sound = sound('sound/weapons/marauder.ogg'), + pressure_affected = FALSE + ) diff --git a/monkestation/code/modules/physics/physics_component.dm b/monkestation/code/modules/physics/physics_component.dm index fbd705b92170..fd7b02da5754 100644 --- a/monkestation/code/modules/physics/physics_component.dm +++ b/monkestation/code/modules/physics/physics_component.dm @@ -122,10 +122,10 @@ set_angle(angle) /datum/component/movable_physics/Destroy(force, silent) - . = ..() bounce_callback = null stop_callback = null cached_transform = null + return ..() /datum/component/movable_physics/RegisterWithParent() RegisterSignal(parent, COMSIG_MOVABLE_BUMP, PROC_REF(on_bump)) diff --git a/monkestation/code/modules/ranching/components/aging.dm b/monkestation/code/modules/ranching/components/aging.dm index 505ea914ed0f..1726af06c261 100644 --- a/monkestation/code/modules/ranching/components/aging.dm +++ b/monkestation/code/modules/ranching/components/aging.dm @@ -19,6 +19,10 @@ START_PROCESSING(SSobj, src) +/datum/component/aging/Destroy(force, silent) + death_callback = null + return ..() + /datum/component/aging/RegisterWithParent() . = ..() RegisterSignal(parent, COMSIG_AGE_ADJUSTMENT, PROC_REF(adjust_age)) diff --git a/monkestation/code/modules/ranching/components/happiness_container.dm b/monkestation/code/modules/ranching/components/happiness_container.dm index 350223d910e0..03c307aac72f 100644 --- a/monkestation/code/modules/ranching/components/happiness_container.dm +++ b/monkestation/code/modules/ranching/components/happiness_container.dm @@ -30,8 +30,9 @@ src.unhappy_callbacks = unhappy_callbacks /datum/component/happiness_container/Destroy(force, silent) - . = ..() + unhappy_callbacks = null QDEL_NULL(applied_visual) + return ..() /datum/component/happiness_container/RegisterWithParent() . = ..() diff --git a/monkestation/code/modules/ranching/components/hatching.dm b/monkestation/code/modules/ranching/components/hatching.dm index 56f358c656b9..7884eb41ab47 100644 --- a/monkestation/code/modules/ranching/components/hatching.dm +++ b/monkestation/code/modules/ranching/components/hatching.dm @@ -45,6 +45,10 @@ START_PROCESSING(SSobj, src) +/datum/component/hatching/Destroy(force, silent) + hatch_callback = null + return ..() + /datum/component/hatching/process(seconds_per_tick) if(!COOLDOWN_FINISHED(src, failed_cooldown)) return diff --git a/monkestation/code/modules/ranching/components/shearable.dm b/monkestation/code/modules/ranching/components/shearable.dm index e576509f1b07..2cd0676ae3e7 100644 --- a/monkestation/code/modules/ranching/components/shearable.dm +++ b/monkestation/code/modules/ranching/components/shearable.dm @@ -34,6 +34,11 @@ created_amount = amount src.created = created +/datum/component/shearable/Destroy(force, silent) + regrow = null + post_shear = null + return ..() + /datum/component/shearable/RegisterWithParent() . = ..() RegisterSignal(parent, COMSIG_MOB_SHEARED, PROC_REF(try_shear)) diff --git a/monkestation/code/modules/research/designs/nanite_designs.dm b/monkestation/code/modules/research/designs/nanite_designs.dm index d91e9b32a770..0fc10a60a4b2 100644 --- a/monkestation/code/modules/research/designs/nanite_designs.dm +++ b/monkestation/code/modules/research/designs/nanite_designs.dm @@ -143,6 +143,14 @@ program_type = /datum/nanite_program/regenerative_advanced category = list("Medical Nanites") +/datum/design/nanites/oxygen_rush + name = "Alveolic Deoxidation" + desc = "The nanites deoxidze the carbon dioxide carried within the blood inside of the host's lungs through rapid electrical stimulus. \ + However, this process is extremely dangerous, leaving carbon deposits within the lungs as well as causing severe organ damage." + id = "oxygen_rush_nanites" + program_type = /datum/nanite_program/oxygen_rush + category = list("Medical Nanites") + /datum/design/nanites/temperature name = "Temperature Adjustment" desc = "The nanites adjust the host's internal temperature to an ideal level." diff --git a/monkestation/code/modules/research/nanites/nanite_programs/healing.dm b/monkestation/code/modules/research/nanites/nanite_programs/healing.dm index 21fde9c73837..bfb78f54d0a1 100644 --- a/monkestation/code/modules/research/nanites/nanite_programs/healing.dm +++ b/monkestation/code/modules/research/nanites/nanite_programs/healing.dm @@ -231,3 +231,41 @@ log_game("[C] has been successfully defibrillated by nanites.") else playsound(C, 'sound/machines/defib_failed.ogg', 50, FALSE) + + +//heard you like smoking +/datum/nanite_program/oxygen_rush + name = "Alveolic Deoxidation" + desc = "The nanites deoxidze the carbon dioxide carried within the blood inside of the host's lungs through rapid electrical stimulus. \ + However, this process is extremely dangerous, leaving carbon deposits within the lungs as well as causing severe organ damage." + use_rate = 10 + rogue_types = list(/datum/nanite_program/suffocating) + + COOLDOWN_DECLARE(warning_cooldown) + COOLDOWN_DECLARE(ending_cooldown) + +/datum/nanite_program/oxygen_rush/check_conditions() + var/obj/item/organ/internal/lungs/lungs = host_mob.get_organ_slot(ORGAN_SLOT_LUNGS) + if(!lungs) + return FALSE + return ..() && !(lungs.organ_flags & ORGAN_FAILING) + +/datum/nanite_program/oxygen_rush/active_effect() + host_mob.adjustOxyLoss(-10, TRUE) + host_mob.adjustOrganLoss(ORGAN_SLOT_LUNGS, 4) + var/mob/living/carbon/carbon_host = host_mob + if(prob(8) && istype(carbon_host)) + to_chat(host_mob, span_userdanger("You feel a sudden flood of pain in your chest!")) + carbon_host.vomit(blood = TRUE, harm = FALSE) + +/datum/nanite_program/oxygen_rush/enable_passive_effect() + . = ..() + if(COOLDOWN_FINISHED(src, warning_cooldown)) + to_chat(host_mob, span_warning("You feel a hellish burning in your chest!")) + COOLDOWN_START(src, warning_cooldown, 10 SECONDS) + +/datum/nanite_program/oxygen_rush/disable_passive_effect() + . = ..() + if(COOLDOWN_FINISHED(src, ending_cooldown)) + to_chat(host_mob, span_notice("The fire in your chest subsides.")) + COOLDOWN_START(src, ending_cooldown, 10 SECONDS) diff --git a/monkestation/code/modules/research/techweb/all_nodes.dm b/monkestation/code/modules/research/techweb/all_nodes.dm index 71a2f10f00bd..55ec1b4100db 100644 --- a/monkestation/code/modules/research/techweb/all_nodes.dm +++ b/monkestation/code/modules/research/techweb/all_nodes.dm @@ -133,6 +133,7 @@ "fakedeath_nanites", "purging_plus_nanites", "regenerative_plus_nanites", + "oxygen_rush_nanites", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000, TECHWEB_POINT_TYPE_NANITES = 3000) diff --git a/monkestation/code/modules/slimecore/components/latch_feeding.dm b/monkestation/code/modules/slimecore/components/latch_feeding.dm index 05d393ddc171..c08040a2f59c 100644 --- a/monkestation/code/modules/slimecore/components/latch_feeding.dm +++ b/monkestation/code/modules/slimecore/components/latch_feeding.dm @@ -34,9 +34,9 @@ /datum/component/latch_feeding/Destroy(force, silent) REMOVE_TRAIT(parent, TRAIT_FEEDING, LATCH_TRAIT) - . = ..() target = null check_and_replace = null + return ..() /datum/component/latch_feeding/RegisterWithParent() RegisterSignal(parent, COMSIG_LIVING_SET_BUCKLED, PROC_REF(check_buckled)) diff --git a/monkestation/code/modules/slimecore/machines/ooze_sucker.dm b/monkestation/code/modules/slimecore/machines/ooze_sucker.dm index 61f37dd8e126..204b2e61d097 100644 --- a/monkestation/code/modules/slimecore/machines/ooze_sucker.dm +++ b/monkestation/code/modules/slimecore/machines/ooze_sucker.dm @@ -2,6 +2,8 @@ #define SUCKER_UPGRADE_BALANCER "balancer" #define SUCKER_UPGRADE_CAPACITY "capacity" +GLOBAL_LIST_EMPTY_TYPED(ooze_suckers, /obj/machinery/plumbing/ooze_sucker) + ///this cannablizes floor_pump code but rips specific reagents and and such just does stuff itself so it can be expanded easier in the future /obj/machinery/plumbing/ooze_sucker name = "ooze sucker" @@ -45,6 +47,7 @@ /obj/machinery/plumbing/ooze_sucker/Initialize(mapload, bolt, layer) . = ..() + GLOB.ooze_suckers += src AddComponent(/datum/component/plumbing/simple_supply, bolt, layer) return INITIALIZE_HINT_LATELOAD @@ -52,6 +55,10 @@ . = ..() locate_machinery() +/obj/machinery/plumbing/ooze_sucker/Destroy() + GLOB.ooze_suckers -= src + return ..() + /obj/machinery/plumbing/ooze_sucker/locate_machinery(multitool_connection) if(!mapping_id) return diff --git a/monkestation/code/modules/slimecore/machines/slime_pen_controller.dm b/monkestation/code/modules/slimecore/machines/slime_pen_controller.dm index 274c482a5863..04bd25de1a8a 100644 --- a/monkestation/code/modules/slimecore/machines/slime_pen_controller.dm +++ b/monkestation/code/modules/slimecore/machines/slime_pen_controller.dm @@ -1,3 +1,5 @@ +GLOBAL_LIST_EMPTY_TYPED(slime_pen_controllers, /obj/machinery/slime_pen_controller) + /obj/item/wallframe/slime_pen_controller name = "slime pen management frame" desc = "Used for building slime pen consoles." @@ -21,6 +23,7 @@ /obj/machinery/slime_pen_controller/Initialize(mapload) . = ..() + GLOB.slime_pen_controllers += src register_context() return INITIALIZE_HINT_LATELOAD @@ -28,6 +31,10 @@ . = ..() locate_machinery() +/obj/machinery/slime_pen_controller/Destroy() + GLOB.slime_pen_controllers -= src + return ..() + /obj/machinery/slime_pen_controller/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() diff --git a/monkestation/code/modules/slimecore/slime_traits/_base_trait.dm b/monkestation/code/modules/slimecore/slime_traits/_base_trait.dm index be953b5f8fd0..b5c536132c58 100644 --- a/monkestation/code/modules/slimecore/slime_traits/_base_trait.dm +++ b/monkestation/code/modules/slimecore/slime_traits/_base_trait.dm @@ -25,34 +25,55 @@ host.update_overlays() host.update_appearance() +/datum/slime_trait/proc/apply_overlays(obj/item/source, list/overlays) + SIGNAL_HANDLER + return NONE + /datum/slime_trait/proc/on_remove(mob/living/basic/slime/parent) - return + if(trait_flags & TRAIT_ON_DEATH) + UnregisterSignal(host, COMSIG_LIVING_DEATH) + if(trait_flags & TRAIT_VISUAL) + UnregisterSignal(host, COMSIG_ATOM_UPDATE_OVERLAYS) + host.update_overlays() + host.update_appearance() /datum/slime_trait/proc/on_death() return -/datum/slime_trait/proc/apply_overlays(obj/item/source, list/overlays) - return - - /datum/slime_trait/visual - trait_flags = (TRAIT_VISUAL) - //the visual icon_state of the trait + // The visual icon_state of the trait. var/trait_icon_state - ///the icon path of the trait + /// The icon path of the trait. var/trait_icon + /// The mutable_appearance object that will be created. + var/mutable_appearance/slime_visual +/datum/slime_trait/visual/Destroy() + if(slime_visual) + QDEL_NULL(slime_visual) + return ..() -/datum/slime_trait/visual/apply_overlays(obj/item/source, list/overlays) - if(!trait_icon || !trait_icon_state) +/datum/slime_trait/visual/on_add(mob/living/basic/slime/parent) + . = ..() + if(!host) return + if(trait_icon && trait_icon_state) + slime_visual = mutable_appearance(trait_icon, trait_icon_state, host.layer) + LAZYADD(host.update_overlays_on_z, slime_visual) - var/mutable_appearance/slime_visual = mutable_appearance(trait_icon, trait_icon_state, host.layer, host, host.plane) +/datum/slime_trait/visual/on_remove(mob/living/basic/slime/parent) + . = ..() + if(slime_visual) + LAZYREMOVE(host.update_overlays_on_z, slime_visual) + QDEL_NULL(slime_visual) +/datum/slime_trait/visual/apply_overlays(obj/item/source, list/overlays) + if(!slime_visual) + return + SET_PLANE_EXPLICIT(slime_visual, PLANE_TO_TRUE(host.plane), host) if(!host.overwrite_color) slime_visual.color = host.current_color.slime_color else slime_visual.color = host.overwrite_color - overlays += slime_visual diff --git a/monkestation/code/modules/station_goals/meteor_shield.dm b/monkestation/code/modules/station_goals/meteor_shield.dm deleted file mode 100644 index b302624f958c..000000000000 --- a/monkestation/code/modules/station_goals/meteor_shield.dm +++ /dev/null @@ -1,146 +0,0 @@ -GLOBAL_LIST_EMPTY(meteor_shield_sats) - -/obj/machinery/satellite/meteor_shield - /// Whether the meteor sat checks for line of sight to determine if it can intercept a meteor. - var/check_sight = TRUE - /// The proximity monitor used to detect meteors entering the shield's range. - var/datum/proximity_monitor/meteor_monitor - /// A counter for how many meteors this specific satellite has zapped. - var/meteors_zapped = 0 - -/obj/machinery/satellite/meteor_shield/Initialize(mapload) - . = ..() - AddElement(/datum/element/repackable, /obj/item/flatpacked_machine/generic, 5 SECONDS, TRUE, TRUE) - - GLOB.meteor_shield_sats += src - RegisterSignal(src, COMSIG_MOVABLE_SPACEMOVE, PROC_REF(on_space_move)) // so these fuckers don't drift off into space when you're trying to position them - setup_proximity() - register_context() - -/obj/machinery/satellite/meteor_shield/examine(mob/user) - . = ..() - . += span_info("It has stopped [meteors_zapped] meteors so far.") - -/obj/machinery/satellite/meteor_shield/proc/on_space_move(datum/source) - SIGNAL_HANDLER - return COMSIG_MOVABLE_STOP_SPACEMOVE - -/obj/machinery/satellite/meteor_shield/Destroy() - GLOB.meteor_shield_sats -= src - if(meteor_monitor) - QDEL_NULL(meteor_monitor) - return ..() - -/obj/machinery/satellite/meteor_shield/vv_edit_var(vname, vval) - . = ..() - if(.) - switch(vname) - if(NAMEOF(src, kill_range)) - meteor_monitor?.set_range(kill_range) - if(NAMEOF(src, active)) - setup_proximity() - -/obj/machinery/satellite/meteor_shield/add_context(atom/source, list/context, obj/item/held_item, mob/user) - context[SCREENTIP_CONTEXT_LMB] = active ? "Deactivate" : "Activate" - return CONTEXTUAL_SCREENTIP_SET - -/obj/machinery/satellite/meteor_shield/HasProximity(obj/effect/meteor/meteor) - if(!active || !istype(meteor) || QDELING(meteor) || (obj_flags & EMAGGED)) - return - var/turf/our_turf = get_turf(src) - var/turf/meteor_turf = get_turf(meteor) - if(!check_los(our_turf, meteor_turf)) - return - our_turf.Beam(meteor_turf, icon_state = "sat_beam", time = 5) - if(meteor.shield_defense(src)) - new /obj/effect/temp_visual/explosion(meteor_turf) - INVOKE_ASYNC(src, PROC_REF(play_zap_sound), meteor_turf) - SSblackbox.record_feedback("tally", "meteors_zapped", 1, "[meteor.type]") - meteors_zapped++ - qdel(meteor) - -/obj/machinery/satellite/meteor_shield/proc/check_los(turf/source, turf/target) as num - // if something goes fucky wucky, let's just assume line-of-sight by default - if(!check_sight) - return TRUE - for(var/turf/segment as anything in get_line(source, target)) - if(QDELETED(segment)) - continue - if(isclosedturf(segment) && !istransparentturf(segment)) - return FALSE - return TRUE - -/obj/machinery/satellite/meteor_shield/proc/play_zap_sound(turf/epicenter) - if(QDELETED(epicenter)) - return - var/static/near_distance - if(isnull(near_distance)) - var/list/world_view = getviewsize(world.view) - near_distance = max(world_view[1], world_view[2]) - SSexplosions.shake_the_room( - epicenter, - near_distance, - far_distance = near_distance * 3, - quake_factor = 0, - echo_factor = 0, - creaking = FALSE, - near_sound = sound('sound/weapons/lasercannonfire.ogg'), - far_sound = sound('sound/weapons/marauder.ogg') - ) - -/obj/machinery/satellite/meteor_shield/toggle(user) - . = ..() - setup_proximity() - -/obj/machinery/satellite/meteor_shield/emag_act(mob/user, obj/item/card/emag/emag_card) - . = ..() - setup_proximity() - -/obj/machinery/satellite/meteor_shield/proc/setup_proximity() - if((obj_flags & EMAGGED) || !active) - if(!QDELETED(meteor_monitor)) - QDEL_NULL(meteor_monitor) - else - if(QDELETED(meteor_monitor)) - meteor_monitor = new(src, kill_range) - -/obj/machinery/satellite/meteor_shield/piercing - check_sight = FALSE - -/proc/get_meteor_sat_coverage() as num - var/list/covered_tiles = list() - for(var/obj/machinery/satellite/meteor_shield/sat as anything in GLOB.meteor_shield_sats) - if(QDELETED(sat) || !sat.active || !is_station_level(sat.z) || (sat.obj_flags & EMAGGED)) - continue - if(sat.check_sight) - covered_tiles |= view(sat.kill_range, sat) - else - covered_tiles |= range(sat.kill_range, sat) - return length(covered_tiles) - - -/obj/machinery/satellite/meteor_shield/proc/change_meteor_chance(mod = 1) - var/static/list/meteor_event_typecache - if(!meteor_event_typecache) - meteor_event_typecache = typecacheof(list( - /datum/round_event_control/meteor_wave, - /datum/round_event_control/sandstorm, - /datum/round_event_control/space_dust, - /datum/round_event_control/stray_meteor - )) - var/list/all_events = SSevents.control | SSgamemode.control - for(var/datum/round_event_control/event as anything in all_events) - if(is_type_in_typecache(event, meteor_event_typecache)) - event.weight *= mod - - -/obj/item/meteor_shield_capsule - name = "meteor shield satellite capsule" - desc = "A bluespace capsule which a single unit of meteor shield satellite is compressed within. If you activate this capsule, a meteor shield satellite will pop out. You still need to install these." - icon_state = "capsule" - icon = 'icons/obj/mining.dmi' - w_class = WEIGHT_CLASS_TINY - -/obj/item/meteor_shield_capsule/Initialize(mapload) - . = ..() - AddComponent(/datum/component/deployable, 5 SECONDS, /obj/machinery/satellite/meteor_shield, delete_on_use = TRUE) diff --git a/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm b/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm index cc79e2a2f7fa..700957dff6c6 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm @@ -16,6 +16,7 @@ JOB_PRISONER, JOB_SECURITY_OFFICER, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) enemy_roles = list( JOB_CAPTAIN, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm b/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm index 31fa22fc383b..1bdf4c177a0a 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm @@ -14,6 +14,7 @@ JOB_SECURITY_OFFICER, JOB_SECURITY_ASSISTANT, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) restricted_roles = list( JOB_AI, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/brother.dm b/monkestation/code/modules/storytellers/converted_events/solo/brother.dm index 82decee034ee..c29c3ee7eac3 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/brother.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/brother.dm @@ -15,6 +15,7 @@ JOB_SECURITY_OFFICER, JOB_SECURITY_ASSISTANT, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) restricted_roles = list( JOB_AI, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm b/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm index ec0f4d5cae34..39e9d605a7e4 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm @@ -14,6 +14,7 @@ JOB_SECURITY_OFFICER, JOB_SECURITY_ASSISTANT, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) restricted_roles = list( JOB_AI, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm b/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm index b1e009c05f3c..0ebe10a6fd18 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm @@ -16,6 +16,7 @@ JOB_PRISONER, JOB_SECURITY_OFFICER, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) enemy_roles = list( JOB_CAPTAIN, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm b/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm index d9854eb7394a..dc86d98cb9b9 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm @@ -18,6 +18,7 @@ JOB_RESEARCH_DIRECTOR, JOB_SECURITY_OFFICER, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) base_antags = 3 maximum_antags = 5 diff --git a/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm b/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm index eb7e43577b2e..04905fcedf42 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm @@ -17,6 +17,7 @@ JOB_RESEARCH_DIRECTOR, JOB_SECURITY_OFFICER, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) base_antags = 3 maximum_antags = 4 diff --git a/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm b/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm index 63e495b808c2..726b1a809bbf 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm @@ -15,6 +15,7 @@ JOB_SECURITY_OFFICER, JOB_SECURITY_ASSISTANT, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) restricted_roles = list( JOB_AI, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/malf.dm b/monkestation/code/modules/storytellers/converted_events/solo/malf.dm index 713bd92de057..2bf10fa56d9b 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/malf.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/malf.dm @@ -12,6 +12,7 @@ JOB_SECURITY_OFFICER, JOB_SECURITY_ASSISTANT, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) shared_occurence_type = SHARED_HIGH_THREAT maximum_antags = 1 diff --git a/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm b/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm index be39ec01ca7d..52f7647ae515 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm @@ -18,6 +18,7 @@ JOB_PRISONER, JOB_SECURITY_OFFICER, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) restricted_roles = list( JOB_AI, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm b/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm index a6ca5701b713..f2a5a12a3e14 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm @@ -18,6 +18,7 @@ JOB_RESEARCH_DIRECTOR, JOB_SECURITY_OFFICER, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) base_antags = 3 maximum_antags = 5 diff --git a/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm b/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm index aabee93a82a8..eb8fce9f4aeb 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm @@ -18,6 +18,7 @@ JOB_RESEARCH_DIRECTOR, JOB_SECURITY_OFFICER, JOB_WARDEN, + JOB_BRIG_PHYSICIAN, ) base_antags = 2 enemy_roles = list( diff --git a/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm b/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm index ecc377c9f386..58ed6dd76653 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm @@ -14,6 +14,7 @@ JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_ASSISTANT, + JOB_BRIG_PHYSICIAN, ) restricted_roles = list( JOB_AI, diff --git a/monkestation/icons/mob/clothing/jobs/brig_physician.dmi b/monkestation/icons/mob/clothing/jobs/brig_physician.dmi new file mode 100644 index 000000000000..56be335082d7 Binary files /dev/null and b/monkestation/icons/mob/clothing/jobs/brig_physician.dmi differ diff --git a/monkestation/icons/mob/clothing/species/suit_digi.dmi b/monkestation/icons/mob/clothing/species/suit_digi.dmi index 89b99dbf2306..392e8319d99c 100644 Binary files a/monkestation/icons/mob/clothing/species/suit_digi.dmi and b/monkestation/icons/mob/clothing/species/suit_digi.dmi differ diff --git a/monkestation/icons/mob/inhands/equipment/brigphys_lefthand.dmi b/monkestation/icons/mob/inhands/equipment/brigphys_lefthand.dmi new file mode 100644 index 000000000000..2d51c710748f Binary files /dev/null and b/monkestation/icons/mob/inhands/equipment/brigphys_lefthand.dmi differ diff --git a/monkestation/icons/mob/inhands/equipment/brigphys_righthand.dmi b/monkestation/icons/mob/inhands/equipment/brigphys_righthand.dmi new file mode 100644 index 000000000000..7b4f607810b1 Binary files /dev/null and b/monkestation/icons/mob/inhands/equipment/brigphys_righthand.dmi differ diff --git a/monkestation/icons/mob/landmarks.dmi b/monkestation/icons/mob/landmarks.dmi new file mode 100644 index 000000000000..534d291e79b3 Binary files /dev/null and b/monkestation/icons/mob/landmarks.dmi differ diff --git a/monkestation/icons/mob/species/misc/uniform_digi.dmi b/monkestation/icons/mob/species/misc/uniform_digi.dmi index fe7835409e99..30467bb4ddc0 100644 Binary files a/monkestation/icons/mob/species/misc/uniform_digi.dmi and b/monkestation/icons/mob/species/misc/uniform_digi.dmi differ diff --git a/monkestation/icons/obj/clothing/jobs/brig_physician.dmi b/monkestation/icons/obj/clothing/jobs/brig_physician.dmi new file mode 100644 index 000000000000..2f622cf58741 Binary files /dev/null and b/monkestation/icons/obj/clothing/jobs/brig_physician.dmi differ diff --git a/monkestation/icons/obj/storage/closet.dmi b/monkestation/icons/obj/storage/closet.dmi new file mode 100644 index 000000000000..f57673554e1d Binary files /dev/null and b/monkestation/icons/obj/storage/closet.dmi differ diff --git a/strings/antagonist_flavor/traitor_flavor.json b/strings/antagonist_flavor/traitor_flavor.json index 93da8d01374e..2b0c0e6c7c4e 100644 --- a/strings/antagonist_flavor/traitor_flavor.json +++ b/strings/antagonist_flavor/traitor_flavor.json @@ -111,5 +111,13 @@ "roundend_report": "was a terrorist from Waffle Corporation.", "ui_theme": "syndicate", "uplink": "You have been provided with a standard uplink to accomplish your task." + }, + "The Ashen Forge Member": { + "allies": "The Forge trusts all who are willing to work... but the second a fraction of hostility is up all ties are cut and betrayal is expected.", + "goal": "The Boss still hasn't forgiven Nanotrasen, give 'em hell and show them what we are capable of...", + "introduction": "You are the Ashen Forge Member.", + "roundend_report": "was a Member of The Ashen Forge.", + "ui_theme": "syndicate", + "uplink": "You have been provided with a standard uplink to accomplish your task." } } diff --git a/tgstation.dme b/tgstation.dme index 63de1f62fe27..2cecab20dd89 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5767,6 +5767,7 @@ #include "monkestation\code\datums\elements\area_locked.dm" #include "monkestation\code\datums\elements\uncompressed_storage.dm" #include "monkestation\code\datums\ert\moff_inspectors.dm" +#include "monkestation\code\datums\id_trim\jobs.dm" #include "monkestation\code\datums\keybinding\carbon.dm" #include "monkestation\code\datums\keybinding\communication.dm" #include "monkestation\code\datums\keybinding\living.dm" @@ -5828,6 +5829,8 @@ #include "monkestation\code\game\objects\items\circuitboards\machine_circuitboards.dm" #include "monkestation\code\game\objects\items\devices\compression_kit.dm" #include "monkestation\code\game\objects\items\devices\scanners.dm" +#include "monkestation\code\game\objects\items\devices\radio\encryptionkey.dm" +#include "monkestation\code\game\objects\items\devices\radio\headset.dm" #include "monkestation\code\game\objects\items\devices\scanners\gas_analyzer.dm" #include "monkestation\code\game\objects\items\drugs\cocaine_chem.dm" #include "monkestation\code\game\objects\items\drugs\cocaine_item.dm" @@ -5852,10 +5855,12 @@ #include "monkestation\code\game\objects\items\storage\book.dm" #include "monkestation\code\game\objects\items\storage\boxes.dm" #include "monkestation\code\game\objects\items\storage\crate.dm" +#include "monkestation\code\game\objects\items\storage\garment.dm" #include "monkestation\code\game\objects\items\storage\uplink_kits.dm" #include "monkestation\code\game\objects\structures\tables_racks.dm" #include "monkestation\code\game\objects\structures\beds_chairs\chair.dm" #include "monkestation\code\game\objects\structures\crates_lockers\crates.dm" +#include "monkestation\code\game\objects\structures\crates_lockers\closets\secure\brig_physician.dm" #include "monkestation\code\game\objects\structures\crates_lockers\closets\secure\security.dm" #include "monkestation\code\game\objects\structures\crates_lockers\crates\secure.dm" #include "monkestation\code\game\turfs\open\water.dm" @@ -6571,6 +6576,7 @@ #include "monkestation\code\modules\clothing\head\costume.dm" #include "monkestation\code\modules\clothing\head\hat.dm" #include "monkestation\code\modules\clothing\head\misc.dm" +#include "monkestation\code\modules\clothing\jobs\brig_physician.dm" #include "monkestation\code\modules\clothing\masks\gasmask.dm" #include "monkestation\code\modules\clothing\masks\misc.dm" #include "monkestation\code\modules\clothing\neck\cloaks.dm" @@ -6741,6 +6747,7 @@ #include "monkestation\code\modules\job_xp\milestones\botany_milestones.dm" #include "monkestation\code\modules\job_xp\preferences\base_preferences.dm" #include "monkestation\code\modules\job_xp\preferences\xp_handlers.dm" +#include "monkestation\code\modules\jobs\job_types\brig_physician.dm" #include "monkestation\code\modules\jobs\job_types\candysalesman.dm" #include "monkestation\code\modules\jobs\job_types\chaplain.dm" #include "monkestation\code\modules\jobs\job_types\clown.dm" @@ -6755,6 +6762,7 @@ #include "monkestation\code\modules\library\skill_learning\job_skillchips\shaft_miner.dm" #include "monkestation\code\modules\liquids\drains.dm" #include "monkestation\code\modules\liquids\height_floors.dm" +#include "monkestation\code\modules\liquids\liquid_barrier.dm" #include "monkestation\code\modules\liquids\liquid_controller.dm" #include "monkestation\code\modules\liquids\liquid_effect.dm" #include "monkestation\code\modules\liquids\liquid_groups.dm" @@ -6852,6 +6860,12 @@ #include "monkestation\code\modules\mentor\mentor_pm.dm" #include "monkestation\code\modules\mentor\mentor_say.dm" #include "monkestation\code\modules\mentor\mentor_who.dm" +#include "monkestation\code\modules\meteor_shield\meteor_shield.dm" +#include "monkestation\code\modules\meteor_shield\meteor_shield_capsule.dm" +#include "monkestation\code\modules\meteor_shield\meteor_shield_coverage.dm" +#include "monkestation\code\modules\meteor_shield\meteor_shield_field.dm" +#include "monkestation\code\modules\meteor_shield\meteor_shield_proxy.dm" +#include "monkestation\code\modules\meteor_shield\meteor_shield_zap.dm" #include "monkestation\code\modules\meteors\meteor_dark_matteor.dm" #include "monkestation\code\modules\metrics\metric_subsystem.dm" #include "monkestation\code\modules\metrics\subsystem_analytics\generics.dm" @@ -7404,7 +7418,6 @@ #include "monkestation\code\modules\spells\spell_types\aoe_spell\mind_swap.dm" #include "monkestation\code\modules\spells\spell_types\conjure_item\summon_mjollnir.dm" #include "monkestation\code\modules\spells\spell_types\pointed\smite.dm" -#include "monkestation\code\modules\station_goals\meteor_shield.dm" #include "monkestation\code\modules\store\admin\admin_coin_modification.dm" #include "monkestation\code\modules\store\atm\_atm.dm" #include "monkestation\code\modules\store\pre_round\_pre_round_store.dm" diff --git a/tgui/.prettierignore b/tgui/.prettierignore index 79e703c95440..a91324ebe6e8 100644 --- a/tgui/.prettierignore +++ b/tgui/.prettierignore @@ -6,6 +6,7 @@ /yarn.lock /.pnp.* +.swcrc /docs /public /packages/tgui-polyfill diff --git a/tgui/.prettierrc.yml b/tgui/.prettierrc.yml index 1eebe6098b11..01769692264f 100644 --- a/tgui/.prettierrc.yml +++ b/tgui/.prettierrc.yml @@ -1,15 +1 @@ -arrowParens: always -breakLongMethodChains: true -endOfLine: lf -importFormatting: oneline -jsxBracketSameLine: true -jsxSingleQuote: false -offsetTernaryExpressions: true -printWidth: 80 -proseWrap: preserve -quoteProps: preserve -semi: true singleQuote: true -tabWidth: 2 -trailingComma: es5 -useTabs: false diff --git a/tgui/.yarn/sdks/eslint/package.json b/tgui/.yarn/sdks/eslint/package.json index 744a77321030..b29322a1ffb3 100644 --- a/tgui/.yarn/sdks/eslint/package.json +++ b/tgui/.yarn/sdks/eslint/package.json @@ -2,5 +2,8 @@ "name": "eslint", "version": "7.32.0-sdk", "main": "./lib/api.js", - "type": "commonjs" + "type": "commonjs", + "bin": { + "eslint": "./bin/eslint.js" + } } diff --git a/tgui/.yarn/sdks/prettier/bin/prettier.cjs b/tgui/.yarn/sdks/prettier/bin/prettier.cjs new file mode 100644 index 000000000000..5efad688e739 --- /dev/null +++ b/tgui/.yarn/sdks/prettier/bin/prettier.cjs @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier/bin/prettier.cjs + require(absPnpApiPath).setup(); + } +} + +// Defer to the real prettier/bin/prettier.cjs your application uses +module.exports = absRequire(`prettier/bin/prettier.cjs`); diff --git a/tgui/.yarn/sdks/prettier/index.js b/tgui/.yarn/sdks/prettier/index.cjs similarity index 68% rename from tgui/.yarn/sdks/prettier/index.js rename to tgui/.yarn/sdks/prettier/index.cjs index 81f9bec5fe85..8758e367a725 100644 --- a/tgui/.yarn/sdks/prettier/index.js +++ b/tgui/.yarn/sdks/prettier/index.cjs @@ -11,10 +11,10 @@ const absRequire = createRequire(absPnpApiPath); if (existsSync(absPnpApiPath)) { if (!process.versions.pnp) { - // Setup the environment to be able to require prettier/index.js + // Setup the environment to be able to require prettier require(absPnpApiPath).setup(); } } -// Defer to the real prettier/index.js your application uses -module.exports = absRequire(`prettier/index.js`); +// Defer to the real prettier your application uses +module.exports = absRequire(`prettier`); diff --git a/tgui/.yarn/sdks/prettier/package.json b/tgui/.yarn/sdks/prettier/package.json index 0cbd71ff32d5..c61f5117bacf 100644 --- a/tgui/.yarn/sdks/prettier/package.json +++ b/tgui/.yarn/sdks/prettier/package.json @@ -1,6 +1,7 @@ { "name": "prettier", - "version": "0.19.0-sdk", - "main": "./index.js", - "type": "commonjs" + "version": "3.1.0-sdk", + "main": "./index.cjs", + "type": "commonjs", + "bin": "./bin/prettier.cjs" } diff --git a/tgui/.yarn/sdks/typescript/lib/tsserver.js b/tgui/.yarn/sdks/typescript/lib/tsserver.js index 0fb2ac107978..bbb1e46501b5 100644 --- a/tgui/.yarn/sdks/typescript/lib/tsserver.js +++ b/tgui/.yarn/sdks/typescript/lib/tsserver.js @@ -109,6 +109,8 @@ const moduleWrapper = tsserver => { str = `zip:${str}`; } break; } + } else { + str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`); } } diff --git a/tgui/.yarn/sdks/typescript/lib/tsserverlibrary.js b/tgui/.yarn/sdks/typescript/lib/tsserverlibrary.js index e7033a81782d..a68f028fe197 100644 --- a/tgui/.yarn/sdks/typescript/lib/tsserverlibrary.js +++ b/tgui/.yarn/sdks/typescript/lib/tsserverlibrary.js @@ -109,6 +109,8 @@ const moduleWrapper = tsserver => { str = `zip:${str}`; } break; } + } else { + str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`); } } diff --git a/tgui/.yarn/sdks/typescript/lib/typescript.js b/tgui/.yarn/sdks/typescript/lib/typescript.js index e14fa87beaa4..b5f4db25bee6 100644 --- a/tgui/.yarn/sdks/typescript/lib/typescript.js +++ b/tgui/.yarn/sdks/typescript/lib/typescript.js @@ -11,10 +11,10 @@ const absRequire = createRequire(absPnpApiPath); if (existsSync(absPnpApiPath)) { if (!process.versions.pnp) { - // Setup the environment to be able to require typescript/lib/typescript.js + // Setup the environment to be able to require typescript require(absPnpApiPath).setup(); } } -// Defer to the real typescript/lib/typescript.js your application uses -module.exports = absRequire(`typescript/lib/typescript.js`); +// Defer to the real typescript your application uses +module.exports = absRequire(`typescript`); diff --git a/tgui/.yarn/sdks/typescript/package.json b/tgui/.yarn/sdks/typescript/package.json index 6aac31b18401..656833d45b64 100644 --- a/tgui/.yarn/sdks/typescript/package.json +++ b/tgui/.yarn/sdks/typescript/package.json @@ -2,5 +2,9 @@ "name": "typescript", "version": "4.9.4-sdk", "main": "./lib/typescript.js", - "type": "commonjs" + "type": "commonjs", + "bin": { + "tsc": "./bin/tsc", + "tsserver": "./bin/tsserver" + } } diff --git a/tgui/package.json b/tgui/package.json index b02f77037cd9..109c8b208ea4 100644 --- a/tgui/package.json +++ b/tgui/package.json @@ -12,7 +12,7 @@ "tgui:build": "BROWSERSLIST_IGNORE_OLD_DATA=true webpack", "tgui:dev": "node --experimental-modules packages/tgui-dev-server/index.js", "tgui:lint": "eslint packages --ext .js,.cjs,.ts,.tsx", - "tgui:prettier": "prettierx --check .", + "tgui:prettier": "prettier --check .", "tgui:sonar": "eslint packages --ext .js,.cjs,.ts,.tsx -c .eslintrc-sonar.yml", "tgui:test": "jest --watch", "tgui:test-simple": "CI=true jest --color", @@ -38,6 +38,7 @@ "babel-plugin-transform-remove-console": "^6.9.4", "common": "workspace:*", "css-loader": "^5.2.7", + "esbuild-loader": "^4.0.2", "eslint": "^7.32.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-radar": "^0.2.1", @@ -49,11 +50,10 @@ "jest-circus": "^27.0.6", "jsdom": "^16.7.0", "mini-css-extract-plugin": "^1.6.2", - "prettier": "npm:prettierx@0.19.0", + "prettier": "^3.1.0", "sass": "^1.37.5", "sass-loader": "^11.1.1", "style-loader": "^2.0.0", - "terser-webpack-plugin": "^5.1.4", "typescript": "^4.9.4", "url-loader": "^4.1.1", "webpack": "^5.75.0", diff --git a/tgui/packages/common/collections.ts b/tgui/packages/common/collections.ts index a005da7aa165..5bfcee858844 100644 --- a/tgui/packages/common/collections.ts +++ b/tgui/packages/common/collections.ts @@ -32,12 +32,12 @@ export const filter = }; type MapFunction = { - (iterateeFn: (value: T, index: number, collection: T[]) => U): ( - collection: T[] - ) => U[]; + ( + iterateeFn: (value: T, index: number, collection: T[]) => U, + ): (collection: T[]) => U[]; ( - iterateeFn: (value: T, index: K, collection: Record) => U + iterateeFn: (value: T, index: K, collection: Record) => U, ): (collection: Record) => U[]; }; @@ -75,7 +75,7 @@ export const map: MapFunction = */ export const filterMap = ( collection: T[], - iterateeFn: (value: T) => U | undefined + iterateeFn: (value: T) => U | undefined, ): U[] => { const finalCollection: U[] = []; @@ -261,7 +261,7 @@ export const zipWith = const binarySearch = ( getKey: (value: T) => U, collection: readonly T[], - inserting: T + inserting: T, ): number => { if (collection.length === 0) { return 0; diff --git a/tgui/packages/common/color.ts b/tgui/packages/common/color.ts index 724fa209d030..86d9b8d37314 100644 --- a/tgui/packages/common/color.ts +++ b/tgui/packages/common/color.ts @@ -30,7 +30,7 @@ export class Color { this.r - this.r * percent, this.g - this.g * percent, this.b - this.b * percent, - this.a + this.a, ); } @@ -47,7 +47,7 @@ export class Color { return new Color( parseInt(hex.substr(1, 2), 16), parseInt(hex.substr(3, 2), 16), - parseInt(hex.substr(5, 2), 16) + parseInt(hex.substr(5, 2), 16), ); } @@ -59,7 +59,7 @@ export class Color { (c2.r - c1.r) * n + c1.r, (c2.g - c1.g) * n + c1.g, (c2.b - c1.b) * n + c1.b, - (c2.a - c1.a) * n + c1.a + (c2.a - c1.a) * n + c1.a, ); } @@ -102,7 +102,7 @@ export class Color { const round = ( number: number, digits = 0, - base = Math.pow(10, digits) + base = Math.pow(10, digits), ): number => { return Math.round(base * number) / base; }; @@ -222,7 +222,7 @@ export const hsvaToHsla = ({ h, s, v, a }: HsvaColor): HslaColor => { s: round( hh > 0 && hh < 200 ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 - : 0 + : 0, ), l: round(hh / 2), a: round(a, 2), @@ -386,7 +386,7 @@ export const luminance = (rgb: RgbColor): number => { export const contrast = ( foreground: RgbColor, - background: RgbColor + background: RgbColor, ): number => { const foreground_luminance = luminance(foreground); const background_luminance = luminance(background); diff --git a/tgui/packages/common/redux.test.ts b/tgui/packages/common/redux.test.ts index af4e5d4e73eb..0a29a92e0cec 100644 --- a/tgui/packages/common/redux.test.ts +++ b/tgui/packages/common/redux.test.ts @@ -1,4 +1,11 @@ -import { Action, Reducer, applyMiddleware, combineReducers, createAction, createStore } from './redux'; +import { + Action, + Reducer, + applyMiddleware, + combineReducers, + createAction, + createStore, +} from './redux'; // Dummy Reducer const counterReducer: Reducer> = (state = 0, action) => { @@ -31,7 +38,7 @@ describe('Redux implementation tests', () => { test('createStore with applyMiddleware works', () => { const store = createStore( counterReducer, - applyMiddleware(loggingMiddleware) + applyMiddleware(loggingMiddleware), ); expect(store.getState()).toBe(0); }); diff --git a/tgui/packages/common/redux.ts b/tgui/packages/common/redux.ts index 1635853c6b4f..cb262894e6d3 100644 --- a/tgui/packages/common/redux.ts +++ b/tgui/packages/common/redux.ts @@ -6,7 +6,7 @@ export type Reducer = ( state: State | undefined, - action: ActionType + action: ActionType, ) => State; export type Store = { @@ -21,7 +21,7 @@ type MiddlewareAPI = { }; export type Middleware = ( - storeApi: MiddlewareAPI + storeApi: MiddlewareAPI, ) => (next: Dispatch) => Dispatch; export type Action = { @@ -33,7 +33,7 @@ export type AnyAction = Action & { }; export type Dispatch = ( - action: ActionType + action: ActionType, ) => void; type StoreEnhancer = (createStoreFunction: Function) => Function; @@ -48,7 +48,7 @@ type PreparedAction = { */ export const createStore = ( reducer: Reducer, - enhancer?: StoreEnhancer + enhancer?: StoreEnhancer, ): Store => { // Apply a store enhancer (applyMiddleware is one of them). if (enhancer) { @@ -90,14 +90,14 @@ export const applyMiddleware = ( ...middlewares: Middleware[] ): StoreEnhancer => { return ( - createStoreFunction: (reducer: Reducer, enhancer?: StoreEnhancer) => Store + createStoreFunction: (reducer: Reducer, enhancer?: StoreEnhancer) => Store, ) => { return (reducer, ...args): Store => { const store = createStoreFunction(reducer, ...args); let dispatch: Dispatch = () => { throw new Error( - 'Dispatching while constructing your middleware is not allowed.' + 'Dispatching while constructing your middleware is not allowed.', ); }; @@ -109,7 +109,7 @@ export const applyMiddleware = ( const chain = middlewares.map((middleware) => middleware(storeApi)); dispatch = chain.reduceRight( (next, middleware) => middleware(next), - store.dispatch + store.dispatch, ); return { @@ -129,7 +129,7 @@ export const applyMiddleware = ( * is also more flexible than the redux counterpart. */ export const combineReducers = ( - reducersObj: Record + reducersObj: Record, ): Reducer => { const keys = Object.keys(reducersObj); @@ -170,7 +170,7 @@ export const combineReducers = ( */ export const createAction = ( type: TAction, - prepare?: (...args: any[]) => PreparedAction + prepare?: (...args: any[]) => PreparedAction, ) => { const actionCreator = (...args: any[]) => { let action: Action & PreparedAction = { type }; @@ -206,7 +206,7 @@ export const useDispatch = (context: { export const useSelector = ( context: { store: Store }, - selector: (state: State) => Selected + selector: (state: State) => Selected, ): Selected => { if (!context) { return {} as Selected; diff --git a/tgui/packages/common/timer.ts b/tgui/packages/common/timer.ts index 49d36484200b..1fc3e11fd30e 100644 --- a/tgui/packages/common/timer.ts +++ b/tgui/packages/common/timer.ts @@ -13,7 +13,7 @@ export const debounce = any>( fn: F, time: number, - immediate = false + immediate = false, ): ((...args: Parameters) => void) => { let timeout: ReturnType | null; return (...args: Parameters) => { @@ -38,7 +38,7 @@ export const debounce = any>( */ export const throttle = any>( fn: F, - time: number + time: number, ): ((...args: Parameters) => void) => { let previouslyRun: number | null, queuedToRun: ReturnType | null; @@ -53,7 +53,7 @@ export const throttle = any>( } else { queuedToRun = setTimeout( () => invokeFn(...args), - time - (now - (previouslyRun ?? 0)) + time - (now - (previouslyRun ?? 0)), ); } }; diff --git a/tgui/packages/tgui-bench/lib/benchmark.d.ts b/tgui/packages/tgui-bench/lib/benchmark.d.ts index 7f3310005f77..3eac568d4184 100644 --- a/tgui/packages/tgui-bench/lib/benchmark.d.ts +++ b/tgui/packages/tgui-bench/lib/benchmark.d.ts @@ -27,7 +27,7 @@ declare class Benchmark { static reduce( arr: T[], callback: (accumulator: K, value: T) => K, - thisArg?: any + thisArg?: any, ): K; static options: Benchmark.Options; diff --git a/tgui/packages/tgui-bench/tests/DisposalUnit.test.tsx b/tgui/packages/tgui-bench/tests/DisposalUnit.test.tsx index 1ae610e2e2e1..3ce1f6957184 100644 --- a/tgui/packages/tgui-bench/tests/DisposalUnit.test.tsx +++ b/tgui/packages/tgui-bench/tests/DisposalUnit.test.tsx @@ -10,7 +10,7 @@ const renderUi = createRenderer((dataJson: string) => { store.dispatch( backendUpdate({ data: Byond.parseJson(dataJson), - }) + }), ); return ( diff --git a/tgui/packages/tgui-bench/tests/Tooltip.test.tsx b/tgui/packages/tgui-bench/tests/Tooltip.test.tsx index fa5df9582d8f..1445a61599b1 100644 --- a/tgui/packages/tgui-bench/tests/Tooltip.test.tsx +++ b/tgui/packages/tgui-bench/tests/Tooltip.test.tsx @@ -13,7 +13,7 @@ export const ListOfTooltips = () => { Tooltip #{i} - + , ); } diff --git a/tgui/packages/tgui-dev-server/dreamseeker.js b/tgui/packages/tgui-dev-server/dreamseeker.js index c81f51e35c55..af4bfe891cb1 100644 --- a/tgui/packages/tgui-dev-server/dreamseeker.js +++ b/tgui/packages/tgui-dev-server/dreamseeker.js @@ -6,8 +6,8 @@ import { exec } from 'child_process'; import { promisify } from 'util'; -import { createLogger } from './logging'; -import { require } from './require'; +import { createLogger } from './logging.js'; +import { require } from './require.js'; const axios = require('axios'); const logger = createLogger('dreamseeker'); @@ -30,7 +30,7 @@ export class DreamSeeker { + '=' + encodeURIComponent(params[key])) .join('&'); logger.log( - `topic call at ${this.client.defaults.baseURL + '/dummy?' + query}` + `topic call at ${this.client.defaults.baseURL + '/dummy?' + query}`, ); return this.client.get('/dummy?' + query); } diff --git a/tgui/packages/tgui-dev-server/index.js b/tgui/packages/tgui-dev-server/index.js index 460b15d99ad9..199e93d83632 100644 --- a/tgui/packages/tgui-dev-server/index.js +++ b/tgui/packages/tgui-dev-server/index.js @@ -4,8 +4,8 @@ * @license MIT */ -import { createCompiler } from './webpack'; -import { reloadByondCache } from './reloader'; +import { createCompiler } from './webpack.js'; +import { reloadByondCache } from './reloader.js'; const noHot = process.argv.includes('--no-hot'); const noTmp = process.argv.includes('--no-tmp'); diff --git a/tgui/packages/tgui-dev-server/link/retrace.js b/tgui/packages/tgui-dev-server/link/retrace.js index 949835c70023..b7f4d4eacfb9 100644 --- a/tgui/packages/tgui-dev-server/link/retrace.js +++ b/tgui/packages/tgui-dev-server/link/retrace.js @@ -6,9 +6,9 @@ import fs from 'fs'; import { basename } from 'path'; -import { createLogger } from '../logging'; -import { require } from '../require'; -import { resolveGlob } from '../util'; +import { createLogger } from '../logging.js'; +import { require } from '../require.js'; +import { resolveGlob } from '../util.js'; const SourceMap = require('source-map'); const { parse: parseStackTrace } = require('stacktrace-parser'); @@ -30,7 +30,7 @@ export const loadSourceMaps = async (bundleDir) => { try { const file = basename(path).replace('.map', ''); const consumer = await new SourceMapConsumer( - JSON.parse(fs.readFileSync(path, 'utf8')) + JSON.parse(fs.readFileSync(path, 'utf8')), ); sourceMaps.push({ file, consumer }); } catch (err) { diff --git a/tgui/packages/tgui-dev-server/link/server.js b/tgui/packages/tgui-dev-server/link/server.js index f0c0d153d3a1..60cc78c1bd9e 100644 --- a/tgui/packages/tgui-dev-server/link/server.js +++ b/tgui/packages/tgui-dev-server/link/server.js @@ -6,9 +6,9 @@ import http from 'http'; import { inspect } from 'util'; -import { createLogger, directLog } from '../logging'; -import { require } from '../require'; -import { loadSourceMaps, retrace } from './retrace'; +import { createLogger, directLog } from '../logging.js'; +import { require } from '../require.js'; +import { loadSourceMaps, retrace } from './retrace.js'; const WebSocket = require('ws'); diff --git a/tgui/packages/tgui-dev-server/reloader.js b/tgui/packages/tgui-dev-server/reloader.js index aed9a7dcd778..427d1aecbd6d 100644 --- a/tgui/packages/tgui-dev-server/reloader.js +++ b/tgui/packages/tgui-dev-server/reloader.js @@ -7,10 +7,10 @@ import fs from 'fs'; import os from 'os'; import { basename } from 'path'; -import { DreamSeeker } from './dreamseeker'; -import { createLogger } from './logging'; -import { resolveGlob, resolvePath } from './util'; -import { regQuery } from './winreg'; +import { DreamSeeker } from './dreamseeker.js'; +import { createLogger } from './logging.js'; +import { resolveGlob, resolvePath } from './util.js'; +import { regQuery } from './winreg.js'; const logger = createLogger('reloader'); @@ -83,19 +83,19 @@ export const reloadByondCache = async (bundleDir) => { } // Get dreamseeker instances const pids = cacheDirs.map((cacheDir) => - parseInt(cacheDir.split('/cache/tmp').pop(), 10) + parseInt(cacheDir.split('/cache/tmp').pop(), 10), ); const dssPromise = DreamSeeker.getInstancesByPids(pids); // Copy assets const assets = await resolveGlob( bundleDir, - './*.+(bundle|chunk|hot-update).*' + './*.+(bundle|chunk|hot-update).*', ); for (let cacheDir of cacheDirs) { // Clear garbage const garbage = await resolveGlob( cacheDir, - './*.+(bundle|chunk|hot-update).*' + './*.+(bundle|chunk|hot-update).*', ); try { // Plant a dummy browser window file, we'll be using this to avoid world topic. For byond 515. diff --git a/tgui/packages/tgui-dev-server/util.js b/tgui/packages/tgui-dev-server/util.js index 6d0e884af095..54d806a629df 100644 --- a/tgui/packages/tgui-dev-server/util.js +++ b/tgui/packages/tgui-dev-server/util.js @@ -6,7 +6,7 @@ import fs from 'fs'; import path from 'path'; -import { require } from './require'; +import { require } from './require.js'; const globPkg = require('glob'); diff --git a/tgui/packages/tgui-dev-server/webpack.js b/tgui/packages/tgui-dev-server/webpack.js index 1c16345a8925..139610b79ce9 100644 --- a/tgui/packages/tgui-dev-server/webpack.js +++ b/tgui/packages/tgui-dev-server/webpack.js @@ -7,10 +7,10 @@ import fs from 'fs'; import { createRequire } from 'module'; import { dirname } from 'path'; -import { loadSourceMaps, setupLink } from './link/server'; -import { createLogger } from './logging'; -import { reloadByondCache } from './reloader'; -import { resolveGlob } from './util'; +import { loadSourceMaps, setupLink } from './link/server.js'; +import { createLogger } from './logging.js'; +import { reloadByondCache } from './reloader.js'; +import { resolveGlob } from './util.js'; const logger = createLogger('webpack'); diff --git a/tgui/packages/tgui-dev-server/winreg.js b/tgui/packages/tgui-dev-server/winreg.js index d7408b5c3902..b61fddc1a255 100644 --- a/tgui/packages/tgui-dev-server/winreg.js +++ b/tgui/packages/tgui-dev-server/winreg.js @@ -8,7 +8,7 @@ import { exec } from 'child_process'; import { promisify } from 'util'; -import { createLogger } from './logging'; +import { createLogger } from './logging.js'; const logger = createLogger('winreg'); diff --git a/tgui/packages/tgui-panel/Panel.jsx b/tgui/packages/tgui-panel/Panel.jsx index 83150ab6ef13..18976735de9e 100644 --- a/tgui/packages/tgui-panel/Panel.jsx +++ b/tgui/packages/tgui-panel/Panel.jsx @@ -116,7 +116,8 @@ const HoboPanel = (props, context) => { 'z-index': 1000, }} selected={settings.visible} - onClick={() => settings.toggle()}> + onClick={() => settings.toggle()} + > Settings {(settings.visible && ) || ( diff --git a/tgui/packages/tgui-panel/audio/NowPlayingWidget.jsx b/tgui/packages/tgui-panel/audio/NowPlayingWidget.jsx index 4495c2a8a1f2..af5380a7a5b3 100644 --- a/tgui/packages/tgui-panel/audio/NowPlayingWidget.jsx +++ b/tgui/packages/tgui-panel/audio/NowPlayingWidget.jsx @@ -22,10 +22,10 @@ export const NowPlayingWidget = (props, context) => { duration = audio.meta?.duration, date = !isNaN(upload_date) ? upload_date?.substring(0, 4) + - '-' + - upload_date?.substring(4, 6) + - '-' + - upload_date?.substring(6, 8) + '-' + + upload_date?.substring(4, 6) + + '-' + + upload_date?.substring(6, 8) : upload_date; return ( @@ -36,9 +36,10 @@ export const NowPlayingWidget = (props, context) => { grow={1} style={{ 'white-space': 'nowrap', - 'overflow': 'hidden', + overflow: 'hidden', 'text-overflow': 'ellipsis', - }}> + }} + > {
diff --git a/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx b/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx index 8a8384835043..e4e7ea0dfdef 100644 --- a/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx +++ b/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx @@ -5,7 +5,14 @@ */ import { useDispatch, useSelector } from 'common/redux'; -import { Button, Collapsible, Divider, Input, Section, Stack } from 'tgui/components'; +import { + Button, + Collapsible, + Divider, + Input, + Section, + Stack, +} from 'tgui/components'; import { removeChatPage, toggleAcceptedType, updateChatPage } from './actions'; import { MESSAGE_TYPES } from './constants'; import { selectCurrentChatPage } from './selectors'; @@ -25,7 +32,7 @@ export const ChatPageSettings = (props, context) => { updateChatPage({ pageId: page.id, name: value, - }) + }), ) } /> @@ -41,7 +48,7 @@ export const ChatPageSettings = (props, context) => { updateChatPage({ pageId: page.id, hideUnreadCount: !page.hideUnreadCount, - }) + }), ) } /> @@ -55,7 +62,7 @@ export const ChatPageSettings = (props, context) => { dispatch( removeChatPage({ pageId: page.id, - }) + }), ) } /> @@ -64,7 +71,7 @@ export const ChatPageSettings = (props, context) => {
{MESSAGE_TYPES.filter( - (typeDef) => !typeDef.important && !typeDef.admin + (typeDef) => !typeDef.important && !typeDef.admin, ).map((typeDef) => ( { toggleAcceptedType({ pageId: page.id, type: typeDef.type, - }) + }), ) - }> + } + > {typeDef.name} ))} {MESSAGE_TYPES.filter( - (typeDef) => !typeDef.important && typeDef.admin + (typeDef) => !typeDef.important && typeDef.admin, ).map((typeDef) => ( { toggleAcceptedType({ pageId: page.id, type: typeDef.type, - }) + }), ) - }> + } + > {typeDef.name} ))} diff --git a/tgui/packages/tgui-panel/chat/ChatPanel.jsx b/tgui/packages/tgui-panel/chat/ChatPanel.jsx index 3132a66ce7f8..1577e933fb4c 100644 --- a/tgui/packages/tgui-panel/chat/ChatPanel.jsx +++ b/tgui/packages/tgui-panel/chat/ChatPanel.jsx @@ -26,7 +26,7 @@ export class ChatPanel extends Component { chatRenderer.mount(this.ref.current); chatRenderer.events.on( 'scrollTrackingChanged', - this.handleScrollTrackingChange + this.handleScrollTrackingChange, ); this.componentDidUpdate(); } @@ -34,7 +34,7 @@ export class ChatPanel extends Component { componentWillUnmount() { chatRenderer.events.off( 'scrollTrackingChanged', - this.handleScrollTrackingChange + this.handleScrollTrackingChange, ); } @@ -46,7 +46,7 @@ export class ChatPanel extends Component { !prevProps || shallowDiffers(this.props, prevProps); if (shouldUpdateStyle) { chatRenderer.assignStyle({ - 'width': '100%', + width: '100%', 'white-space': 'pre-wrap', 'font-size': this.props.fontSize, 'line-height': this.props.lineHeight, @@ -63,7 +63,8 @@ export class ChatPanel extends Component { )} diff --git a/tgui/packages/tgui-panel/chat/ChatTabs.jsx b/tgui/packages/tgui-panel/chat/ChatTabs.jsx index e20e6c278915..b9d012163b65 100644 --- a/tgui/packages/tgui-panel/chat/ChatTabs.jsx +++ b/tgui/packages/tgui-panel/chat/ChatTabs.jsx @@ -15,11 +15,12 @@ const UnreadCountWidget = ({ value }) => ( style={{ 'font-size': '0.7em', 'border-radius': '0.25em', - 'width': '1.7em', + width: '1.7em', 'line-height': '1.55em', 'background-color': 'crimson', - 'color': '#fff', - }}> + color: '#fff', + }} + > {Math.min(value, 99)} ); @@ -46,9 +47,10 @@ export const ChatTabs = (props, context) => { dispatch( changeChatPage({ pageId: page.id, - }) + }), ) - }> + } + > {page.name} ))} diff --git a/tgui/packages/tgui-panel/chat/middleware.js b/tgui/packages/tgui-panel/chat/middleware.js index 05fb6041ce08..5d2997a9a04f 100644 --- a/tgui/packages/tgui-panel/chat/middleware.js +++ b/tgui/packages/tgui-panel/chat/middleware.js @@ -6,9 +6,26 @@ import DOMPurify from 'dompurify'; import { storage } from 'common/storage'; -import { loadSettings, updateSettings, addHighlightSetting, removeHighlightSetting, updateHighlightSetting } from '../settings/actions'; +import { + loadSettings, + updateSettings, + addHighlightSetting, + removeHighlightSetting, + updateHighlightSetting, +} from '../settings/actions'; import { selectSettings } from '../settings/selectors'; -import { addChatPage, changeChatPage, changeScrollTracking, clearChat, loadChat, rebuildChat, removeChatPage, saveChatToDisk, toggleAcceptedType, updateMessageCount } from './actions'; +import { + addChatPage, + changeChatPage, + changeScrollTracking, + clearChat, + loadChat, + rebuildChat, + removeChatPage, + saveChatToDisk, + toggleAcceptedType, + updateMessageCount, +} from './actions'; import { MAX_PERSISTED_MESSAGES, MESSAGE_SAVE_INTERVAL } from './constants'; import { createMessage, serializeMessage } from './model'; import { chatRenderer } from './renderer'; @@ -21,7 +38,7 @@ const saveChatToStorage = async (store) => { const state = selectChat(store.getState()); const fromIndex = Math.max( 0, - chatRenderer.messages.length - MAX_PERSISTED_MESSAGES + chatRenderer.messages.length - MAX_PERSISTED_MESSAGES, ); const messages = chatRenderer.messages .slice(fromIndex) @@ -159,7 +176,7 @@ export const chatMiddleware = (store) => { const settings = selectSettings(store.getState()); chatRenderer.setHighlight( settings.highlightSettings, - settings.highlightSettingById + settings.highlightSettingById, ); return; diff --git a/tgui/packages/tgui-panel/chat/reducer.js b/tgui/packages/tgui-panel/chat/reducer.js index b727a7c1babc..e75fbd06e43e 100644 --- a/tgui/packages/tgui-panel/chat/reducer.js +++ b/tgui/packages/tgui-panel/chat/reducer.js @@ -4,7 +4,16 @@ * @license MIT */ -import { addChatPage, changeChatPage, loadChat, removeChatPage, toggleAcceptedType, updateChatPage, updateMessageCount, changeScrollTracking } from './actions'; +import { + addChatPage, + changeChatPage, + loadChat, + removeChatPage, + toggleAcceptedType, + updateChatPage, + updateMessageCount, + changeScrollTracking, +} from './actions'; import { canPageAcceptType, createMainPage } from './model'; const mainPage = createMainPage(); diff --git a/tgui/packages/tgui-panel/chat/renderer.jsx b/tgui/packages/tgui-panel/chat/renderer.jsx index e8fb0970cf15..958fd4c7c461 100644 --- a/tgui/packages/tgui-panel/chat/renderer.jsx +++ b/tgui/packages/tgui-panel/chat/renderer.jsx @@ -7,7 +7,19 @@ import { EventEmitter } from 'common/events'; import { classes } from 'common/react'; import { createLogger } from 'tgui/logging'; -import { COMBINE_MAX_MESSAGES, COMBINE_MAX_TIME_WINDOW, IMAGE_RETRY_DELAY, IMAGE_RETRY_LIMIT, IMAGE_RETRY_MESSAGE_AGE, MAX_PERSISTED_MESSAGES, MAX_VISIBLE_MESSAGES, MESSAGE_PRUNE_INTERVAL, MESSAGE_TYPES, MESSAGE_TYPE_INTERNAL, MESSAGE_TYPE_UNKNOWN } from './constants'; +import { + COMBINE_MAX_MESSAGES, + COMBINE_MAX_TIME_WINDOW, + IMAGE_RETRY_DELAY, + IMAGE_RETRY_LIMIT, + IMAGE_RETRY_MESSAGE_AGE, + MAX_PERSISTED_MESSAGES, + MAX_VISIBLE_MESSAGES, + MESSAGE_PRUNE_INTERVAL, + MESSAGE_TYPES, + MESSAGE_TYPE_INTERNAL, + MESSAGE_TYPE_UNKNOWN, +} from './constants'; import { render } from 'inferno'; import { canPageAcceptType, createMessage, isSameMessage } from './model'; import { highlightNode, linkifyNode } from './replaceInTextNode'; @@ -27,8 +39,8 @@ export const TGUI_CHAT_COMPONENTS = { // List of injectable attibute names mapped to their proper prop // We need this because attibutes don't support lowercase names export const TGUI_CHAT_ATTRIBUTES_TO_PROPS = { - 'position': 'position', - 'content': 'content', + position: 'position', + content: 'content', }; const findNearestScrollableParent = (startingNode) => { @@ -205,7 +217,7 @@ class ChatRenderer { // Must be alphanumeric (with some punctuation) allowedRegex.test(str) && // Reset lastIndex so it does not mess up the next word - ((allowedRegex.lastIndex = 0) || true) + ((allowedRegex.lastIndex = 0) || true), ); let highlightWords; let highlightRegex; @@ -397,7 +409,7 @@ class ChatRenderer { , - childNode + childNode, ); /* eslint-enable react/no-danger */ } @@ -411,7 +423,7 @@ class ChatRenderer { node, parser.highlightRegex, parser.highlightWords, - (text) => createHighlightNode(text, parser.highlightColor) + (text) => createHighlightNode(text, parser.highlightColor), ); if (highlighted && parser.highlightWholeMessage) { node.className += ' ChatMessage--highlighted'; @@ -508,7 +520,7 @@ class ChatRenderer { { const fromIndex = Math.max( 0, - this.messages.length - MAX_PERSISTED_MESSAGES + this.messages.length - MAX_PERSISTED_MESSAGES, ); if (fromIndex > 0) { this.messages = this.messages.slice(fromIndex); @@ -524,7 +536,7 @@ class ChatRenderer { // Make a copy of messages const fromIndex = Math.max( 0, - this.messages.length - MAX_PERSISTED_MESSAGES + this.messages.length - MAX_PERSISTED_MESSAGES, ); const messages = this.messages.slice(fromIndex); // Remove existing nodes @@ -559,7 +571,7 @@ class ChatRenderer { } // Remove pruned messages from the message array this.messages = this.messages.filter( - (message) => message.node !== 'pruned' + (message) => message.node !== 'pruned', ); logger.log(`Cleared chat`); } diff --git a/tgui/packages/tgui-panel/chat/replaceInTextNode.js b/tgui/packages/tgui-panel/chat/replaceInTextNode.js index 8e616ea26cda..dabd3095448e 100644 --- a/tgui/packages/tgui-panel/chat/replaceInTextNode.js +++ b/tgui/packages/tgui-panel/chat/replaceInTextNode.js @@ -149,7 +149,7 @@ export const highlightNode = ( node, regex, words, - createNode = createHighlightNode + createNode = createHighlightNode, ) => { if (!createNode) { createNode = createHighlightNode; diff --git a/tgui/packages/tgui-panel/index.jsx b/tgui/packages/tgui-panel/index.jsx index 336d46031c4f..95559291ee2d 100644 --- a/tgui/packages/tgui-panel/index.jsx +++ b/tgui/packages/tgui-panel/index.jsx @@ -84,14 +84,14 @@ const setupApp = () => { Byond.winset('browseroutput', { 'is-visible': true, 'is-disabled': false, - 'pos': '0x0', - 'size': '0x0', + pos: '0x0', + size: '0x0', }); // Resize the panel to match the non-browser output Byond.winget('output').then((output) => { Byond.winset('browseroutput', { - 'size': output.size, + size: output.size, }); }); diff --git a/tgui/packages/tgui-panel/ping/reducer.js b/tgui/packages/tgui-panel/ping/reducer.js index b1e3d679cbcc..49b9522c06fc 100644 --- a/tgui/packages/tgui-panel/ping/reducer.js +++ b/tgui/packages/tgui-panel/ping/reducer.js @@ -6,7 +6,11 @@ import { clamp01, scale } from 'common/math'; import { pingFail, pingSuccess } from './actions'; -import { PING_MAX_FAILS, PING_ROUNDTRIP_BEST, PING_ROUNDTRIP_WORST } from './constants'; +import { + PING_MAX_FAILS, + PING_ROUNDTRIP_BEST, + PING_ROUNDTRIP_WORST, +} from './constants'; export const pingReducer = (state = {}, action) => { const { type, payload } = action; @@ -28,7 +32,7 @@ export const pingReducer = (state = {}, action) => { if (type === pingFail.type) { const { failCount = 0 } = state; const networkQuality = clamp01( - state.networkQuality - failCount / PING_MAX_FAILS + state.networkQuality - failCount / PING_MAX_FAILS, ); const nextState = { ...state, diff --git a/tgui/packages/tgui-panel/reconnect.tsx b/tgui/packages/tgui-panel/reconnect.tsx index ecfd76716925..6d3e6d9759e2 100644 --- a/tgui/packages/tgui-panel/reconnect.tsx +++ b/tgui/packages/tgui-panel/reconnect.tsx @@ -21,7 +21,8 @@ export const ReconnectButton = () => { color="white" onClick={() => { Byond.command('.reconnect'); - }}> + }} + > Reconnect diff --git a/tgui/packages/tgui-panel/settings/SettingsPanel.jsx b/tgui/packages/tgui-panel/settings/SettingsPanel.jsx index 7850e4a7e498..0a9791c33de3 100644 --- a/tgui/packages/tgui-panel/settings/SettingsPanel.jsx +++ b/tgui/packages/tgui-panel/settings/SettingsPanel.jsx @@ -8,13 +8,37 @@ import { toFixed } from 'common/math'; import { capitalize } from 'common/string'; import { useLocalState } from 'tgui/backend'; import { useDispatch, useSelector } from 'common/redux'; -import { Box, Button, Collapsible, ColorBox, Divider, Stack, Input, LabeledList, NumberInput, Section, Tabs, TextArea } from 'tgui/components'; +import { + Box, + Button, + Collapsible, + ColorBox, + Divider, + Stack, + Input, + LabeledList, + NumberInput, + Section, + Tabs, + TextArea, +} from 'tgui/components'; import { ChatPageSettings } from '../chat'; import { clearChat, rebuildChat, saveChatToDisk } from '../chat/actions'; import { THEMES } from '../themes'; -import { changeSettingsTab, updateSettings, addHighlightSetting, removeHighlightSetting, updateHighlightSetting } from './actions'; +import { + changeSettingsTab, + updateSettings, + addHighlightSetting, + removeHighlightSetting, + updateHighlightSetting, +} from './actions'; import { SETTINGS_TABS, FONTS, MAX_HIGHLIGHT_SETTINGS } from './constants'; -import { selectActiveTab, selectSettings, selectHighlightSettings, selectHighlightSettingById } from './selectors'; +import { + selectActiveTab, + selectSettings, + selectHighlightSettings, + selectHighlightSettingById, +} from './selectors'; export const SettingsPanel = (props, context) => { const activeTab = useSelector(context, selectActiveTab); @@ -32,9 +56,10 @@ export const SettingsPanel = (props, context) => { dispatch( changeSettingsTab({ tabId: tab.id, - }) + }), ) - }> + } + > {tab.name} ))} @@ -53,7 +78,7 @@ export const SettingsPanel = (props, context) => { export const SettingsGeneral = (props, context) => { const { theme, fontFamily, fontSize, lineHeight } = useSelector( context, - selectSettings + selectSettings, ); const dispatch = useDispatch(context); const [freeFont, setFreeFont] = useLocalState(context, 'freeFont', false); @@ -71,7 +96,7 @@ export const SettingsGeneral = (props, context) => { dispatch( updateSettings({ theme: THEME, - }) + }), ) } /> @@ -92,7 +117,8 @@ export const SettingsGeneral = (props, context) => { setFreeFont(!freeFont); }} /> - }> + } + > {FONTS.map((FONT) => ( @@ -108,7 +122,8 @@ const NewscasterChannelCreation = (props) => { act('setChannelDesc', { channeldesc: desc, }) - }> + } + > Channel Description @@ -180,7 +195,8 @@ const NewscasterCommentCreation = (props) => { act('setCommentBody', { commenttext: comment, }) - }> + } + > Channel Name @@ -437,7 +453,8 @@ const NewscasterChannelSelector = (props) => { key={activeWanted.index} icon={activeWanted.active ? 'skull-crossbones' : null} textColor={activeWanted.active ? 'red' : 'grey'} - onClick={() => act('toggleWanted')}> + onClick={() => act('toggleWanted')} + > Wanted Issue ))} @@ -454,7 +471,8 @@ const NewscasterChannelSelector = (props) => { act('setChannel', { channel: channel.ID, }) - }> + } + > {channel.name} ))} @@ -464,7 +482,8 @@ const NewscasterChannelSelector = (props) => { mr={1} textColor="white" color="Green" - onClick={() => act('startCreateChannel')}> + onClick={() => act('startCreateChannel')} + > Create Channel [+] @@ -480,7 +499,7 @@ const processedText = (value) => { smartypants: true, smartLists: true, baseUrl: 'thisshouldbreakhttp', - }) + }), ), }; return textHtml; @@ -508,7 +527,7 @@ const NewscasterChannelMessages = (props) => { ); } const visibleMessages = messages.filter( - (message) => message.ID !== viewing_channel + (message) => message.ID !== viewing_channel, ); return (
@@ -572,7 +591,8 @@ const NewscasterChannelMessages = (props) => { } /> - }> + } + >
{message.censored_message ? (
diff --git a/tgui/packages/tgui/interfaces/NifPanel.jsx b/tgui/packages/tgui/interfaces/NifPanel.jsx index 97fa230aa4d4..260f04186d36 100644 --- a/tgui/packages/tgui/interfaces/NifPanel.jsx +++ b/tgui/packages/tgui/interfaces/NifPanel.jsx @@ -1,5 +1,18 @@ import { useBackend, useLocalState } from '../backend'; -import { BlockQuote, Box, Button, Collapsible, Dropdown, Flex, Icon, Input, LabeledList, ProgressBar, Section, Table } from '../components'; +import { + BlockQuote, + Box, + Button, + Collapsible, + Dropdown, + Flex, + Icon, + Input, + LabeledList, + ProgressBar, + Section, + Table, +} from '../components'; import { TableCell, TableRow } from '../components/Table'; import { Window } from '../layouts'; @@ -20,7 +33,8 @@ export const NifPanel = (props) => { width={500} height={400} resizable - theme={current_theme}> + theme={current_theme} + >
{ selected={settingsOpen} onClick={() => setSettingsOpen(!settingsOpen)} /> - }> + } + > {(settingsOpen && ) || } {(!settingsOpen && (
+ right + > {(loaded_nifsofts.length && ( {loaded_nifsofts.map((nifsoft) => ( @@ -61,7 +77,8 @@ export const NifPanel = (props) => { }) } /> - }> + } + > @@ -73,8 +90,8 @@ export const NifPanel = (props) => { {nifsoft.activation_cost === 0 ? ' No activation cost' : ' ' + - (nifsoft.activation_cost / max_power) * 100 + - '% per activation'} + (nifsoft.activation_cost / max_power) * 100 + + '% per activation'} @@ -64,7 +74,8 @@ export const NifSoulPoem = (props) => { diff --git a/tgui/packages/tgui/interfaces/NoticeBoard.tsx b/tgui/packages/tgui/interfaces/NoticeBoard.tsx index 6514e4517e76..e39a07067f81 100644 --- a/tgui/packages/tgui/interfaces/NoticeBoard.tsx +++ b/tgui/packages/tgui/interfaces/NoticeBoard.tsx @@ -27,7 +27,8 @@ export const NoticeBoard = (props) => { key={item.ref} color="black" backgroundColor="white" - style={{ padding: '2px 2px 0 2px' }}> + style={{ padding: '2px 2px 0 2px' }} + > {item.name} diff --git a/tgui/packages/tgui/interfaces/NtnetRelay.tsx b/tgui/packages/tgui/interfaces/NtnetRelay.tsx index 9acb8ec1526c..6fd070d7bb8f 100644 --- a/tgui/packages/tgui/interfaces/NtnetRelay.tsx +++ b/tgui/packages/tgui/interfaces/NtnetRelay.tsx @@ -1,6 +1,12 @@ import { BooleanLike } from 'common/react'; import { useBackend } from '../backend'; -import { Box, Button, ProgressBar, Section, AnimatedNumber } from '../components'; +import { + Box, + Button, + ProgressBar, + Section, + AnimatedNumber, +} from '../components'; import { Window } from '../layouts'; type Data = { @@ -33,12 +39,14 @@ export const NtnetRelay = (props) => { content={enabled ? 'ENABLED' : 'DISABLED'} onClick={() => act('toggle')} /> - }> + } + > {!dos_crashed ? ( + maxValue={dos_capacity} + > GQ {' / '} {dos_capacity} GQ diff --git a/tgui/packages/tgui/interfaces/NtosArcade.jsx b/tgui/packages/tgui/interfaces/NtosArcade.jsx index e31da8a7346c..b8c9aa05109e 100644 --- a/tgui/packages/tgui/interfaces/NtosArcade.jsx +++ b/tgui/packages/tgui/interfaces/NtosArcade.jsx @@ -1,6 +1,14 @@ import { resolveAsset } from '../assets'; import { useBackend } from '../backend'; -import { AnimatedNumber, Box, Button, Grid, LabeledList, ProgressBar, Section } from '../components'; +import { + AnimatedNumber, + Box, + Button, + Grid, + LabeledList, + ProgressBar, + Section, +} from '../components'; import { NtosWindow } from '../layouts'; export const NtosArcade = (props) => { @@ -24,7 +32,8 @@ export const NtosArcade = (props) => { good: [20, 31], average: [10, 20], bad: [-Infinity, 10], - }}> + }} + > {data.PlayerHitpoints}HP @@ -37,7 +46,8 @@ export const NtosArcade = (props) => { purple: [11, Infinity], violet: [3, 11], bad: [-Infinity, 3], - }}> + }} + > {data.PlayerMP}MP @@ -46,7 +56,8 @@ export const NtosArcade = (props) => {
+ } + > {data.Status}
@@ -59,7 +70,8 @@ export const NtosArcade = (props) => { good: [30, Infinity], average: [5, 30], bad: [-Infinity, 5], - }}> + }} + > HP diff --git a/tgui/packages/tgui/interfaces/NtosCard.jsx b/tgui/packages/tgui/interfaces/NtosCard.jsx index fb12f51fedb2..a81f74722e65 100644 --- a/tgui/packages/tgui/interfaces/NtosCard.jsx +++ b/tgui/packages/tgui/interfaces/NtosCard.jsx @@ -1,5 +1,13 @@ import { useBackend } from '../backend'; -import { Box, Button, Dropdown, Input, NumberInput, Section, Stack } from '../components'; +import { + Box, + Button, + Dropdown, + Input, + NumberInput, + Section, + Stack, +} from '../components'; import { NtosWindow } from '../layouts'; import { AccessList } from './common/AccessList'; @@ -49,7 +57,8 @@ export const NtosCardContent = (props) => { } tooltipPosition="left" /> - }> + } + > )} @@ -121,7 +130,8 @@ const IdCardPage = (props) => { }} /> - }> + } + >
diff --git a/tgui/packages/tgui/interfaces/NtosCyborgRemoteMonitor.jsx b/tgui/packages/tgui/interfaces/NtosCyborgRemoteMonitor.jsx index b9e47051dc89..24962f2c3bb0 100644 --- a/tgui/packages/tgui/interfaces/NtosCyborgRemoteMonitor.jsx +++ b/tgui/packages/tgui/interfaces/NtosCyborgRemoteMonitor.jsx @@ -1,5 +1,14 @@ import { useBackend, useSharedState } from '../backend'; -import { Box, Button, LabeledList, NoticeBox, ProgressBar, Section, Stack, Tabs } from '../components'; +import { + Box, + Button, + LabeledList, + NoticeBox, + ProgressBar, + Section, + Stack, + Tabs, +} from '../components'; import { NtosWindow } from '../layouts'; export const NtosCyborgRemoteMonitor = (props) => { @@ -47,14 +56,16 @@ export const NtosCyborgRemoteMonitorContent = (props) => { icon="robot" lineHeight="23px" selected={tab_main === 1} - onClick={() => setTab_main(1)}> + onClick={() => setTab_main(1)} + > Cyborgs setTab_main(2)}> + onClick={() => setTab_main(2)} + > Stored Log File @@ -84,7 +95,8 @@ export const NtosCyborgRemoteMonitorContent = (props) => { }) } /> - }> + } + > { : cyborg.locked_down ? 'average' : 'good' - }> + } + > {cyborg.status ? 'Not Responding' : cyborg.locked_down @@ -112,7 +125,8 @@ export const NtosCyborgRemoteMonitorContent = (props) => { : cyborg.integ <= 75 ? 'average' : 'good' - }> + } + > {cyborg.integ === 0 ? 'Hard Fault' : cyborg.integ <= 25 @@ -130,7 +144,8 @@ export const NtosCyborgRemoteMonitorContent = (props) => { : cyborg.charge <= 70 ? 'average' : 'good' - }> + } + > {typeof cyborg.charge === 'number' ? cyborg.charge + '%' : 'Not Found'} diff --git a/tgui/packages/tgui/interfaces/NtosEmojipedia.jsx b/tgui/packages/tgui/interfaces/NtosEmojipedia.jsx index b39672e9cb4d..8a2402f59ff5 100644 --- a/tgui/packages/tgui/interfaces/NtosEmojipedia.jsx +++ b/tgui/packages/tgui/interfaces/NtosEmojipedia.jsx @@ -10,8 +10,8 @@ export const NtosEmojipedia = (props) => { let filtered_emoji_list = filter ? emoji_list.filter((emoji) => { - return emoji.name.toLowerCase().includes(filter.toLowerCase()); - }) + return emoji.name.toLowerCase().includes(filter.toLowerCase()); + }) : emoji_list; if (filtered_emoji_list.length === 0) { filtered_emoji_list = emoji_list; @@ -37,7 +37,8 @@ export const NtosEmojipedia = (props) => { icon="circle-question" /> - }> + } + > {filtered_emoji_list.map((emoji) => ( { document.body.removeChild(input); resolve(); }); - }}> + }} + > {emoji.name} ))} diff --git a/tgui/packages/tgui/interfaces/NtosGasAnalyzer.tsx b/tgui/packages/tgui/interfaces/NtosGasAnalyzer.tsx index 7fa700b9c1e4..caf3836e0184 100644 --- a/tgui/packages/tgui/interfaces/NtosGasAnalyzer.tsx +++ b/tgui/packages/tgui/interfaces/NtosGasAnalyzer.tsx @@ -26,7 +26,8 @@ export const NtosGasAnalyzer = (props) => { ? 'Right-click on objects while holding the tablet to scan them. Right-click on the tablet to scan the current location.' : "The app will update it's gas mixture reading automatically." } - tooltipPosition="bottom"> + tooltipPosition="bottom" + > {atmozphereMode === 'click' ? 'Scanning tapped objects. Click to switch.' : 'Scanning current location. Click to switch.'} diff --git a/tgui/packages/tgui/interfaces/NtosMain.jsx b/tgui/packages/tgui/interfaces/NtosMain.jsx index 894172db8762..6e5cf91128da 100644 --- a/tgui/packages/tgui/interfaces/NtosMain.jsx +++ b/tgui/packages/tgui/interfaces/NtosMain.jsx @@ -17,7 +17,7 @@ export const NtosMain = (props) => { pai, } = data; const filtered_programs = programs.filter( - (program) => program.header_program + (program) => program.header_program, ); return ( { 'NtOS Main Menu' } width={400} - height={500}> + height={500} + > {Boolean( removable_media.length || - programs.some((program) => program.header_program) + programs.some((program) => program.header_program), ) && (
@@ -99,22 +100,25 @@ export const NtosMain = (props) => { /> )} - }> + } + >
ID Name:{' '} {show_imprint ? login.IDName + - ' ' + - (proposed_login.IDName ? '(' + proposed_login.IDName + ')' : '') + ' ' + + (proposed_login.IDName + ? '(' + proposed_login.IDName + ')' + : '') : proposed_login.IDName ?? ''} Assignment:{' '} {show_imprint ? login.IDJob + - ' ' + - (proposed_login.IDJob ? '(' + proposed_login.IDJob + ')' : '') + ' ' + + (proposed_login.IDJob ? '(' + proposed_login.IDJob + ')' : '') : proposed_login.IDJob ?? ''}
@@ -166,7 +170,7 @@ const ProgramsTable = (props) => { const { programs = [] } = data; // add the program filename to this list to have it excluded from the main menu program list table const filtered_programs = programs.filter( - (program) => !program.header_program + (program) => !program.header_program, ); return ( diff --git a/tgui/packages/tgui/interfaces/NtosMessenger.jsx b/tgui/packages/tgui/interfaces/NtosMessenger.jsx index 6d3e5e029382..e4d586a9998a 100644 --- a/tgui/packages/tgui/interfaces/NtosMessenger.jsx +++ b/tgui/packages/tgui/interfaces/NtosMessenger.jsx @@ -1,6 +1,14 @@ import { useBackend, useLocalState } from '../backend'; import { createSearch } from 'common/string'; -import { Box, Button, Dimmer, Icon, Section, Stack, Input } from '../components'; +import { + Box, + Button, + Dimmer, + Icon, + Section, + Stack, + Input, +} from '../components'; import { NtosWindow } from '../layouts'; const NoIDDimmer = (props) => { @@ -54,7 +62,7 @@ const ContactsScreen = (props) => { const [searchUser, setSearchUser] = useLocalState('searchUser', ''); const search = createSearch( searchUser, - (messengers) => messengers.name + messengers.job + (messengers) => messengers.name + messengers.job, ); let users = searchUser.length > 0 ? data.messengers.filter(search) : messengers; @@ -163,7 +171,8 @@ const ContactsScreen = (props) => { job: messenger.job, ref: messenger.ref, }) - }> + } + > {messenger.name} ({messenger.job}) ))} diff --git a/tgui/packages/tgui/interfaces/NtosNetChat.jsx b/tgui/packages/tgui/interfaces/NtosNetChat.jsx index 171398ab6a2f..aab73f826a10 100644 --- a/tgui/packages/tgui/interfaces/NtosNetChat.jsx +++ b/tgui/packages/tgui/interfaces/NtosNetChat.jsx @@ -1,5 +1,13 @@ import { useBackend } from '../backend'; -import { Box, Button, Dimmer, Icon, Input, Section, Stack } from '../components'; +import { + Box, + Button, + Dimmer, + Icon, + Input, + Section, + Stack, +} from '../components'; import { NtosWindow } from '../layouts'; // byond defines for the program state @@ -195,7 +203,8 @@ export const NtosNetChat = (props) => { + color={client_color(client)} + > {client.name} {client !== this_client && ( diff --git a/tgui/packages/tgui/interfaces/NtosNetDownloader.jsx b/tgui/packages/tgui/interfaces/NtosNetDownloader.jsx index df7d87cef56d..9dc1d1414d15 100644 --- a/tgui/packages/tgui/interfaces/NtosNetDownloader.jsx +++ b/tgui/packages/tgui/interfaces/NtosNetDownloader.jsx @@ -1,6 +1,16 @@ import { scale, toFixed } from 'common/math'; import { useBackend, useLocalState } from '../backend'; -import { Box, Button, Stack, Icon, LabeledList, NoticeBox, ProgressBar, Section, Tabs } from '../components'; +import { + Box, + Button, + Stack, + Icon, + LabeledList, + NoticeBox, + ProgressBar, + Section, + Tabs, +} from '../components'; import { flow } from 'common/fp'; import { filter, sortBy } from 'common/collections'; import { NtosWindow } from '../layouts'; @@ -22,11 +32,11 @@ export const NtosNetDownloader = (props) => { } = data; const all_categories = ['All'].concat(categories); const downloadpercentage = toFixed( - scale(downloadcompletion, 0, downloadsize) * 100 + scale(downloadcompletion, 0, downloadsize) * 100, ); const [selectedCategory, setSelectedCategory] = useLocalState( 'category', - all_categories[0] + all_categories[0], ); const items = flow([ // This filters the list to only contain programs with category @@ -39,7 +49,7 @@ export const NtosNetDownloader = (props) => { // This sorts all programs in the lists by name and compatibility sortBy( (program) => -program.compatible, - (program) => program.filedesc + (program) => program.filedesc, ), ])(programs); const disk_free_space = downloading @@ -78,11 +88,13 @@ export const NtosNetDownloader = (props) => { tooltip={`${downloadname}.prg downloaded`} /> )) - }> + } + > + maxValue={disk_size} + > {`${disk_free_space} GQ free of ${disk_size} GQ`} @@ -97,7 +109,8 @@ export const NtosNetDownloader = (props) => { setSelectedCategory(category)}> + onClick={() => setSelectedCategory(category)} + > {category} ))} @@ -138,7 +151,8 @@ const Program = (props) => { width="48px" textAlign="right" color="label" - nowrap> + nowrap + > {program.size} GQ diff --git a/tgui/packages/tgui/interfaces/NtosNetMonitor.jsx b/tgui/packages/tgui/interfaces/NtosNetMonitor.jsx index 3da75dba3fa0..2e9463ddc194 100644 --- a/tgui/packages/tgui/interfaces/NtosNetMonitor.jsx +++ b/tgui/packages/tgui/interfaces/NtosNetMonitor.jsx @@ -1,5 +1,14 @@ import { useBackend, useSharedState } from '../backend'; -import { Box, Button, LabeledList, NoticeBox, Icon, Section, Stack, Tabs } from '../components'; +import { + Box, + Button, + LabeledList, + NoticeBox, + Icon, + Section, + Stack, + Tabs, +} from '../components'; import { NtosWindow } from '../layouts'; export const NtosNetMonitor = (props) => { @@ -21,14 +30,16 @@ export const NtosNetMonitor = (props) => { icon="network-wired" lineHeight="23px" selected={tab_main === 1} - onClick={() => setTab_main(1)}> + onClick={() => setTab_main(1)} + > NtNet setTab_main(2)}> + onClick={() => setTab_main(2)} + > Tablets ({tablets.length}) @@ -120,7 +131,8 @@ const MainPage = (props) => { content="Clear Logs" onClick={() => act('purgelogs')} /> - }> + } + > {ntnetlogs.map((log) => ( {log.entry} diff --git a/tgui/packages/tgui/interfaces/NtosNifsoftCatalog.jsx b/tgui/packages/tgui/interfaces/NtosNifsoftCatalog.jsx index 8962c31c7430..67edcaf776e0 100644 --- a/tgui/packages/tgui/interfaces/NtosNifsoftCatalog.jsx +++ b/tgui/packages/tgui/interfaces/NtosNifsoftCatalog.jsx @@ -1,5 +1,15 @@ import { useBackend, useSharedState } from '../backend'; -import { BlockQuote, Box, Button, Collapsible, Flex, Icon, LabeledList, Section, Tabs } from '../components'; +import { + BlockQuote, + Box, + Button, + Collapsible, + Flex, + Icon, + LabeledList, + Section, + Tabs, +} from '../components'; import { NtosWindow } from '../layouts'; export const NtosNifsoftCatalog = (props) => { @@ -7,7 +17,7 @@ export const NtosNifsoftCatalog = (props) => { const { product_list = [], rewards_points, current_balance } = data; const [tab, setTab] = useSharedState( 'product_category', - product_list[0].name + product_list[0].name, ); const products = @@ -33,7 +43,8 @@ export const NtosNifsoftCatalog = (props) => { key={product_category.key} textAlign="center" onClick={() => setTab(product_category.name)} - selected={tab === product_category.name}> + selected={tab === product_category.name} + > {product_category.name} ))} @@ -61,7 +72,8 @@ const ProductCategory = (props) => { {' ' + product.name} } - fill={false}> + fill={false} + >
{product.desc}
@@ -76,7 +88,8 @@ const ProductCategory = (props) => { rewards_purchase: false, }) } - fluid> + fluid + > Purchase for {product.price}cr diff --git a/tgui/packages/tgui/interfaces/NtosNotepad.tsx b/tgui/packages/tgui/interfaces/NtosNotepad.tsx index cff8f06752e4..349c9cd8844c 100644 --- a/tgui/packages/tgui/interfaces/NtosNotepad.tsx +++ b/tgui/packages/tgui/interfaces/NtosNotepad.tsx @@ -74,7 +74,7 @@ const NtosNotepadMenuBar = (props: MenuBarProps) => { const [openOnHover, setOpenOnHover] = useLocalState('openOnHover', false); const [openMenuBar, setOpenMenuBar] = useLocalState( 'openMenuBar', - null + null, ); const onMenuItemClick = (value) => { setOpenOnHover(false); @@ -134,7 +134,8 @@ const NtosNotepadMenuBar = (props: MenuBarProps) => { entry="file" openWidth="22rem" display={} - {...itemProps}> + {...itemProps} + > @@ -144,7 +145,8 @@ const NtosNotepadMenuBar = (props: MenuBarProps) => { entry="edit" openWidth="22rem" display={} - {...itemProps}> + {...itemProps} + > @@ -154,7 +156,8 @@ const NtosNotepadMenuBar = (props: MenuBarProps) => { entry="format" openWidth="15rem" display={} - {...itemProps}> + {...itemProps} + > { entry="view" openWidth="15rem" display={} - {...itemProps}> + {...itemProps} + > { entry="help" openWidth="17rem" display={} - {...itemProps}> + {...itemProps} + > @@ -270,7 +275,7 @@ class NotePadTextArea extends Component { const textarea = this.innerRef?.current; if (!textarea) { logger.error( - 'NotePadTextArea.render(): Textarea RefObject should not be null' + 'NotePadTextArea.render(): Textarea RefObject should not be null', ); return; } @@ -278,7 +283,7 @@ class NotePadTextArea extends Component { // Javascript – execute when textarea caret is moved // https://stackoverflow.com/a/53999418/5613731 TEXTAREA_UPDATE_TRIGGERS.forEach((trigger) => - textarea.addEventListener(trigger, this) + textarea.addEventListener(trigger, this), ); // Slight hack: Keep selection when textarea loses focus so menubar actions can be used (i.e. cut, delete) textarea.onblur = this.onblur.bind(this); @@ -288,12 +293,12 @@ class NotePadTextArea extends Component { const textarea = this.innerRef?.current; if (!textarea) { logger.error( - 'NotePadTextArea.componentWillUnmount(): Textarea RefObject should not be null' + 'NotePadTextArea.componentWillUnmount(): Textarea RefObject should not be null', ); return; } TEXTAREA_UPDATE_TRIGGERS.forEach((trigger) => - textarea.removeEventListener(trigger, this) + textarea.removeEventListener(trigger, this), ); } @@ -320,7 +325,7 @@ type AboutDialogProps = { const AboutDialog = (props: AboutDialogProps) => { const { close, clientName } = props; - const paragraphStyle = { 'padding': '.5rem 1rem 0 2rem' }; + const paragraphStyle = { padding: '.5rem 1rem 0 2rem' }; return (
@@ -334,19 +339,20 @@ const AboutDialog = (props: AboutDialogProps) => { © NT Corporation. All rights reserved. - + The NtOS operating system and its user interface are protected by trademark and other pending or existing intellectual property rights in the Sol system and other regions. + }} + > This product is licensed under the NT Corporation Terms to: - {clientName} + {clientName}
@@ -366,11 +372,11 @@ export const NtosNotepad = (props) => { const { note } = data; const [documentName, setDocumentName] = useLocalState( 'documentName', - DEFAULT_DOCUMENT_NAME + DEFAULT_DOCUMENT_NAME, ); const [originalText, setOriginalText] = useLocalState( 'originalText', - note + note, ); console.log(note); const [text, setText] = useLocalState('text', note); @@ -380,15 +386,15 @@ export const NtosNotepad = (props) => { }); const [activeDialog, setActiveDialog] = useLocalState( 'activeDialog', - Dialogs.NONE + Dialogs.NONE, ); const [retryAction, setRetryAction] = useLocalState( 'activeAction', - null + null, ); const [showStatusBar, setShowStatusBar] = useLocalState( 'showStatusBar', - true + true, ); const [wordWrap, setWordWrap] = useLocalState('wordWrap', true); const handleCloseDialog = () => setActiveDialog(Dialogs.NONE); @@ -410,7 +416,7 @@ export const NtosNotepad = (props) => { }; const ensureUnsavedChangesAreHandled = ( action: () => void, - retrying = false + retrying = false, ): boolean => { // This is a guard function that throws up the "unsaved changes" dialog if the user is // attempting to do something that will make them lose data @@ -452,7 +458,8 @@ export const NtosNotepad = (props) => { + height={900} + > { + position="top" + > { + position="top" + > { + color={log.adjusted_money < 1 ? 'red' : 'green'} + > {log.adjusted_money > 1 ? '+' : ''} {log.adjusted_money} diff --git a/tgui/packages/tgui/interfaces/NtosPortraitPrinter.jsx b/tgui/packages/tgui/interfaces/NtosPortraitPrinter.jsx index fa67d9218044..3f0d2c9e6798 100644 --- a/tgui/packages/tgui/interfaces/NtosPortraitPrinter.jsx +++ b/tgui/packages/tgui/interfaces/NtosPortraitPrinter.jsx @@ -48,7 +48,8 @@ export const NtosPortraitPrinter = (props) => { height="100%" align="center" justify="center" - direction="column"> + direction="column" + > {got_paintings ? ( <> diff --git a/tgui/packages/tgui/interfaces/NtosRadar.tsx b/tgui/packages/tgui/interfaces/NtosRadar.tsx index ab16bf633304..16fa343b2dab 100644 --- a/tgui/packages/tgui/interfaces/NtosRadar.tsx +++ b/tgui/packages/tgui/interfaces/NtosRadar.tsx @@ -47,12 +47,13 @@ export const NtosRadarContent = (props) => { 'url("' + resolveAsset('ntosradarbackground.png') + '")', 'background-position': 'center', 'background-repeat': 'no-repeat', - 'top': '20px', + top: '20px', }} position="relative" m={1.5} width={45} - height={45}> + height={45} + > @@ -91,7 +92,8 @@ const ObjectDisplay = (props) => { act('selecttarget', { ref: object.ref, }); - }}> + }} + > {object.name}
))} @@ -116,7 +118,8 @@ const TargetDisplay = (props) => { left={1.35} width={42} fontSize="30px" - textAlign="center"> + textAlign="center" + > Signal Lost ); @@ -129,7 +132,7 @@ const TargetDisplay = (props) => { top="20px" left="243px" style={{ - 'transform': `rotate(${target.rot}deg)`, + transform: `rotate(${target.rot}deg)`, }} /> ) : ( diff --git a/tgui/packages/tgui/interfaces/NtosRecords.jsx b/tgui/packages/tgui/interfaces/NtosRecords.jsx index 06060e33b290..c190b443d058 100644 --- a/tgui/packages/tgui/interfaces/NtosRecords.jsx +++ b/tgui/packages/tgui/interfaces/NtosRecords.jsx @@ -43,10 +43,11 @@ export const NtosRecords = (props) => { ' ' + record.age + ' ' + - record.fingerprint + record.fingerprint, ) ) - }> + } + > {record.name} @@ -80,10 +81,11 @@ export const NtosRecords = (props) => { ' ' + record.mental_status + ' ' + - record.physical_status + record.physical_status, ) ) - }> + } + > {record.name} diff --git a/tgui/packages/tgui/interfaces/NtosRoboControl.jsx b/tgui/packages/tgui/interfaces/NtosRoboControl.jsx index 0ddaa852da91..29b3fadcce6b 100644 --- a/tgui/packages/tgui/interfaces/NtosRoboControl.jsx +++ b/tgui/packages/tgui/interfaces/NtosRoboControl.jsx @@ -1,5 +1,14 @@ import { useBackend, useSharedState } from '../backend'; -import { Box, Button, Dropdown, LabeledList, ProgressBar, Section, Stack, Tabs } from '../components'; +import { + Box, + Button, + Dropdown, + LabeledList, + ProgressBar, + Section, + Stack, + Tabs, +} from '../components'; import { NtosWindow } from '../layouts'; const getMuleByRef = (mules, ref) => { @@ -27,14 +36,16 @@ export const NtosRoboControl = (props) => { icon="robot" lineHeight="23px" selected={tab_main === 1} - onClick={() => setTab_main(1)}> + onClick={() => setTab_main(1)} + > Bots setTab_main(2)}> + onClick={() => setTab_main(2)} + > Drones @@ -131,7 +142,8 @@ export const RobotInfo = (props) => { /> ) - }> + } + > @@ -290,7 +302,8 @@ export const DroneInfo = (props) => { title={drone.name} style={{ border: `4px solid ${color}`, - }}> + }} + > diff --git a/tgui/packages/tgui/interfaces/NtosRobotact.jsx b/tgui/packages/tgui/interfaces/NtosRobotact.jsx index 2da096bb9557..50d142b56d4d 100644 --- a/tgui/packages/tgui/interfaces/NtosRobotact.jsx +++ b/tgui/packages/tgui/interfaces/NtosRobotact.jsx @@ -1,5 +1,15 @@ import { useBackend, useSharedState } from '../backend'; -import { AnimatedNumber, Box, Button, Flex, LabeledList, ProgressBar, Section, Slider, Tabs } from '../components'; +import { + AnimatedNumber, + Box, + Button, + Flex, + LabeledList, + ProgressBar, + Section, + Slider, + Tabs, +} from '../components'; import { NtosWindow } from '../layouts'; export const NtosRobotact = (props) => { @@ -49,14 +59,16 @@ export const NtosRobotactContent = (props) => { icon="list" lineHeight="23px" selected={tab_main === 1} - onClick={() => setTab_main(1)}> + onClick={() => setTab_main(1)} + > Status setTab_main(2)}> + onClick={() => setTab_main(2)} + > Logs @@ -91,7 +103,8 @@ export const NtosRobotactContent = (props) => { good: [0.5, Infinity], average: [0.1, 0.5], bad: [-Infinity, 0.1], - }}> + }} + >
Chassis Integrity: @@ -129,21 +142,24 @@ export const NtosRobotactContent = (props) => { icon="" lineHeight="23px" selected={tab_sub === 1} - onClick={() => setTab_sub(1)}> + onClick={() => setTab_sub(1)} + > Actions setTab_sub(2)}> + onClick={() => setTab_sub(2)} + > Upgrades setTab_sub(3)}> + onClick={() => setTab_sub(3)} + > Diagnostics @@ -165,7 +181,8 @@ export const NtosRobotactContent = (props) => { /> + label={'Stored Photos (' + printerPictures + ')'} + > diff --git a/tgui/packages/tgui/interfaces/NtosSupermatter.tsx b/tgui/packages/tgui/interfaces/NtosSupermatter.tsx index 975534d57e39..00e6556f78dd 100644 --- a/tgui/packages/tgui/interfaces/NtosSupermatter.tsx +++ b/tgui/packages/tgui/interfaces/NtosSupermatter.tsx @@ -32,7 +32,8 @@ export const NtosSupermatter = (props) => { content="Refresh" onClick={() => act('PRG_refresh')} /> - }> + } + > {sm_data.map((sm) => ( @@ -54,7 +55,7 @@ export const NtosSupermatter = (props) => {
Ore diff --git a/tgui/packages/tgui/interfaces/OreRedemptionMachine.jsx b/tgui/packages/tgui/interfaces/OreRedemptionMachine.jsx index 85f514db79b2..7d619af890c0 100644 --- a/tgui/packages/tgui/interfaces/OreRedemptionMachine.jsx +++ b/tgui/packages/tgui/interfaces/OreRedemptionMachine.jsx @@ -1,6 +1,17 @@ import { createSearch, toTitleCase } from 'common/string'; import { useBackend, useLocalState, useSharedState } from '../backend'; -import { BlockQuote, Box, Button, Table, Tabs, Input, Stack, Icon, Section, LabeledList } from '../components'; +import { + BlockQuote, + Box, + Button, + Table, + Tabs, + Input, + Stack, + Icon, + Section, + LabeledList, +} from '../components'; import { Window } from '../layouts'; import { formatSiUnit } from '../format'; @@ -89,7 +100,8 @@ export const OreRedemptionMachine = (props) => { if (searchItem.length > 0) { setSearchItem(''); } - }}> + }} + > Materials { if (searchItem.length > 0) { setSearchItem(''); } - }}> + }} + > Alloys { const [compact, setCompact] = useLocalState('compact', false); const display = material_icons.find( - (mat_icon) => mat_icon.id === material.id + (mat_icon) => mat_icon.id === material.id, ); const sheet_amounts = Math.floor(material.amount); diff --git a/tgui/packages/tgui/interfaces/OrionGame.jsx b/tgui/packages/tgui/interfaces/OrionGame.jsx index b5315ed9c6f8..8ab7e4c8d904 100644 --- a/tgui/packages/tgui/interfaces/OrionGame.jsx +++ b/tgui/packages/tgui/interfaces/OrionGame.jsx @@ -28,8 +28,8 @@ const variousButtonIcons = { 'Restore Hull': 'wrench', 'Fix Engine': 'rocket', 'Repair Electronics': 'server', - 'Wait': 'clock', - 'Continue': 'arrow-right', + Wait: 'clock', + Continue: 'arrow-right', 'Explore Ship': 'door-open', 'Leave the Derelict': 'arrow-right', 'Welcome aboard.': 'user-plus', @@ -41,7 +41,7 @@ const variousButtonIcons = { 'Speed Past': 'tachometer-alt', 'Go Around': 'redo', 'Oh...': 'circle', - 'Dock': 'dollar-sign', + Dock: 'dollar-sign', }; const STATUS2COMPONENT = [ @@ -129,7 +129,8 @@ const AdventureStatus = (props) => { onClick={() => act('random_kill')} /> ) - }> + } + > {settlers?.map((settler) => ( @@ -258,7 +259,8 @@ const ORION_STATUS_INSTRUCTIONS = (props) => { content="Back to Main Menu" onClick={() => act('back_to_menu')} /> - }> + } + > In the 2200's, the Orion trail was established as a dangerous yet opportunistic trail through space for those willing to risk it. Many @@ -485,7 +487,8 @@ const ORION_STATUS_MARKET = (props) => { onClick={() => act('leave_spaceport')} /> - }> + } + > diff --git a/tgui/packages/tgui/interfaces/OutfitEditor.jsx b/tgui/packages/tgui/interfaces/OutfitEditor.jsx index b4373e591e21..d32c5420fd46 100644 --- a/tgui/packages/tgui/interfaces/OutfitEditor.jsx +++ b/tgui/packages/tgui/interfaces/OutfitEditor.jsx @@ -27,10 +27,11 @@ export const OutfitEditor = (props) => { + }} + > @@ -158,11 +161,12 @@ const OutfitSlot = (props) => { + title={currItem?.path} + > {currItem?.name || 'Empty'} diff --git a/tgui/packages/tgui/interfaces/OutfitManager.jsx b/tgui/packages/tgui/interfaces/OutfitManager.jsx index 138ff6378edb..116cfac86dfa 100644 --- a/tgui/packages/tgui/interfaces/OutfitManager.jsx +++ b/tgui/packages/tgui/interfaces/OutfitManager.jsx @@ -33,7 +33,8 @@ export const OutfitManager = (props) => { onClick={() => act('new')} /> - }> + } + > {outfits?.map((outfit) => ( @@ -42,14 +43,15 @@ export const OutfitManager = (props) => { grow={1} shrink={1} style={{ - 'overflow': 'hidden', + overflow: 'hidden', 'white-space': 'nowrap', 'text-overflow': 'ellipsis', - }}> + }} + > @@ -94,7 +103,8 @@ const CandidateDisplay = (props: { candidate: Candidate; index: number }) => { } overflow="hidden" - title={`Candidate ${index}`}> + title={`Candidate ${index}`} + > @@ -163,7 +173,8 @@ const PaiOptions = (props) => { @@ -171,7 +182,8 @@ const PaiOptions = (props) => { @@ -179,7 +191,8 @@ const PaiOptions = (props) => { @@ -202,7 +215,8 @@ const PaiOptions = (props) => { color="bad" icon="bug" mt={1} - onClick={() => act('reset_software')}> + onClick={() => act('reset_software')} + > Malicious Software Detected )} diff --git a/tgui/packages/tgui/interfaces/PaiInterface/Available.tsx b/tgui/packages/tgui/interfaces/PaiInterface/Available.tsx index 62aa90a65c59..7f9f976e0964 100644 --- a/tgui/packages/tgui/interfaces/PaiInterface/Available.tsx +++ b/tgui/packages/tgui/interfaces/PaiInterface/Available.tsx @@ -1,5 +1,13 @@ import { useBackend } from 'tgui/backend'; -import { Box, Button, Icon, ProgressBar, Section, Table, Tooltip } from 'tgui/components'; +import { + Box, + Button, + Icon, + ProgressBar, + Section, + Table, + Tooltip, +} from 'tgui/components'; import { SOFTWARE_DESC } from './constants'; import { PaiData } from './types'; @@ -12,7 +20,8 @@ export const AvailableDisplay = () => { buttons={} fill scrollable - title="Available Software"> + title="Available Software" + > ); @@ -99,7 +108,8 @@ const ListItem = (props) => { disabled={ram < cost || purchased} onClick={() => act('buy', { selection: name })} tooltip={SOFTWARE_DESC[name]} - tooltipPosition="bottom-start"> + tooltipPosition="bottom-start" + > diff --git a/tgui/packages/tgui/interfaces/PaiInterface/Installed.tsx b/tgui/packages/tgui/interfaces/PaiInterface/Installed.tsx index d18a87ab9be9..2a2ac7b2b19b 100644 --- a/tgui/packages/tgui/interfaces/PaiInterface/Installed.tsx +++ b/tgui/packages/tgui/interfaces/PaiInterface/Installed.tsx @@ -80,7 +80,8 @@ const SoftwareButtons = (props) => { disabled={door_jack} icon="plug" onClick={() => act(currentSelection, { mode: DOOR_JACK.Cable })} - tooltip="Drops a cable. Insert into a compatible airlock."> + tooltip="Drops a cable. Insert into a compatible airlock." + > Extend Cable @@ -105,14 +108,16 @@ const SoftwareButtons = (props) => { @@ -123,19 +128,22 @@ const SoftwareButtons = (props) => { @@ -145,7 +153,8 @@ const SoftwareButtons = (props) => { ); @@ -154,7 +163,8 @@ const SoftwareButtons = (props) => { ); diff --git a/tgui/packages/tgui/interfaces/PaiInterface/System.tsx b/tgui/packages/tgui/interfaces/PaiInterface/System.tsx index ce5db1726ac2..adad34996b0f 100644 --- a/tgui/packages/tgui/interfaces/PaiInterface/System.tsx +++ b/tgui/packages/tgui/interfaces/PaiInterface/System.tsx @@ -74,19 +74,22 @@ const SystemInfo = (props) => { disabled={!master_dna} icon="dna" onClick={() => act('check dna')} - tooltip="Verifies your master's DNA. Must be carried in hand."> + tooltip="Verifies your master's DNA. Must be carried in hand." + > Verify } fill - title="System Info"> + title="System Info" + > {master_name || 'None.'} diff --git a/tgui/packages/tgui/interfaces/PaiInterface/constants.ts b/tgui/packages/tgui/interfaces/PaiInterface/constants.ts index f8ca45cda874..9e81ec91b1f3 100644 --- a/tgui/packages/tgui/interfaces/PaiInterface/constants.ts +++ b/tgui/packages/tgui/interfaces/PaiInterface/constants.ts @@ -24,17 +24,17 @@ export enum HOST_SCAN { } export const ICON_MAP = { - 'angry': 'angry', - 'cat': 'cat', + angry: 'angry', + cat: 'cat', 'extremely-happy': 'grin-beam', - 'face': 'grin-alt', - 'happy': 'smile', - 'laugh': 'grin-tears', - 'null': 'meh', - 'off': 'meh-blank', - 'sad': 'sad-cry', - 'sunglasses': 'sun', - 'what': 'frown-open', + face: 'grin-alt', + happy: 'smile', + laugh: 'grin-tears', + null: 'meh', + off: 'meh-blank', + sad: 'sad-cry', + sunglasses: 'sun', + what: 'frown-open', } as const; export enum PHOTO_MODE { @@ -60,7 +60,7 @@ export const SOFTWARE_DESC = { 'Medical HUD': `Allows you to view medical status using an overlay HUD.`, 'Music Synthesizer': `Synthesizes instruments, plays sounds and imported songs.`, - 'Newscaster': `A tool that allows you to broadcast news to other crew + Newscaster: `A tool that allows you to broadcast news to other crew members.`, 'Photography Module': `A portable camera module. Engage, then click to shoot. Includes a printer and lenses.`, diff --git a/tgui/packages/tgui/interfaces/PaiInterface/index.tsx b/tgui/packages/tgui/interfaces/PaiInterface/index.tsx index 3cdbc127e39d..a2a2bba368a8 100644 --- a/tgui/packages/tgui/interfaces/PaiInterface/index.tsx +++ b/tgui/packages/tgui/interfaces/PaiInterface/index.tsx @@ -41,25 +41,29 @@ const TabDisplay = (props) => { setTab(PAI_TAB.System)} - selected={tab === PAI_TAB.System}> + selected={tab === PAI_TAB.System} + > System setTab(PAI_TAB.Directive)} - selected={tab === PAI_TAB.Directive}> + selected={tab === PAI_TAB.Directive} + > Directives setTab(PAI_TAB.Installed)} - selected={tab === PAI_TAB.Installed}> + selected={tab === PAI_TAB.Installed} + > Installed setTab(PAI_TAB.Available)} - selected={tab === PAI_TAB.Available}> + selected={tab === PAI_TAB.Available} + > Download diff --git a/tgui/packages/tgui/interfaces/PaiSubmit.tsx b/tgui/packages/tgui/interfaces/PaiSubmit.tsx index 3528cb52ae83..ca72f584b83f 100644 --- a/tgui/packages/tgui/interfaces/PaiSubmit.tsx +++ b/tgui/packages/tgui/interfaces/PaiSubmit.tsx @@ -119,14 +119,16 @@ const ButtonsDisplay = (props) => { @@ -138,7 +140,8 @@ const ButtonsDisplay = (props) => { description, name, }) - }> + } + > SUBMIT diff --git a/tgui/packages/tgui/interfaces/PaintingAdminPanel.tsx b/tgui/packages/tgui/interfaces/PaintingAdminPanel.tsx index 712f71d2c809..c2bac827bc3d 100644 --- a/tgui/packages/tgui/interfaces/PaintingAdminPanel.tsx +++ b/tgui/packages/tgui/interfaces/PaintingAdminPanel.tsx @@ -40,7 +40,8 @@ export const PaintingAdminPanel = (props) => { title="Painting Information" buttons={ - }> + } + > { onClick={() => { setChosenPaintingRef(null); act('delete', { ref: chosenPainting.ref }); - }}> + }} + > Delete diff --git a/tgui/packages/tgui/interfaces/PaintingMachine.jsx b/tgui/packages/tgui/interfaces/PaintingMachine.jsx index 9c9b3ddbcb67..67ab4c0066a0 100644 --- a/tgui/packages/tgui/interfaces/PaintingMachine.jsx +++ b/tgui/packages/tgui/interfaces/PaintingMachine.jsx @@ -9,12 +9,12 @@ export const PaintingMachine = (props) => { const [selectedPDA] = useSharedState( 'pdaSelection', - pdaTypes[Object.keys(pdaTypes)[0]] + pdaTypes[Object.keys(pdaTypes)[0]], ); const [selectedTrim] = useSharedState( 'trimSelection', - cardTrims[Object.keys(cardTrims)[0]] + cardTrims[Object.keys(cardTrims)[0]], ); return ( @@ -33,7 +33,8 @@ export const PaintingMachine = (props) => { }) } /> - }> + } + > { tooltipPosition="left" /> - }> + } + > { const [selectedOption, setSelectedOption] = useSharedState( stateKey, - options[Object.keys(options)[0]] + options[Object.keys(options)[0]], ); return ( diff --git a/tgui/packages/tgui/interfaces/Pandemic/Beaker.tsx b/tgui/packages/tgui/interfaces/Pandemic/Beaker.tsx index 802967bd2cdd..583f98d28f95 100644 --- a/tgui/packages/tgui/interfaces/Pandemic/Beaker.tsx +++ b/tgui/packages/tgui/interfaces/Pandemic/Beaker.tsx @@ -1,6 +1,13 @@ import { capitalizeFirst } from 'common/string'; import { useBackend } from 'tgui/backend'; -import { Button, LabeledList, NoticeBox, ProgressBar, Section, Stack } from 'tgui/components'; +import { + Button, + LabeledList, + NoticeBox, + ProgressBar, + Section, + Stack, +} from 'tgui/components'; import { Data } from './types'; /** Displays loaded container info, if it exists */ @@ -53,7 +60,8 @@ export const BeakerDisplay = (props) => { onClick={() => act('eject_beaker')} /> - }> + } + > {content} ); @@ -88,9 +96,9 @@ const Info = (props) => { minValue={0} maxValue={beaker.capacity} ranges={{ - 'good': [beaker.capacity * 0.85, beaker.capacity], - 'average': [beaker.capacity * 0.25, beaker.capacity * 0.85], - 'bad': [0, beaker.capacity * 0.25], + good: [beaker.capacity * 0.85, beaker.capacity], + average: [beaker.capacity * 0.25, beaker.capacity * 0.85], + bad: [0, beaker.capacity * 0.25], }} /> @@ -114,21 +122,22 @@ const Antibodies = (props) => { {!resistances.length ? 'None' : resistances.map((resistance) => { - return ( - - ); - })} + return ( + + ); + })} ); diff --git a/tgui/packages/tgui/interfaces/Pandemic/Specimen.tsx b/tgui/packages/tgui/interfaces/Pandemic/Specimen.tsx index 267672f445a4..e65bcd9ac761 100644 --- a/tgui/packages/tgui/interfaces/Pandemic/Specimen.tsx +++ b/tgui/packages/tgui/interfaces/Pandemic/Specimen.tsx @@ -44,7 +44,8 @@ const Buttons = (props) => { setTab(index)} - key={index}> + key={index} + > {virus.name} ); diff --git a/tgui/packages/tgui/interfaces/Pandemic/Symptom.tsx b/tgui/packages/tgui/interfaces/Pandemic/Symptom.tsx index 60d7c3db3ba3..6aa148b2ad89 100644 --- a/tgui/packages/tgui/interfaces/Pandemic/Symptom.tsx +++ b/tgui/packages/tgui/interfaces/Pandemic/Symptom.tsx @@ -1,4 +1,11 @@ -import { Collapsible, LabeledList, NoticeBox, Section, Stack, Tooltip } from 'tgui/components'; +import { + Collapsible, + LabeledList, + NoticeBox, + Section, + Stack, + Tooltip, +} from 'tgui/components'; import { getColor } from './helpers'; import { Threshold } from './types'; diff --git a/tgui/packages/tgui/interfaces/Pandemic/Virus.tsx b/tgui/packages/tgui/interfaces/Pandemic/Virus.tsx index d21da7892dff..016297432c37 100644 --- a/tgui/packages/tgui/interfaces/Pandemic/Virus.tsx +++ b/tgui/packages/tgui/interfaces/Pandemic/Virus.tsx @@ -1,6 +1,13 @@ import { capitalizeFirst, decodeHtmlEntities } from 'common/string'; import { useBackend } from 'tgui/backend'; -import { Box, Input, LabeledList, Section, Stack, Tooltip } from 'tgui/components'; +import { + Box, + Input, + LabeledList, + Section, + Stack, + Tooltip, +} from 'tgui/components'; import { getColor } from './helpers'; import { Data } from './types'; @@ -94,7 +101,8 @@ const Traits = (props) => { + label="Transmissibility" + > {transmission} diff --git a/tgui/packages/tgui/interfaces/PaperSheet.tsx b/tgui/packages/tgui/interfaces/PaperSheet.tsx index edcb55757016..c3a4719c596c 100644 --- a/tgui/packages/tgui/interfaces/PaperSheet.tsx +++ b/tgui/packages/tgui/interfaces/PaperSheet.tsx @@ -198,7 +198,7 @@ class PaperSheetStamper extends Component { const radians = Math.atan2( currentWidth + stampWidth / 2 - e.pageX, - currentHeight + stampHeight - e.pageY + currentHeight + stampHeight - e.pageY, ); const rotate = rotating @@ -248,10 +248,10 @@ class PaperSheetStamper extends Component { export const Stamp = (props): Inferno.HTMLAttributes => { const { activeStamp, sprite, x, y, rotation, opacity, yOffset = 0 } = props; const stamp_transform = { - 'left': x + 'px', - 'top': y + yOffset + 'px', - 'transform': 'rotate(' + rotation + 'deg)', - 'opacity': opacity || 1.0, + left: x + 'px', + top: y + yOffset + 'px', + transform: 'rotate(' + rotation + 'deg)', + opacity: opacity || 1.0, 'z-index': activeStamp ? Z_INDEX_STAMP_PREVIEW : Z_INDEX_STAMP, }; @@ -311,7 +311,7 @@ export class PrimaryView extends Component { const [inputFieldData, setInputFieldData] = useLocalState( 'inputFieldData', - {} + {}, ); const [textAreaText, setTextAreaText] = useLocalState('textAreaText', ''); @@ -356,7 +356,8 @@ export class PrimaryView extends Component { + color={tooManyCharacters ? 'bad' : 'default'} + > {`${usedCharacters} / ${max_length}`} - }> + } + >